Por todo esto, aunque sea perfectamente factible implementarla, me da mucho miedo hacerlo, por el "mal uso" y las "malas prácticas" en que puede desembocar una macro así. A ver si Ramones, protector de la compatibilidad y defensor del estándar, puede darnos alguna orientación.
Un saludo,
Puede que me equivoque, pero juraría que el uso de los puertos 98 y 99 directamente solo queda claro a partir del 2+. Ni siquiera el MSX2 lo confirma, aunque podría equivocarme.
En efecto, estoy contigo que esa macro no tiene sentido para MSX1. Y que para programas MSX-DOS sería un caos leer con interslot el registro. Una solución (que es la que yo utilizo) es leer en unas variables propias esos registros y dejarlas preparadas. Variables tipo vdpreg98_read, vdpreg98_write, vdpreg99_read, vdpreg99_write.
Pero claro, que utilices esto en tus macros, creo que sería MAS caos todavía. Tendrías que explicar que otra pseudo instruccion lee esos puertos y deposita el valor en unas variables en unas posiciones fijas (no se, las primeras de la memoria que defina el usuario).
Y para fastidiar más la cosa, ¿qué tiempo dejas entre out y out? Porque en MSX2 y superior es una cosa, pero en MSX1 es otra... todo un caos.
Si la añades, tal como te la pide 007 dejaría bien claro en el manual qué es, en qué se convierte al preprocesarla y qué efectos podría tener en MSX1 o con la compatibilidad.