home *** CD-ROM | disk | FTP | other *** search
- ;*** CRC32A PROGRAM - BY ├RAIG ┬RUCE
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:CRC32A"
-
- JMP CRC═AIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- LIBWORK = $40
-
- CHR├╥ = $0D
- 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
-
- ;===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 "╒SAGE: CRC32 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 CHECKSTOP
- 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 CRC32
- BCC +
- JSR CRC┼RROR
- + INC CRC┴RG
- BNE +
- INC CRC┴RG+1
- + JMP -
-
- CRC┼XIT = *
- RTS
-
- CHECKSTOP = *
- JSR STOPKEY
- BCS +
- RTS
- + LDA #<STOPPED═SG
- LDY #>STOPPED═SG
- JSR EPUTS
- LDA #1
- LDX #0
- JMP EXIT
- 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
-
- CRC32 = *
- ;** OPEN FILE
- LDA CRC╬AME
- LDY CRC╬AME+1
- STA ZP
- STY ZP+1
- LDA #"R"
- JSR OPEN
- BCC +
- RTS
- + STA INFILE
- ;** ENCODE FILE
- JSR CRC┬ODY
- ;** CLOSE FILE
- LDA INFILE
- JSR CLOSE
- RTS
-
- ;CRC32 VERSION 1.0 FOR THE ├-128 AND ├-64 BY ├RAIG ┬RUCE 23-═AY-92
-
- CH = 13 ;(1)
- CRC┴CCUM = 34 ;(4)
-
- CRC╠OW = $B7
- CRC═ID1 = $1D
- CRC═ID2 = $C1
- CRC╚IGH = $04
-
- CRC┬ODY = *
- LDX #3
- LDA #0
- - STA CRC┴CCUM,X
- DEX
- BPL -
- STA BUF├OUNT
- STA BUF├OUNT+1
-
- ;***SCAN FILE
-
- NEXT├HAR = *
- JSR GET┬YTE
- BCS CRC╨RINT
- STA CH
- LDX #8
-
- NEXT┬IT = *
- ASL CH
- ROL CRC┴CCUM+0
- ROL CRC┴CCUM+1
- ROL CRC┴CCUM+2
- ROL CRC┴CCUM+3
- BCC +
- LDA CRC┴CCUM+0
- EOR #CRC╠OW
- STA CRC┴CCUM+0
- LDA CRC┴CCUM+1
- EOR #CRC═ID1
- STA CRC┴CCUM+1
- LDA CRC┴CCUM+2
- EOR #CRC═ID2
- STA CRC┴CCUM+2
- LDA CRC┴CCUM+3
- EOR #CRC╚IGH
- STA CRC┴CCUM+3
- + DEX
- BNE NEXT┬IT
- JMP NEXT├HAR
-
- CRC╨RINT = *
- LDA #<RES═SG1+9
- LDY #>RES═SG1+9
- STA ZP+0
- STY ZP+1
- LDX #CRC┴CCUM
- LDA #10
- JSR UTOA
- LDA #" "
- STA RES═SG1+19
- LDA #<RES═SG1
- LDY #>RES═SG1
- JSR PUTS
- LDA CRC╬AME
- LDY CRC╬AME+1
- JSR PUTS
- LDA #<RES═SG2
- LDY #>RES═SG2
- JSR PUTS
- CLC
- RTS
-
- RES═SG1 = *
- .ASC "CRC32A = 1234567890 FOR "
- .BYTE CHR╤UOTE,0
- RES═SG2 = *
- .BYTE CHR╤UOTE,CHR├╥,0
-
- GET┬YTE = *
- LDA BUF├OUNT
- ORA BUF├OUNT+1
- BEQ GET┬YTE╞ILL┬UF
- LDY #0
- LDA (BUF╨TR),Y
- INC BUF╨TR
- BNE +
- INC BUF╨TR+1
- + LDX BUF├OUNT
- BNE +
- DEC BUF├OUNT+1
- + DEC BUF├OUNT
- CLC
- RTS
-
- GET┬YTE╞ILL┬UF = *
- JSR CHECKSTOP
- LDA #<CRC╔N┬UF
- LDY #>CRC╔N┬UF
- STA ZP
- STY ZP+1
- STA BUF╨TR
- STY BUF╨TR+1
- LDA IN┬UF╠EN
- LDY IN┬UF╠EN+1
- LDX INFILE
- JSR READ
- BEQ +
- BCS +
- STA BUF├OUNT
- STY BUF├OUNT+1
- JMP GET┬YTE
- + SEC
- RTS
-
- ;===THE END===
- CRC┬SS = *
- CRC╔N┬UF = CRC┬SS
-