home *** CD-ROM | disk | FTP | other *** search
- ;*** CRC32B PROGRAM - BY ├RAIG ┬RUCE - 14-╧CT-93
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:CRC32"
-
- JMP CRC═AIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- LIBWORK = $40
-
- CHR├╥ = $0D
- CHR╤UOTE = $22
-
- CRC╘ABLE0 = *
- .BYTE $00,$96,$2C,$BA,$19,$8F,$35,$A3,$32,$A4,$1E,$88,$2B,$BD,$07,$91
- .BYTE $64,$F2,$48,$DE,$7D,$EB,$51,$C7,$56,$C0,$7A,$EC,$4F,$D9,$63,$F5
- .BYTE $C8,$5E,$E4,$72,$D1,$47,$FD,$6B,$FA,$6C,$D6,$40,$E3,$75,$CF,$59
- .BYTE $AC,$3A,$80,$16,$B5,$23,$99,$0F,$9E,$08,$B2,$24,$87,$11,$AB,$3D
- .BYTE $90,$06,$BC,$2A,$89,$1F,$A5,$33,$A2,$34,$8E,$18,$BB,$2D,$97,$01
- .BYTE $F4,$62,$D8,$4E,$ED,$7B,$C1,$57,$C6,$50,$EA,$7C,$DF,$49,$F3,$65
- .BYTE $58,$CE,$74,$E2,$41,$D7,$6D,$FB,$6A,$FC,$46,$D0,$73,$E5,$5F,$C9
- .BYTE $3C,$AA,$10,$86,$25,$B3,$09,$9F,$0E,$98,$22,$B4,$17,$81,$3B,$AD
- .BYTE $20,$B6,$0C,$9A,$39,$AF,$15,$83,$12,$84,$3E,$A8,$0B,$9D,$27,$B1
- .BYTE $44,$D2,$68,$FE,$5D,$CB,$71,$E7,$76,$E0,$5A,$CC,$6F,$F9,$43,$D5
- .BYTE $E8,$7E,$C4,$52,$F1,$67,$DD,$4B,$DA,$4C,$F6,$60,$C3,$55,$EF,$79
- .BYTE $8C,$1A,$A0,$36,$95,$03,$B9,$2F,$BE,$28,$92,$04,$A7,$31,$8B,$1D
- .BYTE $B0,$26,$9C,$0A,$A9,$3F,$85,$13,$82,$14,$AE,$38,$9B,$0D,$B7,$21
- .BYTE $D4,$42,$F8,$6E,$CD,$5B,$E1,$77,$E6,$70,$CA,$5C,$FF,$69,$D3,$45
- .BYTE $78,$EE,$54,$C2,$61,$F7,$4D,$DB,$4A,$DC,$66,$F0,$53,$C5,$7F,$E9
- .BYTE $1C,$8A,$30,$A6,$05,$93,$29,$BF,$2E,$B8,$02,$94,$37,$A1,$1B,$8D
-
- CRC╘ABLE1 = *
- .BYTE $00,$30,$61,$51,$C4,$F4,$A5,$95,$88,$B8,$E9,$D9,$4C,$7C,$2D,$1D
- .BYTE $10,$20,$71,$41,$D4,$E4,$B5,$85,$98,$A8,$F9,$C9,$5C,$6C,$3D,$0D
- .BYTE $20,$10,$41,$71,$E4,$D4,$85,$B5,$A8,$98,$C9,$F9,$6C,$5C,$0D,$3D
- .BYTE $30,$00,$51,$61,$F4,$C4,$95,$A5,$B8,$88,$D9,$E9,$7C,$4C,$1D,$2D
- .BYTE $41,$71,$20,$10,$85,$B5,$E4,$D4,$C9,$F9,$A8,$98,$0D,$3D,$6C,$5C
- .BYTE $51,$61,$30,$00,$95,$A5,$F4,$C4,$D9,$E9,$B8,$88,$1D,$2D,$7C,$4C
- .BYTE $61,$51,$00,$30,$A5,$95,$C4,$F4,$E9,$D9,$88,$B8,$2D,$1D,$4C,$7C
- .BYTE $71,$41,$10,$20,$B5,$85,$D4,$E4,$F9,$C9,$98,$A8,$3D,$0D,$5C,$6C
- .BYTE $83,$B3,$E2,$D2,$47,$77,$26,$16,$0B,$3B,$6A,$5A,$CF,$FF,$AE,$9E
- .BYTE $93,$A3,$F2,$C2,$57,$67,$36,$06,$1B,$2B,$7A,$4A,$DF,$EF,$BE,$8E
- .BYTE $A3,$93,$C2,$F2,$67,$57,$06,$36,$2B,$1B,$4A,$7A,$EF,$DF,$8E,$BE
- .BYTE $B3,$83,$D2,$E2,$77,$47,$16,$26,$3B,$0B,$5A,$6A,$FF,$CF,$9E,$AE
- .BYTE $C2,$F2,$A3,$93,$06,$36,$67,$57,$4A,$7A,$2B,$1B,$8E,$BE,$EF,$DF
- .BYTE $D2,$E2,$B3,$83,$16,$26,$77,$47,$5A,$6A,$3B,$0B,$9E,$AE,$FF,$CF
- .BYTE $E2,$D2,$83,$B3,$26,$16,$47,$77,$6A,$5A,$0B,$3B,$AE,$9E,$CF,$FF
- .BYTE $F2,$C2,$93,$A3,$36,$06,$57,$67,$7A,$4A,$1B,$2B,$BE,$8E,$DF,$EF
-
- CRC╘ABLE2 = *
- .BYTE $00,$07,$0E,$09,$6D,$6A,$63,$64,$DB,$DC,$D5,$D2,$B6,$B1,$B8,$BF
- .BYTE $B7,$B0,$B9,$BE,$DA,$DD,$D4,$D3,$6C,$6B,$62,$65,$01,$06,$0F,$08
- .BYTE $6E,$69,$60,$67,$03,$04,$0D,$0A,$B5,$B2,$BB,$BC,$D8,$DF,$D6,$D1
- .BYTE $D9,$DE,$D7,$D0,$B4,$B3,$BA,$BD,$02,$05,$0C,$0B,$6F,$68,$61,$66
- .BYTE $DC,$DB,$D2,$D5,$B1,$B6,$BF,$B8,$07,$00,$09,$0E,$6A,$6D,$64,$63
- .BYTE $6B,$6C,$65,$62,$06,$01,$08,$0F,$B0,$B7,$BE,$B9,$DD,$DA,$D3,$D4
- .BYTE $B2,$B5,$BC,$BB,$DF,$D8,$D1,$D6,$69,$6E,$67,$60,$04,$03,$0A,$0D
- .BYTE $05,$02,$0B,$0C,$68,$6F,$66,$61,$DE,$D9,$D0,$D7,$B3,$B4,$BD,$BA
- .BYTE $B8,$BF,$B6,$B1,$D5,$D2,$DB,$DC,$63,$64,$6D,$6A,$0E,$09,$00,$07
- .BYTE $0F,$08,$01,$06,$62,$65,$6C,$6B,$D4,$D3,$DA,$DD,$B9,$BE,$B7,$B0
- .BYTE $D6,$D1,$D8,$DF,$BB,$BC,$B5,$B2,$0D,$0A,$03,$04,$60,$67,$6E,$69
- .BYTE $61,$66,$6F,$68,$0C,$0B,$02,$05,$BA,$BD,$B4,$B3,$D7,$D0,$D9,$DE
- .BYTE $64,$63,$6A,$6D,$09,$0E,$07,$00,$BF,$B8,$B1,$B6,$D2,$D5,$DC,$DB
- .BYTE $D3,$D4,$DD,$DA,$BE,$B9,$B0,$B7,$08,$0F,$06,$01,$65,$62,$6B,$6C
- .BYTE $0A,$0D,$04,$03,$67,$60,$69,$6E,$D1,$D6,$DF,$D8,$BC,$BB,$B2,$B5
- .BYTE $BD,$BA,$B3,$B4,$D0,$D7,$DE,$D9,$66,$61,$68,$6F,$0B,$0C,$05,$02
-
- CRC╘ABLE3 = *
- .BYTE $00,$77,$EE,$99,$07,$70,$E9,$9E,$0E,$79,$E0,$97,$09,$7E,$E7,$90
- .BYTE $1D,$6A,$F3,$84,$1A,$6D,$F4,$83,$13,$64,$FD,$8A,$14,$63,$FA,$8D
- .BYTE $3B,$4C,$D5,$A2,$3C,$4B,$D2,$A5,$35,$42,$DB,$AC,$32,$45,$DC,$AB
- .BYTE $26,$51,$C8,$BF,$21,$56,$CF,$B8,$28,$5F,$C6,$B1,$2F,$58,$C1,$B6
- .BYTE $76,$01,$98,$EF,$71,$06,$9F,$E8,$78,$0F,$96,$E1,$7F,$08,$91,$E6
- .BYTE $6B,$1C,$85,$F2,$6C,$1B,$82,$F5,$65,$12,$8B,$FC,$62,$15,$8C,$FB
- .BYTE $4D,$3A,$A3,$D4,$4A,$3D,$A4,$D3,$43,$34,$AD,$DA,$44,$33,$AA,$DD
- .BYTE $50,$27,$BE,$C9,$57,$20,$B9,$CE,$5E,$29,$B0,$C7,$59,$2E,$B7,$C0
- .BYTE $ED,$9A,$03,$74,$EA,$9D,$04,$73,$E3,$94,$0D,$7A,$E4,$93,$0A,$7D
- .BYTE $F0,$87,$1E,$69,$F7,$80,$19,$6E,$FE,$89,$10,$67,$F9,$8E,$17,$60
- .BYTE $D6,$A1,$38,$4F,$D1,$A6,$3F,$48,$D8,$AF,$36,$41,$DF,$A8,$31,$46
- .BYTE $CB,$BC,$25,$52,$CC,$BB,$22,$55,$C5,$B2,$2B,$5C,$C2,$B5,$2C,$5B
- .BYTE $9B,$EC,$75,$02,$9C,$EB,$72,$05,$95,$E2,$7B,$0C,$92,$E5,$7C,$0B
- .BYTE $86,$F1,$68,$1F,$81,$F6,$6F,$18,$88,$FF,$66,$11,$8F,$F8,$61,$16
- .BYTE $A0,$D7,$4E,$39,$A7,$D0,$49,$3E,$AE,$D9,$40,$37,$A9,$DE,$47,$30
- .BYTE $BD,$CA,$53,$24,$BA,$CD,$54,$23,$B3,$C4,$5D,$2A,$B4,$C3,$5A,$2D
-
- ;******** STANDARD LIBRARY ********
-
- PUTS = *
- LDX #STDOUT
- FPUTS = *
- STA ZP+0
- 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+0
- 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+0
- 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+0
- ROL ZP+1
- CLC
- LDA ACE┴RGV
- ADC ZP+0
- STA ZP+0
- LDA ACE┴RGV+1
- ADC ZP+1
- STA ZP+1
- LDY #0
- LDA (ZP),Y
- TAX
- INY
- LDA (ZP),Y
- STX ZP+0
- 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+0
- CMP #2
- BCS CRC┼NOUGH┴RGS
-
- CRC╒SAGE = *
- LDA #<CRC╒SAGE═SG
- LDY #>CRC╒SAGE═SG
- JMP EPUTS
-
- CRC╒SAGE═SG = *
- .ASC "╒SAGE: CRC32B 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+0
- LDA ACE═EM╘OP+1
- SBC #>CRC╔N┬UF
- STA IN┬UF╠EN+1
- ;** MAIN LOOP
- LDA #1
- LDY #0
- STA CRC┴RG+0
- STY CRC┴RG+1
- - JSR CHECKSTOP
- LDA CRC┴RG+0
- LDY CRC┴RG+1
- JSR GETARG
- LDA ZP+0
- 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+0
- 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+0
- 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+0
- LDY CRC╬AME+1
- STA ZP+0
- STY ZP+1
- LDA #"R"
- JSR OPEN
- BCC +
- RTS
- + STA INFILE
- ;** ENCODE FILE
- JSR CRC┬ODY
- ;** CLOSE FILE
- LDA INFILE
- JSR CLOSE
- RTS
-
- CH = 13 ;(1)
- CRC┴CCUM = 34 ;(4)
- CRC╘EMP = 38 ;(4)
-
- CRC┬ODY = *
- LDX #3
- LDA #$FF
- - STA CRC┴CCUM,X
- DEX
- BPL -
- LDA #0
- STA BUF├OUNT+0
- STA BUF├OUNT+1
-
- ;***SCAN FILE
-
- NEXT├HAR = *
- JSR GET┬YTE
- BCS CRC╨RINT
- STA CH
-
- ;** CRC = 0X╞╞╞╞╞╞╞╞;
- ;** WHILE( (C=GETC(FP)) != ┼╧╞ )