Con este código generamos una impresión con bucle, en que consta, que toma los valores de byte según el label y las envié a un bucle que toma estos valores y los imprime, terminando cuando encuentra el caracter *
Código: Seleccionar todo
1000 ;SAVE#D:PRUEBA.MAC
1010 ;ASM,#P:,#D:PRUEBA.XEX
1020 MANDO = $BB
1030 GUARDOY = $AE
1040 *= $02E0
1050 .WORD INICIO
1060 *= $6000
1070 INICIO
1080 LDA #'} ;ESC CONTROL <
1090 JSR $F2B0
1100 LDA #0
1110 STA 84
1120 LDA #0
1130 STA 85
1140 LDA # <HEADER
1150 STA MANDO
1160 LDA # >HEADER
1170 STA MANDO+1
1180 JSR IMPRIMO
1190 LDA #2
1200 STA 84
1210 LDA #0
1220 STA 85
1230 LDA # <OTRA
1240 STA MANDO
1250 LDA # >OTRA
1260 STA MANDO+1
1270 JSR IMPRIMO
1280 JMP TERMINO
1290 IMPRIMO
1300 LDY #0
1310 LOOPIMPRIMO
1320 LDA (MANDO),Y
1330 CMP #'*
1340 BEQ FINIMPRIMO
1350 STY GUARDOY
1360 JSR $F2B0
1370 LDY GUARDOY
1380 INY
1390 JMP LOOPIMPRIMO
1400 FINIMPRIMO
1410 RTS
1420 TERMINO
1430 LDA # <FINAL
1440 STA MANDO
1450 LDA # >FINAL
1460 STA MANDO+1
1470 JSR IMPRIMO
1480 RTS
1490 HEADER
1500 .BYTE " PRIMERA LINEA *"
1510 OTRA
1520 .BYTE "SEGUNDA LINEA*"
1530 FINAL
1540 .BYTE $9B,$9B,"TERMINE LA APLICACION",$9B,$9B,$9B,"*"
desde la 1100 a 1180 se encuentra la preparación de la primera linea,
1100 - 1110 indicamos que el cursor se posicione en la fila 0
1120 - 1130 indicamos que el cursor se posicione en la columna 0
1140 - 1170 cargamos los caracteres de HEADER en el acumulador
1180 enviamos los datos del acumulador almacenado en MANDO a IMPRIMO, como un gosub en basic
1300 limpio el acumulador Y
1310 - 1390 recibo y provoco el bucle para la impresión en general, en la linea 1330 comparo que el carácter sea * para terminar la ejecución, si esta coincide con LDA (MANDO), indico con BEQ que me direccione a FINIMPRIMO
1410 retrocedo a el ultimo envió, (GOSUB generado en 1180)
1190-1270 nuevamente repito operación para imprimir otra linea y envió datos a imprimir donde después me volverá acá mismo
1280 salto a TERMINO
1420 - 1470 genero ultimo mensaje a imprimir con la diferencia que esta ves no uso posicionamiento solo salto de lineas en la variable
1530 FINAL
1540 .BYTE $9B,$9B,"TERMINE LA APLICACION",$9B,$9B,$9B,"*"
donde los saltos de linea son provocados con $9B.
1480 RTS , culmino el programa y me saca a dos o ready
1490 -1540 almacenaje de las variables a imprimir en bytes.