mirror of
https://github.com/nathanriggs/AppleIIAsm-Collection.git
synced 2024-06-08 01:29:28 +00:00
added disk 5, file input and output, rwts routines
This will be the last addition to the library before going through major revisions and then a major demo of libraries so far.
This commit is contained in:
parent
8d0c21e0c7
commit
d1e8429d80
33
README.md
33
README.md
|
@ -18,6 +18,7 @@ MATH DISK
|
|||
|
||||
IO DISK
|
||||
* fileio.lib: File Input/Output Library.
|
||||
* in the future, serial routines will also reside here.
|
||||
|
||||
ARRAYS DISK
|
||||
* arrays81.lib: library for managing 1-dimensional 8-bit arrays.
|
||||
|
@ -27,26 +28,26 @@ ARRAYS DISK
|
|||
STRINGS DISK
|
||||
* strings.lib: Library for managing strings.
|
||||
|
||||
LORES DISK
|
||||
* lores.lib: Library for fast(er) graphics in low resolution mode.
|
||||
~~LORES DISK~~
|
||||
* ~~lores.lib: Library for fast(er) graphics in low resolution mode.~~
|
||||
|
||||
HIRES DISK
|
||||
* hires.lib: Library for fast(er) graphics in high resolution mode.
|
||||
~~HIRES DISK~~
|
||||
* ~~hires.lib: Library for fast(er) graphics in high resolution mode.~~
|
||||
|
||||
HIRES DISK 2
|
||||
* hireschar.lib: High Resolution mode text character library.
|
||||
* hiresshapes.lib: Routines for creating lines, circles, etc.
|
||||
~~HIRES DISK 2~~
|
||||
* ~~hireschar.lib: High Resolution mode text character library.~~
|
||||
* ~~hiresshapes.lib: Routines for creating lines, circles, etc.~~
|
||||
|
||||
MISC DISK
|
||||
* sound.lib: Music and sound effects library.
|
||||
* applesoft.lib: Library for interfacing ASM programs with Applesoft BASIC.
|
||||
~~MISC DISK~~
|
||||
* ~~sound.lib: Music and sound effects library.~~
|
||||
* ~~applesoft.lib: Library for interfacing ASM programs with Applesoft BASIC.~~
|
||||
|
||||
UTIL DISK
|
||||
* various useful utilities
|
||||
~~UTIL DISK~~
|
||||
* ~~various useful utilities~~
|
||||
|
||||
FPMATH DISK 1 (and maybe a second one)
|
||||
* fpmath.lib: Floating-point math library
|
||||
~~FPMATH DISK 1 (and maybe a second one)~~
|
||||
* ~~fpmath.lib: Floating-point math library~~
|
||||
|
||||
80COL DISK
|
||||
* stdio library and some routines for double lores and double hires
|
||||
~~80COL DISK~~
|
||||
* ~~stdio library and some routines for double lores and double hires~~
|
||||
|
||||
|
|
16
README.md~
16
README.md~
|
@ -18,19 +18,20 @@ MATH DISK
|
|||
|
||||
IO DISK
|
||||
* fileio.lib: File Input/Output Library.
|
||||
* 80colstdio.lib: stdio library for 80-column display.
|
||||
|
||||
DATA DISK
|
||||
* strings.lib: Library for managing strings.
|
||||
* arrays.lib: library for managing arrays.
|
||||
ARRAYS DISK
|
||||
* arrays81.lib: library for managing 1-dimensional 8-bit arrays.
|
||||
* arrays82.lib: library for managing 2-dimensional 8-bit arrays.
|
||||
* 16-bit array libraries will also be on this disk in the future
|
||||
|
||||
STRINGS DISK
|
||||
* strings.lib: Library for managing strings.
|
||||
|
||||
LORES DISK
|
||||
* lores.lib: Library for fast(er) graphics in low resolution mode.
|
||||
* dublores.lib: Library for double-low-resolution graphics.
|
||||
|
||||
HIRES DISK
|
||||
* hires.lib: Library for fast(er) graphics in high resolution mode.
|
||||
* dubhires.lib: Library for handling graphics in double-high-resolution mode.
|
||||
|
||||
HIRES DISK 2
|
||||
* hireschar.lib: High Resolution mode text character library.
|
||||
|
@ -46,3 +47,6 @@ UTIL DISK
|
|||
FPMATH DISK 1 (and maybe a second one)
|
||||
* fpmath.lib: Floating-point math library
|
||||
|
||||
80COL DISK
|
||||
* stdio library and some routines for double lores and double hires
|
||||
|
||||
|
|
BIN
bin/d1_stdio-common .dsk
Normal file
BIN
bin/d1_stdio-common .dsk
Normal file
Binary file not shown.
BIN
bin/d2_math.dsk
Normal file
BIN
bin/d2_math.dsk
Normal file
Binary file not shown.
BIN
bin/d3_arrays.dsk
Normal file
BIN
bin/d3_arrays.dsk
Normal file
Binary file not shown.
BIN
bin/d4_strings.dsk
Normal file
BIN
bin/d4_strings.dsk
Normal file
Binary file not shown.
BIN
bin/d5_fileio.dsk
Normal file
BIN
bin/d5_fileio.dsk
Normal file
Binary file not shown.
393
disks/disk5_fileio/FILEIO.DEMO
Normal file
393
disks/disk5_fileio/FILEIO.DEMO
Normal file
|
@ -0,0 +1,393 @@
|
|||
6000- A9 00 LDA #$00
|
||||
6002- 8D 00 03 STA $0300
|
||||
6005- A9 01 LDA #$01
|
||||
6007- 8D 01 03 STA $0301
|
||||
600A- A9 02 LDA #$02
|
||||
600C- 8D 02 03 STA $0302
|
||||
600F- A9 03 LDA #$03
|
||||
6011- 8D 03 03 STA $0303
|
||||
6014- A9 61 LDA #$61
|
||||
6016- 48 PHA
|
||||
6017- A9 62 LDA #$62
|
||||
6019- 48 PHA
|
||||
601A- 20 92 61 JSR $6192
|
||||
601D- A9 00 LDA #$00
|
||||
601F- 8D 00 03 STA $0300
|
||||
6022- 8D 01 03 STA $0301
|
||||
6025- 8D 02 03 STA $0302
|
||||
6028- 8D 03 03 STA $0303
|
||||
602B- A9 61 LDA #$61
|
||||
602D- 48 PHA
|
||||
602E- A9 73 LDA #$73
|
||||
6030- 48 PHA
|
||||
6031- 20 E9 61 JSR $61E9
|
||||
6034- 20 4C 62 JSR $624C
|
||||
6037- C3 ???
|
||||
6038- C1 D4 CMP ($D4,X)
|
||||
603A- C1 CC CMP ($CC,X)
|
||||
603C- CF ???
|
||||
603D- C7 ???
|
||||
603E- 8D 00 20 STA $2000
|
||||
6041- 40 RTI
|
||||
6042- 62 ???
|
||||
6043- 20 4C 62 JSR $624C
|
||||
6046- CF ???
|
||||
6047- D0 C5 BNE $600E
|
||||
6049- CE A0 D4 DEC $D4A0
|
||||
604C- C5 D8 CMP $D8
|
||||
604E- D4 ???
|
||||
604F- B1 8D LDA ($8D),Y
|
||||
6051- 00 BRK
|
||||
6052- 20 4C 62 JSR $624C
|
||||
6055- D7 ???
|
||||
6056- D2 C9 CMP ($C9)
|
||||
6058- D4 ???
|
||||
6059- C5 A0 CMP $A0
|
||||
605B- D4 ???
|
||||
605C- C5 D8 CMP $D8
|
||||
605E- D4 ???
|
||||
605F- B1 8D LDA ($8D),Y
|
||||
6061- 00 BRK
|
||||
6062- 20 77 62 JSR $6277
|
||||
6065- D4 ???
|
||||
6066- C8 INY
|
||||
6067- C9 D3 CMP #$D3
|
||||
6069- A0 C9 LDY #$C9
|
||||
606B- D3 ???
|
||||
606C- A0 C1 LDY #$C1
|
||||
606E- A0 D4 LDY #$D4
|
||||
6070- C5 D3 CMP $D3
|
||||
6072- D4 ???
|
||||
6073- AE 8D 00 LDX $008D
|
||||
6076- 20 4C 62 JSR $624C
|
||||
6079- C3 ???
|
||||
607A- CC CF D3 CPY $D3CF
|
||||
607D- C5 A0 CMP $A0
|
||||
607F- D4 ???
|
||||
6080- C5 D8 CMP $D8
|
||||
6082- D4 ???
|
||||
6083- B1 8D LDA ($8D),Y
|
||||
6085- 00 BRK
|
||||
6086- 20 4C 62 JSR $624C
|
||||
6089- CF ???
|
||||
608A- D0 C5 BNE $6051
|
||||
608C- CE A0 D4 DEC $D4A0
|
||||
608F- C5 D8 CMP $D8
|
||||
6091- D4 ???
|
||||
6092- B1 8D LDA ($8D),Y
|
||||
6094- 00 BRK
|
||||
6095- 20 4C 62 JSR $624C
|
||||
6098- D2 C5 CMP ($C5)
|
||||
609A- C1 C4 CMP ($C4,X)
|
||||
609C- A0 D4 LDY #$D4
|
||||
609E- C5 D8 CMP $D8
|
||||
60A0- D4 ???
|
||||
60A1- B1 8D LDA ($8D),Y
|
||||
60A3- 00 BRK
|
||||
60A4- A9 03 LDA #$03
|
||||
60A6- 48 PHA
|
||||
60A7- A9 00 LDA #$00
|
||||
60A9- 48 PHA
|
||||
60AA- 20 98 62 JSR $6298
|
||||
60AD- 20 4C 62 JSR $624C
|
||||
60B0- C3 ???
|
||||
60B1- CC CF D3 CPY $D3CF
|
||||
60B4- C5 A0 CMP $A0
|
||||
60B6- D4 ???
|
||||
60B7- C5 D8 CMP $D8
|
||||
60B9- D4 ???
|
||||
60BA- B1 8D LDA ($8D),Y
|
||||
60BC- 00 BRK
|
||||
60BD- 20 4C 62 JSR $624C
|
||||
60C0- CF ???
|
||||
60C1- D0 C5 BNE $6088
|
||||
60C3- CE A0 D4 DEC $D4A0
|
||||
60C6- AE D4 C5 LDX $C5D4
|
||||
60C9- D3 ???
|
||||
60CA- D4 ???
|
||||
60CB- 8D 00 20 STA $2000
|
||||
60CE- 4C 62 D7 JMP $D762
|
||||
60D1- D2 C9 CMP ($C9)
|
||||
60D3- D4 ???
|
||||
60D4- C5 A0 CMP $A0
|
||||
60D6- D4 ???
|
||||
60D7- AE D4 C5 LDX $C5D4
|
||||
60DA- D3 ???
|
||||
60DB- D4 ???
|
||||
60DC- 8D 00 A9 STA $A900
|
||||
60DF- 61 48 ADC ($48,X)
|
||||
60E1- A9 7E LDA #$7E
|
||||
60E3- 48 PHA
|
||||
60E4- 20 CA 62 JSR $62CA
|
||||
60E7- 20 4C 62 JSR $624C
|
||||
60EA- C3 ???
|
||||
60EB- CC CF D3 CPY $D3CF
|
||||
60EE- C5 A0 CMP $A0
|
||||
60F0- D4 ???
|
||||
60F1- AE D4 C5 LDX $C5D4
|
||||
60F4- D3 ???
|
||||
60F5- D4 ???
|
||||
60F6- 8D 00 20 STA $2000
|
||||
60F9- 4C 62 CF JMP $CF62
|
||||
60FC- D0 C5 BNE $60C3
|
||||
60FE- CE A0 D4 DEC $D4A0
|
||||
6101- AE D4 C5 LDX $C5D4
|
||||
6104- D3 ???
|
||||
6105- D4 ???
|
||||
6106- 8D 00 20 STA $2000
|
||||
6109- 4C 62 D2 JMP $D262
|
||||
610C- C5 C1 CMP $C1
|
||||
610E- C4 A0 CPY $A0
|
||||
6110- D4 ???
|
||||
6111- AE D4 C5 LDX $C5D4
|
||||
6114- D3 ???
|
||||
6115- D4 ???
|
||||
6116- 8D 00 20 STA $2000
|
||||
6119- 0C FD 20 TSB $20FD
|
||||
611C- 4C 62 C3 JMP $C362
|
||||
611F- CC CF D3 CPY $D3CF
|
||||
6122- C5 A0 CMP $A0
|
||||
6124- D4 ???
|
||||
6125- AE D4 C5 LDX $C5D4
|
||||
6128- D3 ???
|
||||
6129- D4 ???
|
||||
612A- 8D 00 A9 STA $A900
|
||||
612D- 06 85 ASL $85
|
||||
612F- 19 06 19 ORA $1906,Y
|
||||
6132- 06 19 ASL $19
|
||||
6134- 06 19 ASL $19
|
||||
6136- 06 19 ASL $19
|
||||
6138- A5 19 LDA $19
|
||||
613A- 8D E9 B7 STA $B7E9
|
||||
613D- A9 02 LDA #$02
|
||||
613F- 8D EA B7 STA $B7EA
|
||||
6142- A9 01 LDA #$01
|
||||
6144- 8D F4 B7 STA $B7F4
|
||||
6147- A9 00 LDA #$00
|
||||
6149- 8D F0 B7 STA $B7F0
|
||||
614C- A9 10 LDA #$10
|
||||
614E- 8D F1 B7 STA $B7F1
|
||||
6151- A9 02 LDA #$02
|
||||
6153- 8D EC B7 STA $B7EC
|
||||
6156- A9 02 LDA #$02
|
||||
6158- 8D ED B7 STA $B7ED
|
||||
615B- 20 F0 62 JSR $62F0
|
||||
615E- 00 BRK
|
||||
615F- 4C D0 03 JMP $03D0
|
||||
6162- 10 D4 BPL $6138
|
||||
6164- C5 D3 CMP $D3
|
||||
6166- D4 ???
|
||||
6167- AC C1 A4 LDY $A4C1
|
||||
616A- B3 ???
|
||||
616B- B0 B0 BCS $611D
|
||||
616D- AC CC A4 LDY $A4CC
|
||||
6170- B1 B0 LDA ($B0),Y
|
||||
6172- B0 0A BCS $617E
|
||||
6174- D4 ???
|
||||
6175- C5 D3 CMP $D3
|
||||
6177- D4 ???
|
||||
6178- AC C1 A4 LDY $A4C1
|
||||
617B- B3 ???
|
||||
617C- B0 B0 BCS $612E
|
||||
617E- 13 ???
|
||||
617F- C3 ???
|
||||
6180- CF ???
|
||||
6181- CD CD D5 CMP $D5CD
|
||||
6184- CE C9 D3 DEC $D3C9
|
||||
6187- CD A0 D7 CMP $D7A0
|
||||
618A- C9 CC CMP #$CC
|
||||
618C- CC A0 D7 CPY $D7A0
|
||||
618F- C9 CE CMP #$CE
|
||||
6191- A1 68 LDA ($68,X)
|
||||
6193- 85 FE STA $FE
|
||||
6195- 68 PLA
|
||||
6196- 85 FF STA $FF
|
||||
6198- 68 PLA
|
||||
6199- 85 08 STA $08
|
||||
619B- 68 PLA
|
||||
619C- 85 09 STA $09
|
||||
619E- A9 8D LDA #$8D
|
||||
61A0- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61A3- A9 84 LDA #$84
|
||||
61A5- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61A8- A9 C2 LDA #$C2
|
||||
61AA- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61AD- A9 D3 LDA #$D3
|
||||
61AF- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61B2- A9 C1 LDA #$C1
|
||||
61B4- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61B7- A9 D6 LDA #$D6
|
||||
61B9- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61BC- A9 C5 LDA #$C5
|
||||
61BE- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61C1- A9 A0 LDA #$A0
|
||||
61C3- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61C6- A0 00 LDY #$00
|
||||
61C8- B1 08 LDA ($08),Y
|
||||
61CA- 8D E8 61 STA $61E8
|
||||
61CD- A0 01 LDY #$01
|
||||
61CF- B1 08 LDA ($08),Y
|
||||
61D1- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61D4- C8 INY
|
||||
61D5- CC E8 61 CPY $61E8
|
||||
61D8- 90 F5 BCC $61CF
|
||||
61DA- F0 F3 BEQ $61CF
|
||||
61DC- A9 8D LDA #$8D
|
||||
61DE- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61E1- A5 FF LDA $FF
|
||||
61E3- 48 PHA
|
||||
61E4- A5 FE LDA $FE
|
||||
61E6- 48 PHA
|
||||
61E7- 60 RTS
|
||||
61E8- 00 BRK
|
||||
61E9- 68 PLA
|
||||
61EA- 85 FE STA $FE
|
||||
61EC- 68 PLA
|
||||
61ED- 85 FF STA $FF
|
||||
61EF- 68 PLA
|
||||
61F0- 85 08 STA $08
|
||||
61F2- 68 PLA
|
||||
61F3- 85 09 STA $09
|
||||
61F5- A9 8D LDA #$8D
|
||||
61F7- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61FA- A9 84 LDA #$84
|
||||
61FC- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
61FF- A9 C2 LDA #$C2
|
||||
6201- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6204- A9 CC LDA #$CC
|
||||
6206- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6209- A9 CF LDA #$CF
|
||||
620B- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
620E- A9 C1 LDA #$C1
|
||||
6210- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6213- A9 C4 LDA #$C4
|
||||
6215- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6218- A9 A0 LDA #$A0
|
||||
621A- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
621D- A0 00 LDY #$00
|
||||
621F- B1 08 LDA ($08),Y
|
||||
6221- 8D 3F 62 STA $623F
|
||||
6224- A0 01 LDY #$01
|
||||
6226- B1 08 LDA ($08),Y
|
||||
6228- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
622B- C8 INY
|
||||
622C- CC 3F 62 CPY $623F
|
||||
622F- 90 F5 BCC $6226
|
||||
6231- F0 F3 BEQ $6226
|
||||
6233- A9 8D LDA #$8D
|
||||
6235- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6238- A5 FF LDA $FF
|
||||
623A- 48 PHA
|
||||
623B- A5 FE LDA $FE
|
||||
623D- 48 PHA
|
||||
623E- 60 RTS
|
||||
623F- 00 BRK
|
||||
6240- A9 40 LDA #$40
|
||||
6242- 8D B6 AA STA $AAB6
|
||||
6245- 85 76 STA $76
|
||||
6247- A9 06 LDA #$06
|
||||
6249- 85 33 STA $33
|
||||
624B- 60 RTS
|
||||
624C- 68 PLA
|
||||
624D- 85 FE STA $FE
|
||||
624F- 68 PLA
|
||||
6250- 85 FF STA $FF
|
||||
6252- A9 8D LDA #$8D
|
||||
6254- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6257- A9 84 LDA #$84
|
||||
6259- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
625C- A0 01 LDY #$01
|
||||
625E- B1 FE LDA ($FE),Y
|
||||
6260- F0 06 BEQ $6268
|
||||
6262- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6265- C8 INY
|
||||
6266- D0 F6 BNE $625E
|
||||
6268- 18 CLC
|
||||
6269- 98 TYA
|
||||
626A- 65 FE ADC $FE
|
||||
626C- 85 FE STA $FE
|
||||
626E- A5 FF LDA $FF
|
||||
6270- 69 00 ADC #$00
|
||||
6272- 48 PHA
|
||||
6273- A5 FE LDA $FE
|
||||
6275- 48 PHA
|
||||
6276- 60 RTS
|
||||
6277- 68 PLA
|
||||
6278- 85 FE STA $FE
|
||||
627A- 68 PLA
|
||||
627B- 85 FF STA $FF
|
||||
627D- A0 01 LDY #$01
|
||||
627F- B1 FE LDA ($FE),Y
|
||||
6281- F0 06 BEQ $6289
|
||||
6283- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
6286- C8 INY
|
||||
6287- D0 F6 BNE $627F
|
||||
6289- 18 CLC
|
||||
628A- 98 TYA
|
||||
628B- 65 FE ADC $FE
|
||||
628D- 85 FE STA $FE
|
||||
628F- A5 FF LDA $FF
|
||||
6291- 69 00 ADC #$00
|
||||
6293- 48 PHA
|
||||
6294- A5 FE LDA $FE
|
||||
6296- 48 PHA
|
||||
6297- 60 RTS
|
||||
6298- 68 PLA
|
||||
6299- 85 FE STA $FE
|
||||
629B- 68 PLA
|
||||
629C- 85 FF STA $FF
|
||||
629E- 68 PLA
|
||||
629F- 85 06 STA $06
|
||||
62A1- 68 PLA
|
||||
62A2- 85 07 STA $07
|
||||
62A4- A2 00 LDX #$00
|
||||
62A6- 20 6F FD JSR $FD6F F8ROM:GETLN1
|
||||
62A9- 8E C9 62 STX $62C9
|
||||
62AC- E0 00 CPX #$00
|
||||
62AE- F0 12 BEQ $62C2
|
||||
62B0- A0 00 LDY #$00
|
||||
62B2- AD C9 62 LDA $62C9
|
||||
62B5- 91 06 STA ($06),Y
|
||||
62B7- B9 00 02 LDA $0200,Y
|
||||
62BA- C8 INY
|
||||
62BB- 91 06 STA ($06),Y
|
||||
62BD- CC C9 62 CPY $62C9
|
||||
62C0- D0 F5 BNE $62B7
|
||||
62C2- A5 FF LDA $FF
|
||||
62C4- 48 PHA
|
||||
62C5- A5 FE LDA $FE
|
||||
62C7- 48 PHA
|
||||
62C8- 60 RTS
|
||||
62C9- 00 BRK
|
||||
62CA- 68 PLA
|
||||
62CB- 85 FE STA $FE
|
||||
62CD- 68 PLA
|
||||
62CE- 85 FF STA $FF
|
||||
62D0- 68 PLA
|
||||
62D1- 85 06 STA $06
|
||||
62D3- 68 PLA
|
||||
62D4- 85 07 STA $07
|
||||
62D6- A0 00 LDY #$00
|
||||
62D8- B1 06 LDA ($06),Y
|
||||
62DA- 8D EF 62 STA $62EF
|
||||
62DD- C8 INY
|
||||
62DE- B1 06 LDA ($06),Y
|
||||
62E0- 20 ED FD JSR $FDED F8ROM:COUT
|
||||
62E3- CC EF 62 CPY $62EF
|
||||
62E6- D0 F5 BNE $62DD
|
||||
62E8- A5 FF LDA $FF
|
||||
62EA- 48 PHA
|
||||
62EB- A5 FE LDA $FE
|
||||
62ED- 48 PHA
|
||||
62EE- 60 RTS
|
||||
62EF- 00 BRK
|
||||
62F0- A9 00 LDA #$00
|
||||
62F2- 8D EB B7 STA $B7EB
|
||||
62F5- A9 B7 LDA #$B7
|
||||
62F7- A0 E8 LDY #$E8
|
||||
62F9- 20 D9 03 JSR $03D9
|
||||
62FC- 90 07 BCC $6305
|
||||
62FE- AD F5 B7 LDA $B7F5
|
||||
6301- A2 00 LDX #$00
|
||||
6303- 86 48 STX $48
|
||||
6305- 60 RTS
|
2708
disks/disk5_fileio/FILEIO.DEMO.S
Normal file
2708
disks/disk5_fileio/FILEIO.DEMO.S
Normal file
File diff suppressed because it is too large
Load Diff
46
disks/disk5_fileio/T.DECS
Normal file
46
disks/disk5_fileio/T.DECS
Normal file
|
@ -0,0 +1,46 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* DECLARATIONS.PUT *
|
||||
*- -*
|
||||
* USED IN CONJUNCTION WITH *
|
||||
* OTHER PUT FILES. DEFINES *
|
||||
* BASIC DECLARATIONS USED *
|
||||
* ACROSS DIFFERENT ROUTINES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
** ADDRESS STORAGE LOCATIONS FOR
|
||||
** INDIRECT ADDRESSING.
|
||||
*
|
||||
ADDR1 EQU $06
|
||||
ADDR2 EQU $08
|
||||
ADDR3 EQU $EB
|
||||
ADDR4 EQU $ED
|
||||
*
|
||||
** SCRATCHPAD ZERO PAGE LOCATIONS AND
|
||||
** DEDICATED ZERO PAGE ADDRESS TO HOLD
|
||||
** A RETURN ADDRESS PASSED VIA THE STACK
|
||||
*
|
||||
SCRATCH EQU $19
|
||||
SCRATCH2 EQU $1E
|
||||
RETADR EQU $FE
|
||||
*
|
||||
** ZERO PAGE ADDRESSES DEDICATED TO PASSING
|
||||
** BACK RESULTS WHEN THERE ARE MORE THAN
|
||||
** THREE BYTES BEING PASSED (AXY) AND THE
|
||||
** USE OF THE STACK IS IMPRACTICAL OR TOO SLOW
|
||||
*
|
||||
RESULT EQU $FA
|
||||
RESULT2 EQU $FC
|
||||
*
|
||||
** VARIOUS HOOKS USED BY ALL ROUTINES
|
||||
*
|
||||
REENTRY EQU $3D0
|
||||
*
|
||||
** ERROR HANDLING MEMORY LOCATIONS
|
||||
*
|
||||
** THIS DESIGNATES A 16-BYTE BLOCK OF MEMORY
|
||||
** THAT HOLDS DATA RELATED TO IDENTIFYING
|
||||
** RUNTIME VALUES FOR DEBUGGING.
|
||||
*
|
||||
ERRLOC EQU $0C00
|
||||
*
|
110
disks/disk5_fileio/T.FILEIO.BLOAD
Normal file
110
disks/disk5_fileio/T.FILEIO.BLOAD
Normal file
|
@ -0,0 +1,110 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* BLOAD :: BINARY LOAD *
|
||||
*- -*
|
||||
* SIMPLY BLOADS INTO MEMORY AS *
|
||||
* SPECIFIED BY THE STRING *
|
||||
* PASSED AS A PARAMETER. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* LDA #>SADDR ; STRING ADDR *
|
||||
* PHA *
|
||||
* LDA #<SADDR *
|
||||
* PHA *
|
||||
* JSR BLOAD *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* LO BYTE OF STRING ADDRESS *
|
||||
* HI BYTE OF STRING ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = UNCHANGED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED; TRSAH *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*
|
||||
BLOAD
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR2 ; CMD STRING ADDR
|
||||
PLA
|
||||
STA ADDR2+1
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
LDA #$84 ; CTRL-D
|
||||
JSR FCOUT
|
||||
LDA #$C2 ; B
|
||||
JSR FCOUT
|
||||
LDA #$CC ; L
|
||||
JSR FCOUT
|
||||
LDA #$CF ; O
|
||||
JSR FCOUT
|
||||
LDA #$C1 ; A
|
||||
JSR FCOUT
|
||||
LDA #$C4 ; D
|
||||
JSR FCOUT
|
||||
LDA #$A0 ; [SPACE]
|
||||
JSR FCOUT
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #0
|
||||
LDA (ADDR2),Y
|
||||
STA :SLEN
|
||||
LDY #1
|
||||
:LP
|
||||
LDA (ADDR2),Y
|
||||
JSR FCOUT
|
||||
INY
|
||||
CPY :SLEN
|
||||
BCC :LP
|
||||
BEQ :LP
|
||||
*
|
||||
** NOW PRESS RETURN AND PRAY
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
111
disks/disk5_fileio/T.FILEIO.BSAVE
Normal file
111
disks/disk5_fileio/T.FILEIO.BSAVE
Normal file
|
@ -0,0 +1,111 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* BSAVE :: BINARY SAVE *
|
||||
*- -*
|
||||
* SIMPLY DOES A BINARY SAVE *
|
||||
* WITH THE COMMAND LINE PARAMS *
|
||||
* SPECIFIED IN THE STRING AT *
|
||||
* THE GIVEN ADDRESS. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* LDA #>SADDR ; STRING ADDR *
|
||||
* PHA *
|
||||
* LDA #<SADDR *
|
||||
* PHA *
|
||||
* JSR BSAVE *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* LO BYTE OF STRING ADDRESS *
|
||||
* HI BYTE OF STRING ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = UNCHANGED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED; TRASH *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*
|
||||
BSAVE
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR2 ; CMD STRING ADDR
|
||||
PLA
|
||||
STA ADDR2+1
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
LDA #$84 ; CTRL-D
|
||||
JSR FCOUT
|
||||
LDA #$C2 ; B
|
||||
JSR FCOUT
|
||||
LDA #$D3 ; S
|
||||
JSR FCOUT
|
||||
LDA #$C1 ; A
|
||||
JSR FCOUT
|
||||
LDA #$D6 ; V
|
||||
JSR FCOUT
|
||||
LDA #$C5 ; E
|
||||
JSR FCOUT
|
||||
LDA #$A0 ; [SPACE]
|
||||
JSR FCOUT
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #0
|
||||
LDA (ADDR2),Y
|
||||
STA :SLEN
|
||||
LDY #1
|
||||
:LP
|
||||
LDA (ADDR2),Y
|
||||
JSR FCOUT
|
||||
INY
|
||||
CPY :SLEN
|
||||
BCC :LP
|
||||
BEQ :LP
|
||||
*
|
||||
** NOW PRESS RETURN AND PRAY
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
78
disks/disk5_fileio/T.FILEIO.CMD
Normal file
78
disks/disk5_fileio/T.FILEIO.CMD
Normal file
|
@ -0,0 +1,78 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* CMD :: EXECUTE DOS COMMAND *
|
||||
*- -*
|
||||
* EXECUTES A DOS COMMAND THAT *
|
||||
* IS PASSED VIA AN ASC THAT *
|
||||
* FOLLOWS THE JSR TO THE *
|
||||
* ROUTINE. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* JSR CMD *
|
||||
* ASC "CATALOG" *
|
||||
* HEX 8D00 *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = UNCHANGED *
|
||||
* A = UNCHANGED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*
|
||||
CMD
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
LDA #$84 ; CTRL-D
|
||||
JSR FCOUT
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #$01 ; POINT TO NEXT INSTR
|
||||
:LP
|
||||
LDA (RETADR),Y
|
||||
BEQ :DONE
|
||||
JSR FCOUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE
|
||||
CLC ; RESTORE INSTR POINTER
|
||||
TYA
|
||||
ADC RETADR
|
||||
STA RETADR
|
||||
LDA RETADR+1
|
||||
ADC #$00
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
275
disks/disk5_fileio/T.FILEIO.DEMO
Normal file
275
disks/disk5_fileio/T.FILEIO.DEMO
Normal file
|
@ -0,0 +1,275 @@
|
|||
*
|
||||
********************************
|
||||
* *
|
||||
* -< FILEIO DEMO >- *
|
||||
* *
|
||||
* VERSION 00.00.01 *
|
||||
* *
|
||||
* 03/04/1980 *
|
||||
* *
|
||||
********************************
|
||||
* *
|
||||
* NATHAN D. RIGGS *
|
||||
* NATHAN.RIGGS@OUTLOOK.COM *
|
||||
* *
|
||||
********************************
|
||||
*
|
||||
** ASSEMBLER DIRECTIVES
|
||||
*
|
||||
CYC AVE
|
||||
EXP ONLY
|
||||
DSK FILEIO.DEMO
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* TOP INCLUDES (PUTS, MACROS) *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
PUT DECS
|
||||
USE FILEIO.MAC
|
||||
*
|
||||
PUT FILEIO.HOOKS
|
||||
*
|
||||
OBJ $BFE0
|
||||
ORG $6000
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* PROGRAM MAIN BODY *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*
|
||||
*
|
||||
** BIG LUMPS -- HIGH LEVEL CODE
|
||||
*
|
||||
*
|
||||
*
|
||||
*
|
||||
** PUT A FEW VALUES AT $300 TO PROVE
|
||||
** BSAVING AND BLOADING
|
||||
*
|
||||
LDA #0
|
||||
STA $300
|
||||
LDA #1
|
||||
STA $301
|
||||
LDA #2
|
||||
STA $302
|
||||
LDA #3
|
||||
STA $303
|
||||
*
|
||||
*
|
||||
** BSAVE DOES A DOS BINARY SAVE WITH THE
|
||||
** COMMAND LINE PARAMETERS STORED IN THE
|
||||
** STRING CONTAINED AT THE SPECIFIED ADDRESS.
|
||||
*
|
||||
** FOR INSTANCE, IF THE STRING CONTAINS:
|
||||
** TEST,A$300,L$100
|
||||
** SPCIFYING THE NAME OF THE FILE, THE ADDRESS
|
||||
** OFF THE MEMORY TO STORE, AND THE LENGTH
|
||||
** TO SAVE, THE BSAVE ROUTINE WILL EXECUTE
|
||||
** THE COMMAND: BSAVE TEST,A$300,L$100
|
||||
*
|
||||
** MACRO: _BSAV TESTSTR
|
||||
*
|
||||
LDA #>TESTSTR
|
||||
PHA
|
||||
LDA #<TESTSTR
|
||||
PHA
|
||||
JSR BSAVE
|
||||
*
|
||||
** NOW CLEAR THE 1,2,3 STORED IN $300 TO
|
||||
** SHOW THAT IT WAS LOADED AGAIN
|
||||
*
|
||||
LDA #0
|
||||
STA $300
|
||||
STA $301
|
||||
STA $302
|
||||
STA $303
|
||||
*
|
||||
** BLOAD SIMPLY BLOADS PREVIOUSLY BSAVED DATA
|
||||
** INTO THE SPECIFIED ADDRESS IN THE STRING
|
||||
*
|
||||
** MACRO: _BLOD TESTLD
|
||||
*
|
||||
LDA #>TESTLD
|
||||
PHA
|
||||
LDA #<TESTLD
|
||||
PHA
|
||||
JSR BLOAD
|
||||
*
|
||||
*
|
||||
** CMD SIMPLY RUNS A DOS COMMAND. THIS CAN BE USED
|
||||
** TO READ AND WRITE TEXT FILES, BUT THAT REQUIRES
|
||||
** AN EXTRA STEP (SEE BELOW). OTHERWISE, IT'S JUST
|
||||
** A MATTER OF CALLING THE SUBROUTINE, THEN HAVING
|
||||
** AN ASC THAT FOLLOWS WITH THE DOS COMMAND.
|
||||
*
|
||||
** MACRO: _CMD "CATALOG"
|
||||
*
|
||||
JSR CMD
|
||||
ASC "CATALOG"
|
||||
HEX 8D00
|
||||
*
|
||||
*
|
||||
** TO ACCESS TEXT FILES, WE HAVE TO GO INTO
|
||||
** INDIRECT MODE TO FOOL DOS INTO THINKING A
|
||||
** PROGRAM IS RUNNING. THE CAVEAT IS THAT WE
|
||||
** MUST JUMP TO 3D0 (REENTRY) TO TERMINTE THE
|
||||
** PROGRAM INSTEAD OF USING RTS. THIS IS THE
|
||||
** SAME ISSUE WHEN USING COUT, HOWEVER, SO IT
|
||||
** IS PRETTY STANDARD.
|
||||
*
|
||||
** MACRO: _TMOD
|
||||
*
|
||||
JSR TMODE ; ENTER TEXT OPERATION MODE
|
||||
*
|
||||
*
|
||||
** NOW LET'S WRITE A TEXT FILE USING A MIX
|
||||
** OF CMD AND THE FPRINT COMMAND
|
||||
*
|
||||
** MACRO: _FPRN "THIS IS A TEST."
|
||||
*
|
||||
JSR CMD
|
||||
ASC "OPEN TEXT1"
|
||||
HEX 8D00
|
||||
JSR CMD
|
||||
ASC "WRITE TEXT1"
|
||||
HEX 8D00
|
||||
JSR FPRINT
|
||||
ASC "THIS IS A TEST."
|
||||
HEX 8D00
|
||||
JSR CMD
|
||||
ASC "CLOSE TEXT1"
|
||||
HEX 8D00
|
||||
*
|
||||
*
|
||||
** NOW LET'S READ THAT FILE WITH FINPUT, WHICH
|
||||
** SIMPLY USES THE MONITOR INPUT ROUTINE AND THEN
|
||||
** COPIES THE BUFFER TO THE SPECIFIED LOCATION.
|
||||
** YOU CAN ALSO USE FGET, WHICH STORES A SINGLE
|
||||
** CHARACTER FROM THE FILE INTO THE ACCUMULATOR.
|
||||
*
|
||||
** MACRO: _FINP $300
|
||||
*
|
||||
JSR CMD
|
||||
ASC "OPEN TEXT1"
|
||||
HEX 8D00
|
||||
JSR CMD
|
||||
ASC "READ TEXT1"
|
||||
HEX 8D00
|
||||
LDA #>$300 ; PUT READ STRING HERE
|
||||
PHA
|
||||
LDA #<$300
|
||||
PHA
|
||||
JSR FINPUT
|
||||
JSR CMD
|
||||
ASC "CLOSE TEXT1"
|
||||
HEX 8D00
|
||||
*
|
||||
*
|
||||
** FPSTR WRITES A STRING TO A TEXT FILE
|
||||
** THAT RESIDES IN A SPECIFIC ADDRESS.
|
||||
*
|
||||
** MACRO: _FPRN TSTR
|
||||
*
|
||||
JSR CMD
|
||||
ASC "OPEN T.TEST"
|
||||
HEX 8D00
|
||||
JSR CMD
|
||||
ASC "WRITE T.TEST"
|
||||
HEX 8D00
|
||||
LDA #>TSTR
|
||||
PHA
|
||||
LDA #<TSTR
|
||||
PHA
|
||||
JSR FPSTR
|
||||
JSR CMD
|
||||
ASC "CLOSE T.TEST"
|
||||
HEX 8D00
|
||||
*
|
||||
** _FGET SIMPLY GETS A SINGLE CHARACTER FROM
|
||||
** THE GIVEN FILE AND STORES IT IN THE
|
||||
** ACCUMULATOR.
|
||||
*
|
||||
_CMD "OPEN T.TEST"
|
||||
_CMD "READ T.TEST"
|
||||
_FGET
|
||||
_CMD "CLOSE T.TEST"
|
||||
*
|
||||
*
|
||||
********************************
|
||||
********************************
|
||||
********************************
|
||||
********************************
|
||||
* *
|
||||
* D A N G E R D A N G E R *
|
||||
* *
|
||||
********************************
|
||||
********************************
|
||||
********************************
|
||||
********************************
|
||||
*
|
||||
** THE FOLLOWING CODE DOES LOW
|
||||
** LEVEL DISK ACCESS, WHICH COULD
|
||||
** SERIOUSLY CORRUPT YOUR DISK.
|
||||
*
|
||||
** MAKE SURE YOU USE THESE ROUTINES
|
||||
** ONLY WHEN YOU HAVE BACKUPS AND
|
||||
** KNOW WHAT YOU'RE DOING!
|
||||
*
|
||||
*
|
||||
** _SLOT SETS THE SLOT FOR RWTS
|
||||
** LOW-LEVEL DISK OPERATIONS.
|
||||
** THERE IS NO ACTUAL ROUTINE FOR
|
||||
** THIS IN THE LIBRARY; IT ONLY EXISTS
|
||||
** AS A MACRO.
|
||||
*
|
||||
_SLOT #6
|
||||
*
|
||||
** THE REST OF THE COMMANDS UP UNTIL
|
||||
** _RWTS FOLLOW A SIMILAR PATTERN, AND ALL
|
||||
** CHANGE THE IOB TABLE.
|
||||
*
|
||||
*
|
||||
_DRIV #2 ; CHANGE DRIVE
|
||||
*
|
||||
_COMM #1 ; SET FOR READ
|
||||
*
|
||||
_DBUF $1000 ; DISK BUFFER AREA
|
||||
*
|
||||
_TRAK #2 ; SET TRACK
|
||||
_SECT #2 ; SET SECTOR
|
||||
*
|
||||
_RWTS
|
||||
BRK
|
||||
*
|
||||
** THE PRECEDING READS FROM TRACK 2, SECTOR 2
|
||||
** OF DRIVE 2 IN SLOT 6, AND COPIES IT TO $1000.
|
||||
*
|
||||
** THERE ARE PLENTY OF OTHER USES HERE, BUT FOR
|
||||
** THE SAKE OF SAFETY, WE WON'T BE SHOWING ANY
|
||||
** DISK WRITE OPERATIONS. HOWEVER, THERE WILL BE A
|
||||
** DISK DEDICATED TO THIS IN THE FUTURE, BUT WITHOUT
|
||||
** THE SOURCE CODE ON IT.
|
||||
*
|
||||
*
|
||||
*
|
||||
** LITTLE LUMPS -- MID/LOW LEVEL
|
||||
*
|
||||
*
|
||||
JMP REENTRY
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
TESTSTR STR "TEST,A$300,L$100"
|
||||
TESTLD STR "TEST,A$300"
|
||||
TSTR STR "COMMUNISM WILL WIN!"
|
||||
*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* BOTTOM INCLUDES *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*
|
||||
** BOTTOM INCLUDES
|
||||
*
|
||||
PUT FILEIO.LIB
|
||||
*
|
100
disks/disk5_fileio/T.FILEIO.FINPUT
Normal file
100
disks/disk5_fileio/T.FILEIO.FINPUT
Normal file
|
@ -0,0 +1,100 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* FINPUT: READ LINE FROM TFILE *
|
||||
*- -*
|
||||
* INPUTS A LINE FROM A TEXT *
|
||||
* FILE AND STORES IT AS A *
|
||||
* STRING AT THE SPECIFIED *
|
||||
* MEMORY LOCATION. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* JSR CMD *
|
||||
* ASC "OPEN TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* JSR CMD *
|
||||
* ASC "READ TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* LDA #>STRLOC ; STRING LOC *
|
||||
* PHA *
|
||||
* LDA #<STRLOC *
|
||||
* PHA *
|
||||
* JSR FINPUT *
|
||||
* JSR CMD *
|
||||
* ASC "CLOSE TEXT1" *
|
||||
* HEX 8D00 *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = CLOBBERED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FINPUT
|
||||
*
|
||||
** SAVE RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
*
|
||||
LDX #0
|
||||
JSR FGETLN
|
||||
STX :SLEN
|
||||
CPX #0
|
||||
BEQ :EXIT
|
||||
*
|
||||
:INP_CLR
|
||||
LDY #0
|
||||
LDA :SLEN
|
||||
STA (ADDR1),Y ; PUT LENGTH AT START
|
||||
:LP
|
||||
LDA $0200,Y ; KEYBOARD BUFFER
|
||||
INY
|
||||
STA (ADDR1),Y
|
||||
CPY :SLEN
|
||||
BNE :LP
|
||||
*
|
||||
:EXIT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
82
disks/disk5_fileio/T.FILEIO.FPRINT
Normal file
82
disks/disk5_fileio/T.FILEIO.FPRINT
Normal file
|
@ -0,0 +1,82 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* FPRINT : JUST PRINTS TO COUT *
|
||||
*- -*
|
||||
* PRINTS A STRING TO A TEXT *
|
||||
* FILE THAT IS SPECIFIED IN AN *
|
||||
* ASC THAT FOLLOWS THE JSR TO *
|
||||
* THE SUBROUTINE. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* JSR CMD *
|
||||
* ASC "OPEN TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* JSR CMD *
|
||||
* ASC "WRITE TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* JSR FPRINT *
|
||||
* ASC "THIS IS A TEST." *
|
||||
* HEX 8D00 *
|
||||
* JSR CMD *
|
||||
* ASC "CLOSE TEXT1" *
|
||||
* HEX 8D00 *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
*
|
||||
FPRINT
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #$01 ; POINT TO NEXT INSTR
|
||||
:LP
|
||||
LDA (RETADR),Y
|
||||
BEQ :DONE
|
||||
JSR FCOUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE
|
||||
CLC ; RESTORE INSTR POINTER
|
||||
TYA
|
||||
ADC RETADR
|
||||
STA RETADR
|
||||
LDA RETADR+1
|
||||
ADC #$00
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
78
disks/disk5_fileio/T.FILEIO.FPSTR
Normal file
78
disks/disk5_fileio/T.FILEIO.FPSTR
Normal file
|
@ -0,0 +1,78 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* FPSTR : PRINT STRING TO FILE *
|
||||
*- -*
|
||||
* PRINTS THE SPECIFIED STRING *
|
||||
* AT GIVEN LOCATION TO THE *
|
||||
* FILE OPEN AND SET TO BE *
|
||||
* WRITTEN. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = CLOBBERED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FPSTR
|
||||
*
|
||||
** SAVE RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
*
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA :SLEN
|
||||
:LP
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
JSR FCOUT
|
||||
CPY :SLEN
|
||||
BNE :LP
|
||||
:EXIT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
54
disks/disk5_fileio/T.FILEIO.HOOKS
Normal file
54
disks/disk5_fileio/T.FILEIO.HOOKS
Normal file
|
@ -0,0 +1,54 @@
|
|||
*
|
||||
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
|
||||
* *
|
||||
* FILEIO.LIB HOOKS *
|
||||
* *
|
||||
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*
|
||||
*
|
||||
*
|
||||
STEP00 EQU $C080 ; DISK STEPPER PHASE 0 OFF
|
||||
STEP01 EQU $C081 ; DISK STEPPER PHASE 0 ON
|
||||
STEP10 EQU $C082 ; DISK STEPPER PHASE 1 OFF
|
||||
STEP11 EQU $C083 ; DISK STEPPER PHASE 1 ON
|
||||
STEP20 EQU $C084 ; DISK STEPPER PHASE 2 OFF
|
||||
STEP21 EQU $C085 ; DISK STEPPER PHASE 2 ON
|
||||
STEP30 EQU $C086 ; DISK STEPPER HAPSE 3 OFF
|
||||
STEP31 EQU $C087 ; DISK STEPPER PHASE 3 ON
|
||||
MOTON EQU $C088 ; DISK MAIN MOTOR OFF
|
||||
MOTOFF EQU $C089 ; DISK MAIN MOTOR ON
|
||||
DRV0EN EQU $C08A ; DISK ENABLE DRIVE 1
|
||||
DRV1EN EQU $C08B ; DISK ENABLE DRIVE 2
|
||||
Q6CLR EQU $C08C ; DISK Q6 CLEAR
|
||||
Q6SET EQU $C08D ; DISK Q6 SET
|
||||
Q7CLR EQU $C08E ; DISK Q7 CLEAR
|
||||
Q7SET EQU $C08F ; DISK Q7 SET
|
||||
CWRITE EQU $FECD ; WRITE TO CASSETTE TAPE
|
||||
CREAD EQU $FEFD ; READ FROM CASSETTE TAPE
|
||||
*
|
||||
IOB EQU $B7E8 ; INPUT/OUTPUT AND CONTROL
|
||||
; BLOCK TABLE
|
||||
IOB_SLOT EQU $B7E9
|
||||
IOB_DRIV EQU $B7EA
|
||||
IOB_EVOL EQU $B7EB ; EXPECTED VOLUME NUMBER
|
||||
IOB_TRAK EQU $B7EC
|
||||
IOB_SECT EQU $B7ED
|
||||
IOB_DCTL EQU $B7EE ; LOW ORDER BYTE OF THE
|
||||
; DEVICE CHARACTERISTIC TBL
|
||||
IOB_DCTH EQU $B7EF ; HIGH ORDER OF DCT
|
||||
IOB_BUFL EQU $B7F0 ; LOW ORDER OF BUFFER
|
||||
IOB_BUFH EQU $B7F1 ; HIGH
|
||||
IOB_COMM EQU $B7F4 ; COMMAND CODE; READ/WRITE
|
||||
IOB_ERR EQU $B7F5 ; ERROR CODE
|
||||
IOB_AVOL EQU $B7F6 ; ACTUAL VOL NUMBER
|
||||
IOB_PRES EQU $B7F7 ; PREVIOUS SLOT ACCESSED
|
||||
IOB_PRED EQU $B7F8 ; PREVIOUS DRIVE ACCESSED
|
||||
*
|
||||
RWTS EQU $3D9
|
||||
*
|
||||
*
|
||||
FCOUT EQU $FDED
|
||||
LANG EQU $AAB6
|
||||
CURLIN EQU $75
|
||||
PROMPT EQU $33
|
||||
FGET EQU $FD0C ; MONITOR GETKEY ROUTINE
|
||||
FGETLN EQU $FD6F ; MON GETLN ROUTINE
|
682
disks/disk5_fileio/T.FILEIO.LIB
Normal file
682
disks/disk5_fileio/T.FILEIO.LIB
Normal file
|
@ -0,0 +1,682 @@
|
|||
*
|
||||
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
|
||||
* *
|
||||
* FILE INPUT/OUTPUT LIBRARY *
|
||||
* *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* VERSION: 0.1.2 *
|
||||
* DATE: 30-OCT-2018 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* *
|
||||
* LICENSE: APACHE 2.0, WHERE *
|
||||
* APPLICABLE. CODE INSPIRED *
|
||||
* BY THE WORKS OF OTHERS MAY *
|
||||
* FALL UNDER A DIFFERENT *
|
||||
* LICENSE (NOTED IN ROUTINE). *
|
||||
* *
|
||||
* *
|
||||
*------------------------------*
|
||||
* *
|
||||
* LIST OF ROUTINES *
|
||||
* *
|
||||
* BSAVE : SAVE BINARY FILE *
|
||||
* BLOAD : LOAD BINARY FILE *
|
||||
* TMODE : TEXT FILE OPS MODE *
|
||||
* CMD : EXEC DOS COMMAND *
|
||||
* TMODE : SET TEXT IO MODE *
|
||||
* FPRINT : PRINT TO FILE *
|
||||
* FPSTR : FILE PRINT STRING *
|
||||
* FINPUT : GET LINE FROM TEXTF *
|
||||
* *
|
||||
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* BSAVE :: BINARY SAVE *
|
||||
*- -*
|
||||
* SIMPLY DOES A BINARY SAVE *
|
||||
* WITH THE COMMAND LINE PARAMS *
|
||||
* SPECIFIED IN THE STRING AT *
|
||||
* THE GIVEN ADDRESS. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* LDA #>SADDR ; STRING ADDR *
|
||||
* PHA *
|
||||
* LDA #<SADDR *
|
||||
* PHA *
|
||||
* JSR BSAVE *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* LO BYTE OF STRING ADDRESS *
|
||||
* HI BYTE OF STRING ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = UNCHANGED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED; TRASH *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BSAVE
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR2 ; CMD STRING ADDR
|
||||
PLA
|
||||
STA ADDR2+1
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
LDA #$84 ; CTRL-D
|
||||
JSR FCOUT
|
||||
LDA #$C2 ; B
|
||||
JSR FCOUT
|
||||
LDA #$D3 ; S
|
||||
JSR FCOUT
|
||||
LDA #$C1 ; A
|
||||
JSR FCOUT
|
||||
LDA #$D6 ; V
|
||||
JSR FCOUT
|
||||
LDA #$C5 ; E
|
||||
JSR FCOUT
|
||||
LDA #$A0 ; [SPACE]
|
||||
JSR FCOUT
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #0
|
||||
LDA (ADDR2),Y
|
||||
STA :SLEN
|
||||
LDY #1
|
||||
:LP
|
||||
LDA (ADDR2),Y
|
||||
JSR FCOUT
|
||||
INY
|
||||
CPY :SLEN
|
||||
BCC :LP
|
||||
BEQ :LP
|
||||
*
|
||||
** NOW PRESS RETURN AND PRAY
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* BLOAD :: BINARY LOAD *
|
||||
*- -*
|
||||
* SIMPLY BLOADS INTO MEMORY AS *
|
||||
* SPECIFIED BY THE STRING *
|
||||
* PASSED AS A PARAMETER. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* LDA #>SADDR ; STRING ADDR *
|
||||
* PHA *
|
||||
* LDA #<SADDR *
|
||||
* PHA *
|
||||
* JSR BLOAD *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* LO BYTE OF STRING ADDRESS *
|
||||
* HI BYTE OF STRING ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = UNCHANGED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED; TRSAH *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
BLOAD
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR2 ; CMD STRING ADDR
|
||||
PLA
|
||||
STA ADDR2+1
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
LDA #$84 ; CTRL-D
|
||||
JSR FCOUT
|
||||
LDA #$C2 ; B
|
||||
JSR FCOUT
|
||||
LDA #$CC ; L
|
||||
JSR FCOUT
|
||||
LDA #$CF ; O
|
||||
JSR FCOUT
|
||||
LDA #$C1 ; A
|
||||
JSR FCOUT
|
||||
LDA #$C4 ; D
|
||||
JSR FCOUT
|
||||
LDA #$A0 ; [SPACE]
|
||||
JSR FCOUT
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #0
|
||||
LDA (ADDR2),Y
|
||||
STA :SLEN
|
||||
LDY #1
|
||||
:LP
|
||||
LDA (ADDR2),Y
|
||||
JSR FCOUT
|
||||
INY
|
||||
CPY :SLEN
|
||||
BCC :LP
|
||||
BEQ :LP
|
||||
*
|
||||
** NOW PRESS RETURN AND PRAY
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* TMODE :: TEXT FILE OPS MODE *
|
||||
*- -*
|
||||
* THIS ROUTINE FOOLS DOS INTO *
|
||||
* THINKING IT IS IN NON- *
|
||||
* IMMEDIATE MODE. THIS IS *
|
||||
* TO ALLOW FOR READING AND *
|
||||
* WRITING OF TEXT FILES. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = UNCHANGED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED; TRASH *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
TMODE
|
||||
*
|
||||
LDA #$40
|
||||
STA LANG ; LANG = FP
|
||||
STA CURLIN+1 ; RUNNING PROG
|
||||
LDA #$06
|
||||
STA PROMPT ; NOT DIRECT MODE
|
||||
RTS
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* CMD :: EXECUTE DOS COMMAND *
|
||||
*- -*
|
||||
* EXECUTES A DOS COMMAND THAT *
|
||||
* IS PASSED VIA AN ASC THAT *
|
||||
* FOLLOWS THE JSR TO THE *
|
||||
* ROUTINE. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* JSR CMD *
|
||||
* ASC "CATALOG" *
|
||||
* HEX 8D00 *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = UNCHANGED *
|
||||
* A = UNCHANGED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
CMD
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
LDA #$8D
|
||||
JSR FCOUT
|
||||
LDA #$84 ; CTRL-D
|
||||
JSR FCOUT
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #$01 ; POINT TO NEXT INSTR
|
||||
:LP
|
||||
LDA (RETADR),Y
|
||||
BEQ :DONE
|
||||
JSR FCOUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE
|
||||
CLC ; RESTORE INSTR POINTER
|
||||
TYA
|
||||
ADC RETADR
|
||||
STA RETADR
|
||||
LDA RETADR+1
|
||||
ADC #$00
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* FPRINT : JUST PRINTS TO COUT *
|
||||
*- -*
|
||||
* PRINTS A STRING TO A TEXT *
|
||||
* FILE THAT IS SPECIFIED IN AN *
|
||||
* ASC THAT FOLLOWS THE JSR TO *
|
||||
* THE SUBROUTINE. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* JSR CMD *
|
||||
* ASC "OPEN TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* JSR CMD *
|
||||
* ASC "WRITE TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* JSR FPRINT *
|
||||
* ASC "THIS IS A TEST." *
|
||||
* HEX 8D00 *
|
||||
* JSR CMD *
|
||||
* ASC "CLOSE TEXT1" *
|
||||
* HEX 8D00 *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FPRINT
|
||||
*
|
||||
** GET RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** NOW SEND STRING TO COUT
|
||||
*
|
||||
LDY #$01 ; POINT TO NEXT INSTR
|
||||
:LP
|
||||
LDA (RETADR),Y
|
||||
BEQ :DONE
|
||||
JSR FCOUT
|
||||
INY
|
||||
BNE :LP
|
||||
:DONE
|
||||
CLC ; RESTORE INSTR POINTER
|
||||
TYA
|
||||
ADC RETADR
|
||||
STA RETADR
|
||||
LDA RETADR+1
|
||||
ADC #$00
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* FINPUT: READ LINE FROM TFILE *
|
||||
*- -*
|
||||
* INPUTS A LINE FROM A TEXT *
|
||||
* FILE AND STORES IT AS A *
|
||||
* STRING AT THE SPECIFIED *
|
||||
* MEMORY LOCATION. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
* JSR CMD *
|
||||
* ASC "OPEN TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* JSR CMD *
|
||||
* ASC "READ TEXT1" *
|
||||
* HEX 8D00 *
|
||||
* LDA #>STRLOC ; STRING LOC *
|
||||
* PHA *
|
||||
* LDA #<STRLOC *
|
||||
* PHA *
|
||||
* JSR FINPUT *
|
||||
* JSR CMD *
|
||||
* ASC "CLOSE TEXT1" *
|
||||
* HEX 8D00 *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = CLOBBERED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FINPUT
|
||||
*
|
||||
** SAVE RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
*
|
||||
LDX #0
|
||||
JSR FGETLN
|
||||
STX :SLEN
|
||||
CPX #0
|
||||
BEQ :EXIT
|
||||
*
|
||||
:INP_CLR
|
||||
LDY #0
|
||||
LDA :SLEN
|
||||
STA (ADDR1),Y ; PUT LENGTH AT START
|
||||
:LP
|
||||
LDA $0200,Y ; KEYBOARD BUFFER
|
||||
INY
|
||||
STA (ADDR1),Y
|
||||
CPY :SLEN
|
||||
BNE :LP
|
||||
*
|
||||
:EXIT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* FPSTR : PRINT STRING TO FILE *
|
||||
*- -*
|
||||
* PRINTS THE SPECIFIED STRING *
|
||||
* AT GIVEN LOCATION TO THE *
|
||||
* FILE OPEN AND SET TO BE *
|
||||
* WRITTEN. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = CLOBBERED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
FPSTR
|
||||
*
|
||||
** SAVE RETURN ADDRESS
|
||||
*
|
||||
PLA
|
||||
STA RETADR
|
||||
PLA
|
||||
STA RETADR+1
|
||||
*
|
||||
** GET PARAMETERS
|
||||
*
|
||||
PLA
|
||||
STA ADDR1
|
||||
PLA
|
||||
STA ADDR1+1
|
||||
*
|
||||
LDY #0
|
||||
LDA (ADDR1),Y
|
||||
STA :SLEN
|
||||
:LP
|
||||
INY
|
||||
LDA (ADDR1),Y
|
||||
JSR FCOUT
|
||||
CPY :SLEN
|
||||
BNE :LP
|
||||
:EXIT
|
||||
*
|
||||
** RESTORE RETURN ADDRESS
|
||||
*
|
||||
LDA RETADR+1
|
||||
PHA
|
||||
LDA RETADR
|
||||
PHA
|
||||
*
|
||||
RTS
|
||||
*
|
||||
** DATA
|
||||
*
|
||||
:SLEN DS 1
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* DISKOP : DISK OPERATION RWTS *
|
||||
*- -*
|
||||
* GENERAL PURPOSE ROUTINE FOR *
|
||||
* READING AND WRITING TO A *
|
||||
* DISK VIA TRACKS AND SECTORS. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = CLOBBERED *
|
||||
* X = CLOBBERED *
|
||||
* A = CLOBBERED *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
DISKOP
|
||||
*
|
||||
:CLEAR
|
||||
LDA #00
|
||||
STA IOB_EVOL
|
||||
*
|
||||
LDA #>IOB
|
||||
LDY #<IOB
|
||||
JSR RWTS
|
||||
BCC :EXIT
|
||||
:ERR LDA IOB_ERR
|
||||
LDX #00
|
||||
STX $48
|
||||
:EXIT RTS
|
||||
*
|
371
disks/disk5_fileio/T.FILEIO.MAC
Normal file
371
disks/disk5_fileio/T.FILEIO.MAC
Normal file
|
@ -0,0 +1,371 @@
|
|||
*
|
||||
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
|
||||
* *
|
||||
* FILEIO.MAC *
|
||||
* *
|
||||
* AUTHOR: NATHAN RIGGS *
|
||||
* CONTACT: NATHAN.RIGGS@ *
|
||||
* OUTLOOK.COM *
|
||||
* *
|
||||
* VERSION: 0.1.2 *
|
||||
* DATE: 30-OCT-2018 *
|
||||
* ASSEMBLER: MERLIN 8 PRO *
|
||||
* *
|
||||
* LICENSE: APACHE 2.0 LICENSE, *
|
||||
* WHERE APPLICABLE. CODE *
|
||||
* INSPIRED BY OR COPIED FROM *
|
||||
* OTHERS MAY FALL UNDER A *
|
||||
* DIFFERENT LICENSE. I WILL *
|
||||
* DO MY BEST TO NOTIFY SUCH *
|
||||
* CASES. *
|
||||
* *
|
||||
*------------------------------*
|
||||
* *
|
||||
* THIS IS A MACRO LIBRARY FOR *
|
||||
* FILE INPUT AND OUTPUT, AS *
|
||||
* WELL AS DISK OPERATIONS. IT *
|
||||
* USES FILEIO.LIB AND *
|
||||
* DISKS.LIB. *
|
||||
* *
|
||||
*------------------------------*
|
||||
* *
|
||||
* LIST OF MACROS *
|
||||
* *
|
||||
* _BSAV : BINARY SAVE *
|
||||
* _BLOD : BINARY LOAD *
|
||||
* _TMOD : TEXT FILE OP MODE *
|
||||
* _CMD : EXECUTE DOS COMMAND *
|
||||
* _FPRN : PRINT TO FILE *
|
||||
* _FINP : INPUT LINE FROM FILE *
|
||||
* _FGET : GET CHAR FROM FILE *
|
||||
* _SLOT : SET RWTS SLOT *
|
||||
* _DRIV : SET RWTS DRIVE *
|
||||
* _TRAK : SET RWTS TRACK *
|
||||
* _SECT : SET RWTS SECTOR *
|
||||
* _COMM : RWTS COMMAND; RD/WRT *
|
||||
* _DBUF : SET BUFFER ADDRESS *
|
||||
* _RWTS : CALL THE RWTS ROUTE *
|
||||
* *
|
||||
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _BLOD : LOAD A BINARY FILE *
|
||||
*- -*
|
||||
* LOAD INTO THE GIVEN ADDRESS *
|
||||
* THE SPECIFIED BINARY FILE. *
|
||||
* TO SAVE ON CYCLES, PARAMS *
|
||||
* ARE PASSED AS ONE STRING AS *
|
||||
* IT WOULD BE ENTERED ON THE *
|
||||
* COMMAND LINE. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = ADDRESS OF CMD STR *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _BLOD "TEST,A$300" *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_BLOD MAC
|
||||
LDA #>]1
|
||||
PHA
|
||||
LDA #<]1
|
||||
PHA
|
||||
JSR BLOAD
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _BSAV : SAVE TO BINARY FILE *
|
||||
*- -*
|
||||
* SAVE THE GIVEN ADDRESS RANGE *
|
||||
* TO THE SPECIFIED FILE NAME. *
|
||||
* TO SAVE ON CYCLES, PARAMS *
|
||||
* ARE PASSED AS ONE STRING AS *
|
||||
* IT WOULD BE ENTERED ON THE *
|
||||
* COMMAND LINE. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = ADDRESS OF CDM STR *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _BSAV "TEST,A$300,L$100" *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_BSAV MAC
|
||||
LDA #>]1
|
||||
PHA
|
||||
LDA #<]1
|
||||
PHA
|
||||
JSR BSAVE
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _TMOD : INIT TXTFILE OP MODE *
|
||||
*- -*
|
||||
* FOOLS DOS INTO THINKING THAT *
|
||||
* WE ARE IN INDIRECT MODE TO *
|
||||
* ALLOW FOR TEXT FILE READ AND *
|
||||
* WRITE OPERATIONS. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NO PARAMETERS *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _TMOD *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_TMOD MAC
|
||||
JSR TMODE
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _CMD : EXECUTE DOS COMMAND *
|
||||
*- -*
|
||||
* SIMPLY EXECUTES THE DOS CMD *
|
||||
* AS IT IS PROVIDED IN THE *
|
||||
* STRING PASSED AS PARAMETER 1 *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = COMMAND STRING *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _CMD "CATALOG" *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_CMD MAC
|
||||
JSR CMD
|
||||
ASC ]1
|
||||
HEX 8D00
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _FPRN : PRINT LINE TO FILE *
|
||||
*- -*
|
||||
* PRINTS THE GIVEN STRING TO *
|
||||
* THE FILE THAT IS OPEN FOR *
|
||||
* WRITING. IF MEMORY ADDRESS *
|
||||
* IS PASSED, THEN PRINT THE *
|
||||
* STRING THAT IS AT THAT *
|
||||
* LOCATION. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = EITHER A STRING OR *
|
||||
* MEMLOC OF STRING *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _FPRN "TESTING" *
|
||||
* _FPRN $300 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_FPRN MAC
|
||||
IF $,]1 ; IF PARAM IS ADDR
|
||||
LDA #>]1
|
||||
PHA
|
||||
LDA #<]1
|
||||
PHA
|
||||
JSR FPSTR ; PRINT STRING
|
||||
ELSE ; ASSUME A STRING
|
||||
JSR FPRINT
|
||||
ASC ]1
|
||||
HEX 8D00
|
||||
FIN
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _FINP : GET LINE FROM TXTFILE*
|
||||
*- -*
|
||||
* GETS A LINE OF TEXT FROM THE *
|
||||
* FILE OPEN FOR READING AND *
|
||||
* STORES IT AD THE ADDRRESS *
|
||||
* SPECIFIED IN THE PARAMETERS. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = ADDRESS OF CDM STR *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _FINP $300 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_FINP MAC
|
||||
LDA #>]1
|
||||
PHA
|
||||
LDA #<]1
|
||||
PHA
|
||||
JSR FINPUT
|
||||
<<<
|
||||
*``````````````````````````````*
|
||||
* _FGET : GET CHAR FROM TXTFILE*
|
||||
*- -*
|
||||
* GETS A SINGLE CHAR FROM THE *
|
||||
* FILE OPEN FOR READING AND *
|
||||
* STORES IT IN THE ACCUMULATOR *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NO PARAMETERS *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _FGET *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_FGET MAC
|
||||
JSR FGET
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _SLOT : CHANGE RWTS IOB SLOT *
|
||||
*- -*
|
||||
* CHANGES THE SLOT VALUE IN *
|
||||
* THE IOB TABLE FOR THE RWTS *
|
||||
* ROUTINE. JUST USES DOS IOB. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = SLOT NUMBER *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _SLOT #6 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_SLOT MAC
|
||||
*
|
||||
LDA ]1
|
||||
STA SCRATCH
|
||||
ASL SCRATCH
|
||||
ASL SCRATCH
|
||||
ASL SCRATCH
|
||||
ASL SCRATCH ; MUL BY 16
|
||||
LDA SCRATCH
|
||||
STA IOB_SLOT
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _DRIV : CHANGE RWTSIOB DRIVE *
|
||||
*- -*
|
||||
* CHANGES THE DRIVE VALUE IN *
|
||||
* THE IOB TABLE FOR THE RWTS *
|
||||
* ROUTINE. JUST USES DOS IOB. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = DRIVE NUMBER *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _DRIV #1 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_DRIV MAC
|
||||
*
|
||||
LDA ]1
|
||||
STA IOB_DRIV
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _TRAK : CHANGE RWTSIOB TRACK *
|
||||
*- -*
|
||||
* CHANGES THE TRACK VALUE IN *
|
||||
* THE IOB TABLE FOR THE RWTS *
|
||||
* ROUTINE. JUST USES DOS IOB. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = TRACK NUMBER *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _TRAK #5 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_TRAK MAC
|
||||
*
|
||||
LDA ]1
|
||||
STA IOB_TRAK
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _SECT : CHANGE RWTS SECTOR *
|
||||
*- -*
|
||||
* CHANGES THE SECTOR VALUE IN *
|
||||
* THE IOB TABLE FOR THE RWTS *
|
||||
* ROUTINE. JUST USES DOS IOB. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = SECTOR NUMBER *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _SECT #3 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_SECT MAC
|
||||
*
|
||||
LDA ]1
|
||||
STA IOB_SECT
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _SECT : CHANGE RWTS COMMAND *
|
||||
*- -*
|
||||
* CHANGES THE RWTS COMMAND TO *
|
||||
* EITHER READ OR WRITE ($01 OR *
|
||||
* $02, RESPECTIVELY). *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = COMMAND VALUE *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _COMM #1 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_COMM MAC
|
||||
*
|
||||
LDA ]1
|
||||
STA IOB_COMM
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _DBUF : CHANGE RWTS BUFFADDR *
|
||||
*- -*
|
||||
* CHANGES THE BUFFER ADDRESS *
|
||||
* FOR THE RWTS SUBROUTINE *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* PARAM1 = BUFFER ADDRESS *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _BUFF $300 *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_DBUF MAC
|
||||
*
|
||||
LDA #<]1
|
||||
STA IOB_BUFL
|
||||
LDA #>]1
|
||||
STA IOB_BUFH
|
||||
<<<
|
||||
*
|
||||
*``````````````````````````````*
|
||||
* _RWTS : EXECUTE RWTS ROUTINE *
|
||||
*- -*
|
||||
* RUNS THE RWTS ROUTINE AFTER *
|
||||
* THE APPROPRIATE VARIABLES IN *
|
||||
* THE IOB TABLE ARE SET. *
|
||||
*- -*
|
||||
* PARAMETERS: *
|
||||
* *
|
||||
* NO PARAMETERS *
|
||||
*- -*
|
||||
* SAMPLE USAGE: *
|
||||
* _RWTS *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
_RWTS MAC
|
||||
*
|
||||
JSR DISKOP
|
||||
<<<
|
48
disks/disk5_fileio/T.FILEIO.TMODE
Normal file
48
disks/disk5_fileio/T.FILEIO.TMODE
Normal file
|
@ -0,0 +1,48 @@
|
|||
*
|
||||
*``````````````````````````````*
|
||||
* TMODE :: TEXT FILE OPS MODE *
|
||||
*- -*
|
||||
* THIS ROUTINE FOOLS DOS INTO *
|
||||
* THINKING IT IS IN NON- *
|
||||
* IMMEDIATE MODE. THIS IS *
|
||||
* TO ALLOW FOR READING AND *
|
||||
* WRITING OF TEXT FILES. *
|
||||
*- -*
|
||||
* CLOBBERS: *
|
||||
* *
|
||||
* FLAGS: ????---- REG: AXYM *
|
||||
*- -*
|
||||
* CYCLES: ??? *
|
||||
* SIZE: *
|
||||
*- -*
|
||||
* USAGE: *
|
||||
* *
|
||||
*- -*
|
||||
* ENTRY *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
*- -*
|
||||
* EXIT *
|
||||
* *
|
||||
* TOP OF STACK *
|
||||
* *
|
||||
* LOW BYTE OF RETURN ADDRESS *
|
||||
* HI BYTE OF RETURN ADDRESS *
|
||||
* *
|
||||
* Y = UNCHANGED *
|
||||
* X = UNCHANGED *
|
||||
* A = CLOBBERED; TRASH *
|
||||
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
|
||||
*
|
||||
TMODE
|
||||
*
|
||||
LDA #$40
|
||||
STA LANG ; LANG = FP
|
||||
STA CURLIN+1 ; RUNNING PROG
|
||||
LDA #$06
|
||||
STA PROMPT ; NOT DIRECT MODE
|
||||
RTS
|
||||
*
|
1
disks/disk5_fileio/T.TEST
Normal file
1
disks/disk5_fileio/T.TEST
Normal file
|
@ -0,0 +1 @@
|
|||
COMMUNISM WILL WIN!
|
128
disks/disk5_fileio/TEST
Normal file
128
disks/disk5_fileio/TEST
Normal file
|
@ -0,0 +1,128 @@
|
|||
0300- 00 BRK
|
||||
0301- 01 02 ORA ($02,X)
|
||||
0303- 03 ???
|
||||
0304- 2C A2 03 BIT $03A2
|
||||
0307- 38 SEC
|
||||
0308- A9 00 LDA #$00
|
||||
030A- 8D ED 03 STA $03ED
|
||||
030D- A9 09 LDA #$09
|
||||
030F- 8D EE 03 STA $03EE
|
||||
0312- 68 PLA
|
||||
0313- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
0316- 48 PHA
|
||||
0317- 2C A2 03 BIT $03A2
|
||||
031A- 38 SEC
|
||||
031B- A9 4B LDA #$4B
|
||||
031D- 8D ED 03 STA $03ED
|
||||
0320- A9 09 LDA #$09
|
||||
0322- 8D EE 03 STA $03EE
|
||||
0325- 68 PLA
|
||||
0326- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
0329- 48 PHA
|
||||
032A- 2C A2 03 BIT $03A2
|
||||
032D- 38 SEC
|
||||
032E- A9 40 LDA #$40
|
||||
0330- 8D ED 03 STA $03ED
|
||||
0333- A9 0C LDA #$0C
|
||||
0335- 8D EE 03 STA $03EE
|
||||
0338- 68 PLA
|
||||
0339- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
033C- 48 PHA
|
||||
033D- 2C A2 03 BIT $03A2
|
||||
0340- 38 SEC
|
||||
0341- A9 94 LDA #$94
|
||||
0343- 8D ED 03 STA $03ED
|
||||
0346- A9 0C LDA #$0C
|
||||
0348- 8D EE 03 STA $03EE
|
||||
034B- 68 PLA
|
||||
034C- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
034F- 48 PHA
|
||||
0350- 2C A2 03 BIT $03A2
|
||||
0353- 38 SEC
|
||||
0354- A9 12 LDA #$12
|
||||
0356- 8D ED 03 STA $03ED
|
||||
0359- A9 0D LDA #$0D
|
||||
035B- 8D EE 03 STA $03EE
|
||||
035E- 68 PLA
|
||||
035F- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
0362- 20 F0 E5 JSR $E5F0
|
||||
0365- 48 PHA
|
||||
0366- 2C A2 03 BIT $03A2
|
||||
0369- 38 SEC
|
||||
036A- A9 A0 LDA #$A0
|
||||
036C- 8D ED 03 STA $03ED
|
||||
036F- A9 0B LDA #$0B
|
||||
0371- 8D EE 03 STA $03EE
|
||||
0374- 68 PLA
|
||||
0375- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
0378- 24 9C BIT $9C
|
||||
037A- 70 1F BVS $039B
|
||||
037C- 6C 90 00 JMP ($0090)
|
||||
037F- 20 7C 03 JSR $037C
|
||||
0382- 48 PHA
|
||||
0383- 2C A2 03 BIT $03A2
|
||||
0386- 38 SEC
|
||||
0387- A9 B8 LDA #$B8
|
||||
0389- 8D ED 03 STA $03ED
|
||||
038C- A9 09 LDA #$09
|
||||
038E- 8D EE 03 STA $03EE
|
||||
0391- 68 PLA
|
||||
0392- 4C 14 C3 JMP $C314 ROM:XFER
|
||||
0395- 20 02 E6 JSR $E602
|
||||
0398- 4C 82 03 JMP $0382
|
||||
039B- 60 RTS
|
||||
039C- 20 1B E0 JSR $E01B
|
||||
039F- 4C 00 D1 JMP $D100
|
||||
03A2- 40 RTI
|
||||
03A3- 1C 1D 1E TRB $1E1D
|
||||
03A6- 00 BRK
|
||||
03A7- 00 BRK
|
||||
03A8- FF ???
|
||||
03A9- 1F ???
|
||||
03AA- 00 BRK
|
||||
03AB- 00 BRK
|
||||
03AC- 20 21 00 JSR $0021
|
||||
03AF- 22 ???
|
||||
03B0- 23 ???
|
||||
03B1- 24 25 BIT $25
|
||||
03B3- 26 27 ROL $27
|
||||
03B5- 28 PLP
|
||||
03B6- 00 BRK
|
||||
03B7- 00 BRK
|
||||
03B8- FF ???
|
||||
03B9- FF ???
|
||||
03BA- 00 BRK
|
||||
03BB- 29 2A AND #$2A
|
||||
03BD- 2B ???
|
||||
03BE- 00 BRK
|
||||
03BF- 2C 2D 2E BIT $2E2D
|
||||
03C2- 2F ???
|
||||
03C3- 30 31 BMI $03F6
|
||||
03C5- 32 00 AND ($00)
|
||||
03C7- 00 BRK
|
||||
03C8- 33 ???
|
||||
03C9- 34 35 BIT $35,X
|
||||
03CB- 36 37 ROL $37,X
|
||||
03CD- 38 SEC
|
||||
03CE- 00 BRK
|
||||
03CF- 39 4C BF AND $BF4C,Y
|
||||
03D2- 9D 4C 84 STA $844C,X
|
||||
03D5- 9D 4C FD STA $FD4C,X
|
||||
03D8- AA TAX
|
||||
03D9- 4C B5 B7 JMP $B7B5
|
||||
03DC- AD 0F 9D LDA $9D0F
|
||||
03DF- AC 0E 9D LDY $9D0E
|
||||
03E2- 60 RTS
|
||||
03E3- AD C2 AA LDA $AAC2
|
||||
03E6- AC C1 AA LDY $AAC1
|
||||
03E9- 60 RTS
|
||||
03EA- 4C 51 A8 JMP $A851
|
||||
03ED- A0 A5 LDY #$A5
|
||||
03EF- 4C 59 FA JMP $FA59 F8ROM:OLDBRK
|
||||
03F2- BF ???
|
||||
03F3- 9D 38 4C STA $4C38,X
|
||||
03F6- 00 BRK
|
||||
03F7- 03 ???
|
||||
03F8- 4C 03 E0 JMP $E003
|
||||
03FB- 4C 65 FF JMP $FF65 F8ROM:MON
|
||||
03FE- 65 FF ADC $FF
|
2
disks/disk5_fileio/TEXT1
Normal file
2
disks/disk5_fileio/TEXT1
Normal file
|
@ -0,0 +1,2 @@
|
|||
THIS IS A TEST.
|
||||
|
Loading…
Reference in New Issue
Block a user