!!!Block-Fill and Block-Move {{{ 00010 ------------------------------ 00020 * Block-Fill-Routine * 00030 * * 00040 * Registerinhalte: * 00050 * <A> Fill-Byte * 00060 * <X> Anzahl der Pages * 00070 * <Y> Start Page * 00080 * * 00090 ------------------------------ 00100 * 00110 FILL STY $1 Pointer und 00120 LDY #0 Index Setzen 00130 STY $0 00133 * 00140 .1 STA ($0),Y Byte setzen 00150 INY Index hochzaehlen 00160 BNE .1 wiederholen bis Ueberschlag 00170 INC $1 Pointer MSB hochzaehlen 00180 DEX Noch Pages 00190 BNE .1 Uebrig? Ja ==> 00200 RTS 00210 ------------------------------ 00220 * 00230 * 00240 * 00250 ------------------------------ 00260 * Block-Move-Routine * 00270 * * 00280 * Registerinhalte: * 00290 * * 00300 * <A> Source Page * 00310 * <X> Anzahl der Pages * 00320 * <Y> Destination Page * 00330 * * 00340 ------------------------------ 00350 * 00360 MOVE STA $1 Pointer 00370 STY $FF setzen 00380 LDY #0 Index 00390 STY $0 loeschen 00400 STY $FF 00410 * 00420 .1 LDA ($0),Y Move 00430 STA ($FE),Y 00440 INY Index hochzaehlen 00450 BNE .1 wiederholen bis Ueberschlag 00460 INC $1 Pointer MSB 00470 INC $FF hochzaehlen 00480 DEX Anzahl runterzaehlen 00490 BNE .1 Wiederholen 00500 RTS }}} !Block Move for Atari-BASIC {{{ 00010 .LI OFF 00020 * 00030 **************** 00040 * * 00050 * MOVE-Routine * 00060 * * 00070 **************** 00080 * 00090 * 00100 * 00110 SCL .EQ $CD 00120 DESTL .EQ $CF 00130 BYTES .EQ $D1 00140 * 00150 * 00160 * 00170 * 00180 * 00190 * 00200 START PLA Parameterzahl holen 00210 * 00220 PLA Start- 00230 STA SCL+1 addresse 00240 PLA holen 00250 STA SCL 00260 * 00270 PLA Ziel- 00280 STA DESTL+1 addresse 00290 PLA holen 00300 STA DESTL 00310 * 00320 PLA Auch die 00330 STA BYTES+1 Laenge 00340 PLA wird 00350 STA BYTES gebraucht 00360 ------------------------------ 00370 MOVE LDY #0 00380 MOVEB LDA (SCL),Y Byte 00390 STA (DESTL),Y verschieben 00400 * 00410 INC SCL Start- 00420 BNE .1 pointer 00430 INC SCL+1 hochzaehlen 00440 * 00450 .1 INC DESTL Das gleiche 00460 BNE .2 mit Ziel- 00470 INC DESTL+1 Pointer 00480 * 00490 .2 LDA BYTES Laenge 00500 BNE .3 abzaeh- 00510 DEC BYTES+1 len 00520 .3 DEC BYTES 00530 * 00540 LDA BYTES Ende 00550 ORA BYTES+1 erreicht 00560 BNE MOVEB Nein 00570 RTS zurueck }}}