home *** CD-ROM | disk | FTP | other *** search
- ;*** FILE READER PROGRAM
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@:READ"
-
- JMP CRC═AIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- LIBWORK = $40
-
- CHR├╥ = $0D
- CHR┬┼╠ = $07
- CHR╤UOTE = $22
-
- ;******** STANDARD LIBRARY ********
- PUTS = *
- LDX #STDOUT
- FPUTS = *
- STA ZP
- STY ZP+1
- LDY #$FF
- - INY
- LDA (ZP),Y
- BNE -
- TYA
- LDY #0
- JMP WRITE
- EPUTS = *
- LDX #STDERR
- JMP FPUTS
-
- PUTCHAR = *
- LDX #STDOUT
- PUTC = *
- STA PUTC┬UFFER
- LDA #<PUTC┬UFFER
- LDY #>PUTC┬UFFER
- STA ZP
- STY ZP+1
- LDA #1
- LDY #0
- JMP WRITE
- PUTC┬UFFER .BUF 1
-
- GETCHAR = *
- LDX #STDIN
- GETC = *
- LDA #<GETC┬UFFER
- LDY #>GETC┬UFFER
- STA ZP
- STY ZP+1
- LDA #1
- LDY #0
- JSR READ
- BEQ +
- LDA GETC┬UFFER
- RTS
- + SEC
- RTS
- GETC┬UFFER .BUF 1
-
- GETARG = *
- STY ZP+1
- ASL
- STA ZP
- ROL ZP+1
- CLC
- LDA ACE┴RGV
- ADC ZP
- STA ZP
- LDA ACE┴RGV+1
- ADC ZP+1
- STA ZP+1
- LDY #0
- LDA (ZP),Y
- TAX
- INY
- LDA (ZP),Y
- STX ZP
- STA ZP+1
- RTS
-
- ITOA┬IN = LIBWORK ;(4)
- ITOA┬CD = LIBWORK+4 ;(5)
- ITOA╞LAG = LIBWORK+9 ;(1)
- ITOA╬UMBER .BUF 11
- ITOA = * ;( .╪=NUM┌PADDR ) : ITOA╬UMBER
- LDY #0
- - LDA 0,X
- STA ITOA┬IN,Y
- INX
- INY
- CPY #4
- BCC -
- LDX #5
- LDA #0
- - STA ITOA┬CD,X ;ZEROS "ITOA╞LAG" TOO
- DEX
- BPL -
- LDY #32
- SEI
- SED
-
- ITOA╬EXT┬IT = *
- ASL ITOA┬IN+0
- ROL ITOA┬IN+1
- ROL ITOA┬IN+2
- ROL ITOA┬IN+3
- LDX #4
- - LDA ITOA┬CD,X
- ADC ITOA┬CD,X
- STA ITOA┬CD,X
- DEX
- BPL -
- DEY
- BNE ITOA╬EXT┬IT
- CLD
- CLI
- LDX #0
- LDY #0
- - LDA ITOA┬CD,X
- JSR ITOA╨UT╚EX
- INX
- CPX #5
- BCC -
- LDA #0
- STA ITOA╬UMBER,Y
- RTS
-
- ITOA╨UT╚EX = *
- PHA
- LSR
- LSR
- LSR
- LSR
- JSR ITOA╨UT─IGIT
- PLA
- AND #$0F
-
- ITOA╨UT─IGIT = *
- CMP ITOA╞LAG
- BNE +
- CPY #7
- BCS +
- LDA #$20
- BNE ITOA╨OKE
- + ORA #$30
- STA ITOA╞LAG
-
- ITOA╨OKE = *
- STA ITOA╬UMBER,Y
- INY
- RTS
-
- ;===CRC32===
- CRC┴RG = 2
- CRC╬AME = 4
- IN┬UF╠EN = 6
-
- CRC═AIN = *
- ;** CHECK ARGUMENT COUNT
- LDA ACE┴RGC+1
- BNE CRC┼NOUGH┴RGS
- LDA ACE┴RGC
- CMP #2
- BCS CRC┼NOUGH┴RGS
-
- CRC╒SAGE = *
- LDA #<CRC╒SAGE═SG
- LDY #>CRC╒SAGE═SG
- JMP EPUTS
-
- CRC╒SAGE═SG = *
- .ASC "USAGE: READ FILE1 FILE2 ... FILE╬"
- .BYTE CHR├╥
- .BYTE 0
-
- CRC┼NOUGH┴RGS = *
- ;** GET INPUT BUFFER LENGTH
- SEC
- LDA ACE═EM╘OP+0
- SBC #<CRC╔N┬UF
- STA IN┬UF╠EN
- LDA ACE═EM╘OP+1
- SBC #>CRC╔N┬UF
- STA IN┬UF╠EN+1
- ;** MAIN LOOP
- LDA #1
- LDY #0
- STA CRC┴RG
- STY CRC┴RG+1
- - JSR STOPKEY
- BCS CRC╙TOPPED
- LDA CRC┴RG
- LDY CRC┴RG+1
- JSR GETARG
- LDA ZP
- LDY ZP+1
- STA CRC╬AME
- STY CRC╬AME+1
- ORA ZP+1
- BEQ CRC┼XIT
- JSR DO╥EAD
- BCC +
- JSR CRC┼RROR
- + INC CRC┴RG
- BNE +
- INC CRC┴RG+1
- + JMP -
-
- CRC┼XIT = *
- RTS
-
- CRC╙TOPPED = *
- LDA #<STOPPED═SG
- LDY #>STOPPED═SG
- JSR EPUTS
- RTS
- STOPPED═SG = *
- .ASC "<╙TOPPED>"
- .BYTE CHR├╥,0
-
- CRC┼RROR = *
- LDA #<CRC┼RROR═SG1
- LDY #>CRC┼RROR═SG1
- JSR EPUTS
- LDA CRC╬AME
- LDY CRC╬AME+1
- JSR EPUTS
- LDA #<CRC┼RROR═SG2
- LDY #>CRC┼RROR═SG2
- JMP EPUTS
-
- CRC┼RROR═SG1 = *
- .ASC "┼RROR READING FILE "
- .BYTE CHR╤UOTE,0
-
- CRC┼RROR═SG2 = *
- .BYTE CHR╤UOTE,CHR├╥,0
-
- BUF╨TR = 8
- BUF├OUNT = 10
- INFILE = 12
-
- DO╥EAD = *
- ;** OPEN FILE
- LDA CRC╬AME
- LDY CRC╬AME+1
- STA ZP
- STY ZP+1
- LDA #"R"
- JSR OPEN
- BCC +
- RTS
- + STA INFILE
- LDA #<READ╙TART═SG
- LDY #>READ╙TART═SG
- JSR EPUTS
- ;** READ FILE
- JSR READ┬ODY
- ;** CLOSE FILE
- LDA #<READ╞INISH═SG
- LDY #>READ╞INISH═SG
- JSR EPUTS
- LDA INFILE
- JSR CLOSE
- RTS
-
- READ╙TART═SG = *
- .ASC "START"
- .BYTE CHR┬┼╠,CHR├╥,0
-
- READ╞INISH═SG = *
- .BYTE CHR┬┼╠
- .ASC "FINISHED"
- .BYTE CHR├╥,0
-
- READ┬ODY = *
- LDA #<CRC╔N┬UF
- LDY #>CRC╔N┬UF
- STA ZP
- STY ZP+1
- LDA IN┬UF╠EN+0
- LDY IN┬UF╠EN+1
- LDX INFILE
- JSR READ
- BEQ +
- BCS +
- JMP READ┬ODY
- + SEC
- RTS
-
- ;===THE END===
- CRC┬SS = *
- CRC╔N┬UF = CRC┬SS
-