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:
nathanriggs 2018-11-16 21:47:02 -05:00
parent 8d0c21e0c7
commit d1e8429d80
24 changed files with 5294 additions and 22 deletions

View File

@ -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~~

View File

@ -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

Binary file not shown.

BIN
bin/d2_math.dsk Normal file

Binary file not shown.

BIN
bin/d3_arrays.dsk Normal file

Binary file not shown.

BIN
bin/d4_strings.dsk Normal file

Binary file not shown.

BIN
bin/d5_fileio.dsk Normal file

Binary file not shown.

View 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

File diff suppressed because it is too large Load Diff

46
disks/disk5_fileio/T.DECS Normal file
View 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
*

View 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
*

View 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
*

View 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
*

View 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
*

View 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
*

View 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
*

View 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
*

View 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

View 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
*

View 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
<<<

View 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
*

View File

@ -0,0 +1 @@
COMMUNISM WILL WIN!

128
disks/disk5_fileio/TEST Normal file
View 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
View File

@ -0,0 +1,2 @@
THIS IS A TEST.