Atari CIO Routines#
00010 .LI OFF 00020 * 00030 * 00040 IOCOM = $342 00050 IOBUFF = $344 00060 IOLEN = $348 00070 IOAUX1 = $34A 00080 IOAUX2 = $34B 00090 * 00100 CIO = $E456 00110 * 00120 * 00130 CLOSEF = 12 00140 OPENF = 3 00150 GETB = 7 00160 PUTB = 11 00170 FORMATF = 254 00180 * 00190 * 00200 * 00210 ------------------------------ 00220 * Routinen zum Schliessen, 00230 * Oeffnen, Lesen von Bytes, 00240 * Schreiben von Bytes und 00250 * Formattieren von Datenfiles 00260 * bzw Disketten 00270 ------------------------------ 00280 * 00290 * 00300 * 00310 ------------------------------ 00320 * CLOSE: 00330 * Datenkanalnummer *16 im 00340 * <X> Register. 00350 * 00360 ------------------------------ 00370 * 00380 CLOSE LDA #CLOSEF 00390 STA $342,X 00400 JSR CIO 00410 BPL .1 00420 JMP ERROR 00430 .1 RTS 00440 * 00450 ------------------------------ 00460 * 00470 * OPEN: 00480 * <X> Register: Datenkanal*16+ 00490 * OPENspezifikation 00500 * 4: Lesen 00510 * 6: Directory 00520 * 8: Schreiben 00530 * 9: Append 00540 * 12: Update 00550 * 00560 * <A> Register: LO-Byte des 00570 * Filenamepointers 00580 * 00590 * <Y> Register: HI-Byte des 00600 * Filenamepointers 00610 * 00620 ------------------------------ 00630 * 00640 OPEN PHA 00650 TXA 00660 PHA 00670 AND #$70 00680 TAX 00690 PLA 00700 AND #$F 00710 STA IOAUX1,X 00720 LDA #0 00730 STA IOAUX2,X 00740 PLA 00750 STA IOBUFF,X 00760 TYA 00770 STA IOBUFF+1,X 00780 LDA #OPENF 00790 STA IOCOM,X 00800 JSR CIO 00810 BPL .1 00820 JMP ERROR 00830 .1 RTS 00840 * 00850 ------------------------------ 00860 * 00870 * GETBYTES: 00880 * <A> Register: Page des Buffers 00890 * <X> Register: Datenkanal*16 00900 * <Y> Register: Laenge der Bytes 00910 ------------------------------ 00920 * 00930 GETBYTES STA IOBUFF+1,X 00940 LDA #GETB 00950 STA IOCOM,X 00960 TYA 00970 STA IOLEN,X 00980 LDA #0 00990 STA IOBUFF,X 01000 STA IOLEN+1,X 01010 JMP CIO 01020 BPL .1 01030 JMP ERROR 01040 .1 RTS 01050 * 01060 ------------------------------ 01070 * 01080 * PUTBYTES: 01090 * <A> Register: Page des Buffers 01100 * <X> Register: Datenkanal*16 01110 * <Y> Register: Laenge der Bytes 01120 ------------------------------ 01130 * 01140 PUTBYTES STA IOBUFF+1,X 01150 LDA #PUTB 01160 STA IOCOM,X 01170 TYA 01180 STA IOLEN,X 01190 LDA #0 01200 STA IOBUFF,X 01210 STA IOLEN+1,X 01220 JMP CIO 01230 BPL .1 01240 JMP ERROR 01250 .1 RTS 01260 * 01270 ------------------------------ 01280 * 01290 * FORMAT: 01300 * <A> Register: LO-Byte der De- 01310 * viceaddresse 01320 * <Y> Register: HI-Byte der De- 01330 * viceaddresse 01340 * <X> Register: Datenkanal*16 01350 * 01360 ------------------------------ 01370 * 01380 FORMAT STA IOBUFF,X 01390 TYA 01400 STA IOBUFF+1,X 01410 LDA #FORMATF 01420 STA IOCOM,X 01430 JSR CIO 01440 BPL .1 01450 JMP ERROR 01460 .1 RTS 01470 * 01480 ------------------------------ 01490 * 01500 ERROR TYA 01510 RTS 01520 * 01530 * Hier sollte eine eigene Feh- 01540 * lerroutine stehen. 01550 * <Y> Register haelt Fehler- 01560 * nummer.