home *** CD-ROM | disk | FTP | other *** search
- ;*** TRANSLATION PROGRAM - BY ├RAIG ┬RUCE, STARTED 10-╩UL-93
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:TR"
-
- JMP MAIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- LIBWORK = $40
-
- CHR├╥ = $0D
- CHR╤UOTE = $22
- MAX╠INE╠EN = 2049
- TRUE = $FF
- FALSE = $00
-
- TR╨ETSCII = 0
- TR┴SCII├R╠F = 1
- TR┴SCII╠F = 2
- TR┴SCII├R = 3
- TR╙PEEDSCRIPT = 4
-
- TR╞ROM .BUF 1
- TR╘O .BUF 1
-
- ;******** 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
-
- 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
-
- ;===MAIN===
- ARG = 2
- NAME = 4
- STRING = 8
-
- MAIN = *
- LDA #TR┴SCII├R╠F
- STA TR╞ROM
- LDA #TR╨ETSCII
- STA TR╘O
- ;** CHECK ARGUMENT COUNT
- LDA ACE┴RGC+1
- BNE ENOUGH┴RGS
- LDA ACE┴RGC+0
- CMP #2
- BCS ENOUGH┴RGS
- JMP USAGE
-
- ENOUGH┴RGS = *
- LDA #1
- LDY #0
- STA ARG+0
- STY ARG+1
- JSR GETARG
- LDY #0
- LDA (ZP),Y
- CMP #"-"
- BNE FILE┴RG
- INC ARG
- INY
- JSR GET╘R╘YPE
- STX TR╞ROM
- INY
- JSR GET╘R╘YPE
- STX TR╘O
-
- FILE┴RG = *
- JSR INIT╧UT┬UF
- - JSR STOPKEY
- BCC +
- JMP STOPPED
- + LDA ARG+0
- LDY ARG+1
- JSR GETARG
- LDA ZP+0
- LDY ZP+1
- STA NAME+0
- STY NAME+1
- ORA ZP+1
- BEQ MAIN┼XIT
- JSR TR╞ILE
- BCC +
- JSR ERROR
- + INC ARG+0
- BNE +
- INC ARG+1
- + JMP -
-
- MAIN┼XIT = *
- JSR FLUSH╧UT┬UF
- RTS
-
- GET╘R╘YPE = * ;( (ZP)+.Y=STR ) : .╪=TYPE
- LDA (ZP),Y
- INY
- LDX #TR╨ETSCII
- CMP #"P"
- BEQ GET╘R╥ET
- LDX #TR╙PEEDSCRIPT
- CMP #"S"
- BEQ GET╘R╥ET
- LDX #TR┴SCII╠F
- CMP #"U"
- BEQ GET╘R╥ET
- LDX #TR┴SCII├R╠F
- CMP #"M"
- BEQ GET╘R╥ET
- LDX #TR╨ETSCII
- CMP #"C"
- BEQ GET╘R╥ET
- CMP #"A"
- BNE USAGE
- LDA (ZP),Y
- INY
- LDX #TR┴SCII╠F
- CMP #"L"
- BEQ GET╘R╥ET
- LDX #TR┴SCII├R
- CMP #"C"
- BEQ GET╘R╥ET
- CMP #"R"
- BEQ GET╘R╥ET
- DEY
- LDX #TR┴SCII├R╠F
- GET╘R╥ET = *
- CLC
- RTS
-
- USAGE = *
- LDA #<USAGE═SG
- LDY #>USAGE═SG
- JSR EPUTS
- LDA #1
- JMP EXIT
-
- USAGE═SG = *
- .ASC "USAGE: TR [-FROMSET2TOSET] FILE ..."
- .BYTE CHR├╥
- .ASC "WHERE FROMSET/TOSET=P,A,AL,AC,S,C,U,M"
- .BYTE CHR├╥
- .ASC "(PETSCII,ASC-CRLF,ASC-LF,ASC-CR,"
- .BYTE CHR├╥
- .ASC " SPEEDSCRIPT,COMMODORE,UNIX,MS-DOS)"
- .BYTE CHR├╥,0
-
- STOPPED = *
- LDA #<STOPPED═SG
- LDY #>STOPPED═SG
- JSR EPUTS
- LDA #1
- JMP EXIT
- STOPPED═SG = *
- .ASC "<╙TOPPED>"
- .BYTE CHR├╥,0
-
- ERROR = *
- LDA #<ERROR═SG1
- LDY #>ERROR═SG1
- JSR EPUTS
- LDA NAME+0
- LDY NAME+1
- JSR EPUTS
- LDA #<ERROR═SG2
- LDY #>ERROR═SG2
- JMP EPUTS
- ERROR═SG1 = *
- .ASC "┼RROR READING FILE "
- .BYTE CHR╤UOTE,0
- ERROR═SG2 = *
- .BYTE CHR╤UOTE,CHR├╥,0
-
- BUF╨TR = 10 ;(2)
- BUF├OUNT = 12 ;(2)
- INFILE = 14 ;(1)
- IN┬UF╠EN = 16 ;(2)
- READ╘R╘AB = 18 ;(2)
- WRITE╘R╘AB = 20 ;(2)
- OUT┬UF├OUNT = 22 ;(1)
-
- TR╞ILE = *
- JSR INIT╘R
- JSR INIT╔N┬UF
- LDA NAME+0
- LDY NAME+1
- STA ZP+0
- STY ZP+1
- LDA #"R"
- JSR OPEN
- BCC +
- RTS
- + STA INFILE
- JSR TR┬ODY
- LDA INFILE
- JSR CLOSE
- RTS
-
- TR┬ODY = *
- JSR GET┬YTE
- BCS BODY┼XIT
- LDX TR╞ROM
- BEQ BODY╫RITE
- CMP #13
- BNE +
- CPX #TR┴SCII├R╠F
- BEQ TR┬ODY
- CPX #TR┴SCII├R
- BEQ BODY╫RITE
- + TAY
- LDA (READ╘R╘AB),Y
-
- BODY╫RITE = *
- LDX TR╘O
- BEQ BODY╥EP
- CMP #13
- BNE +
- CPX #TR╙PEEDSCRIPT
- BEQ +
- CPX #TR┴SCII├R
- BEQ BODY╥EP
- CPX #TR┴SCII╠F
- BEQ +
- JSR PUT┬YTE
- LDA #13
- + TAY
- LDA (WRITE╘R╘AB),Y
-
- BODY╥EP = *
- JSR PUT┬YTE
- JMP TR┬ODY
-
- BODY┼XIT = *
- RTS
-
- GET┬YTE = *
- LDA BUF├OUNT+0
- ORA BUF├OUNT+1
- BEQ GET┬YTE╞ILL┬UF
- LDY #0
- LDA (BUF╨TR),Y
- INC BUF╨TR+0
- BNE +
- INC BUF╨TR+1
- + LDX BUF├OUNT+0
- BNE +
- DEC BUF├OUNT+1
- + DEC BUF├OUNT+0
- CLC
- RTS
-
- GET┬YTE╞ILL┬UF = *
- JSR STOPKEY
- BCC +
- JSR STOPPED
- + LDA #<IN┬UF
- LDY #>IN┬UF
- STA ZP+0
- STY ZP+1
- STA BUF╨TR+0
- STY BUF╨TR+1
- LDA IN┬UF╠EN+0
- LDY IN┬UF╠EN+1
- LDX INFILE
- JSR READ
- BEQ +
- BCS +
- STA BUF├OUNT+0
- STY BUF├OUNT+1
- JMP GET┬YTE
- + SEC
- RTS
-
- INIT╔N┬UF = *
- SEC
- LDA ACE═EM╘OP+0
- SBC #<IN┬UF
- STA IN┬UF╠EN+0
- LDA ACE═EM╘OP+1
- SBC #>IN┬UF
- STA IN┬UF╠EN+1
- LDA #0
- STA BUF├OUNT+0
- STA BUF├OUNT+1
- LDX #STDOUT
- JSR DEVINFO
- CMP #0
- BNE +
- LDA #<254
- LDY #>254
- STA IN┬UF╠EN+0
- STY IN┬UF╠EN+1
- + RTS
-
- PUT┬YTE = *
- LDX OUT┬UF├OUNT
- CPX #254
- BCC +
- PHA
- JSR FLUSH╧UT┬UF
- PLA
- LDX OUT┬UF├OUNT
- + STA OUT┬UF,X
- INC OUT┬UF├OUNT
- RTS
-
- FLUSH╧UT┬UF = *
- JSR STOPKEY
- BCC +
- JMP STOPPED
- + LDA #<OUT┬UF
- LDY #>OUT┬UF
- STA ZP+0
- STY ZP+1
- LDA OUT┬UF├OUNT
- LDY #0
- LDX #STDOUT
- JSR WRITE
- LDA #0
- STA OUT┬UF├OUNT
- RTS
-
- INIT╧UT┬UF = *
- LDA #0
- STA OUT┬UF├OUNT
- RTS
-
- INIT╘R = *
- LDA TR╞ROM
- ASL
- TAX
- LDA READ╘R,X
- STA READ╘R╘AB+0
- LDA READ╘R+1,X
- STA READ╘R╘AB+1
- LDA TR╘O
- ASL
- TAX
- LDA WRITE╘R,X
- STA WRITE╘R╘AB+0
- LDA WRITE╘R+1,X
- STA WRITE╘R╘AB+1
- RTS
-
- READ╘R .WORD 0,ASC╘O╨ET,ASC╘O╨ET,ASC╘O╨ET,SPD╘O╨ET
- WRITE╘R .WORD 0,PET╘O┴SC,PET╘O┴SC,PET╘O┴SC,PET╘O╙PD
-
- ASC╘O╨ET = *
- ;0 1 2 3 4 5 6 7 8 9 A B C D E F
- .BYTE $00,$01,$02,$03,$04,$05,$06,$07,$9D,$09,$0D,$0B,$93,$0A,$0E,$0F ;0
- .BYTE $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F ;1
- .BYTE $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ;2
- .BYTE $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F ;3
- .BYTE $40,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF ;4
- .BYTE $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$5B,$5C,$5D,$5E,$5F ;5
- .BYTE $C0,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F ;6
- .BYTE $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$DB,$DC,$DD,$DE,$DF ;7
- .BYTE $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F ;8
- .BYTE $90,$91,$92,$0C,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$08,$9E,$9F ;9
- .BYTE $A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF ;A
- .BYTE $B0,$B1,$B2,$B3,$B4,$B5,$B6,$B7,$B8,$B9,$BA,$BB,$BC,$BD,$BE,$BF ;B
- .BYTE $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F ;C
- .BYTE $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F ;D
- .BYTE $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF ;E
- .BYTE $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF ;F
-
- SPD╘O╨ET = *
- ;0 1 2 3 4 5 6 7 8 9 A B C D E F
- .BYTE $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F ;0
- .BYTE $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$0D ;1
- .BYTE $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ;2
- .BYTE $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F ;3
- .BYTE $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF ;4
- .BYTE $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF ;5
- .BYTE $A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF ;6
- .BYTE $B0,$B1,$B2,$B3,$B4,$B5,$B6,$B7,$B8,$B9,$BA,$BB,$BC,$BD,$BE,$BF ;7
- .BYTE $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$5F,$0E,$0F ;8
- .BYTE $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F ;9
- .BYTE $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF ;A
- .BYTE $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF ;B
- .BYTE $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F ;C
- .BYTE $90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F ;D
- .BYTE $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F ;E
- .BYTE $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F ;F
-
- PET╘O┴SC = *
- ;0 1 2 3 4 5 6 7 8 9 A B C D E F
- .BYTE $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0D,$0B,$93,$0A,$0E,$0F ;0
- .BYTE $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$1F ;1
- .BYTE $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ;2
- .BYTE $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F ;3
- .BYTE $40,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F ;4
- .BYTE $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$5B,$5C,$5D,$5E,$5F ;5
- .BYTE $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF ;6
- .BYTE $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF ;7
- .BYTE $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$8D,$8E,$8F ;8
- .BYTE $90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F ;9
- .BYTE $A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF ;A
- .BYTE $B0,$B1,$B2,$B3,$B4,$B5,$B6,$B7,$B8,$B9,$BA,$BB,$BC,$BD,$BE,$BF ;B
- .BYTE $60,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F ;C
- .BYTE $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$7B,$7C,$7D,$7E,$7F ;D
- .BYTE $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF ;E
- .BYTE $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF ;F
-
- PET╘O╙PD = *
- ;0 1 2 3 4 5 6 7 8 9 A B C D E F
- .BYTE $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8A,$8B,$8C,$1F,$8E,$8F ;0
- .BYTE $90,$91,$92,$93,$94,$95,$96,$97,$98,$99,$9A,$9B,$9C,$9D,$9E,$9F ;1
- .BYTE $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2A,$2B,$2C,$2D,$2E,$2F ;2
- .BYTE $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3A,$3B,$3C,$3D,$3E,$3F ;3
- .BYTE $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F ;4
- .BYTE $10,$11,$12,$13,$14,$15,$16,$17,$18,$19,$1A,$1B,$1C,$1D,$1E,$8D ;5
- .BYTE $E0,$E1,$E2,$E3,$E4,$E5,$E6,$E7,$E8,$E9,$EA,$EB,$EC,$ED,$EE,$EF ;6
- .BYTE $F0,$F1,$F2,$F3,$F4,$F5,$F6,$F7,$F8,$F9,$FA,$FB,$FC,$FD,$FE,$FF ;7
- .BYTE $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$C8,$C9,$CA,$CB,$CC,$CD,$CE,$CF ;8
- .BYTE $D0,$D1,$D2,$D3,$D4,$D5,$D6,$D7,$D8,$D9,$DA,$DB,$DC,$DD,$DE,$DF ;9
- .BYTE $60,$61,$62,$63,$64,$65,$66,$67,$68,$69,$6A,$6B,$6C,$6D,$6E,$6F ;A
- .BYTE $70,$71,$72,$73,$74,$75,$76,$77,$78,$79,$7A,$7B,$7C,$7D,$7E,$7F ;B
- .BYTE $40,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4A,$4B,$4C,$4D,$4E,$4F ;C
- .BYTE $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5A,$5B,$5C,$5D,$5E,$5F ;D
- .BYTE $A0,$A1,$A2,$A3,$A4,$A5,$A6,$A7,$A8,$A9,$AA,$AB,$AC,$AD,$AE,$AF ;E
- .BYTE $B0,$B1,$B2,$B3,$B4,$B5,$B6,$B7,$B8,$B9,$BA,$BB,$BC,$BD,$BE,$BF ;F
-
- ;===BSS===
-
- BSS = *
- OUT┬UF = BSS
- IN┬UF = OUT┬UF+256
-