home *** CD-ROM | disk | FTP | other *** search
- ;*** ╦┴╥ FILE ENCODER VERSION 1.00 - BY ├RAIG ┬RUCE - 10-╙EP-94
-
- ;KAR [-HELP] FILE ...
-
- ;╦EVIN'S ┴╥CHIVER FORMAT, CREATED BY ╦EVIN ╨HILLIPS AND ├RAIG ┬RUCE, 1991
-
- .SEQ ACEHEAD.S
- .ORG ACE┴PP┴DDRESS
- .OBJ "@0:KAR"
-
- JMP MAIN
- .BYTE ACE╔─1,ACE╔─2,ACE╔─3
- .BYTE 64,0 ;** STACK,RESERVED
-
- ;*** GLOBAL DECLARATIONS
-
- CHR┬┼╠ = $07
- CHR╘┴┬ = $09
- CHR╠╞ = $0A
- CHR├╥ = $0D
- CHR┬╙ = $14
- CHR├╠╥ = $93
- CHR╤╒╧╘┼ = $22
-
- ARG = 2 ;(2) ;CURRENT ARGUMENT NUMBER
- NAME = 4 ;(2) ;NAME OF FILE BEING KARED
- IN┬UF╠EN = 10 ;(2) ;TOTAL SIZE OF INPUT BUFFER
- FILE├OUNT = 24 ;(4) ;FILES TO PUT INTO ARCHIVE
- LINE├OUNT = 28 ;(4) ;LINES IN CURRENT FILE
- IN╞ILE = 32 ;(1) ;INPUT FILE DESCRIPTOR
- LAST╞ILE├HAR = 33 ;(1) ;LAST CHAR READ WHILE COUNTING A FILE
- WORK = 112 ;(16);TEMPORARY WORK AREA, LOWEST LEVEL
-
- ;===MAIN===
-
- MAIN = *
- ;** CHECK FOR A LARGE ENOUGH ╘╨┴
- SEC
- LDA #<BSS┼ND
- CMP ACE═EM╘OP+0
- LDA #>BSS┼ND
- SBC ACE═EM╘OP+1
- BCS +
- JMP MAIN╔NIT
- + LDA #<TPA═SG
- LDY #>TPA═SG
- JSR EPUTS
- DIE = *
- LDA #1
- LDX #0
- JMP EXIT
-
- TPA═SG = *
- .ASC "╔NSUFFICIENT PROGRAM SPACE TO RUN"
- .BYTE CHR├╥,0
-
- USAGE = *
- LDA #<USAGE═SG
- LDY #>USAGE═SG
- JSR EPUTS
- JMP DIE
-
- USAGE═SG = *
- .ASC "USAGE: KAR [-HELP] FILE ..."
- .BYTE CHR├╥,0
-
- MAIN╔NIT = *
- LDA #0
- STA ARG+0
- STA ARG+1
- JSR PUT╞ILE├OUNT
-
- MAIN╬EXT = *
- JSR CHECK╙TOP
- INC ARG+0
- BNE +
- INC ARG+1
- + LDA ARG+0
- LDY ARG+1
- JSR GETARG
- BEQ MAIN┼XIT
- LDA ZP+0
- LDY ZP+1
- STA NAME+0
- STY NAME+1
- JSR KAR
- JMP MAIN╬EXT
-
- MAIN┼XIT = *
- RTS
-
- CHECK╙TOP = *
- JSR STOPKEY
- BCS +
- RTS
- + LDA #<STOPPED═SG
- LDY #>STOPPED═SG
- JSR EPUTS
- JMP DIE
-
- STOPPED═SG = *
- .ASC "<╙TOPPED>"
- .BYTE CHR├╥,0
-
- PUT╞ILE├OUNT = *
- LDA ACE┴RGC+0
- LDY ACE┴RGC+1
- LDX #$00
- STA FILE├OUNT+0
- STY FILE├OUNT+1
- STX FILE├OUNT+2
- STX FILE├OUNT+3
- LDA #1
- LDY #0
- JSR GETARG
- LDY #0
- LDA (ZP),Y
- CMP #"-"
- BNE +
- JMP USAGE
- + LDA FILE├OUNT+0
- BNE +
- DEC FILE├OUNT+1
- + DEC FILE├OUNT+0
- LDX #FILE├OUNT
- ;XX FALL THROUGH
-
- PUTNUM = * ;( .╪=ZPOFF )
- LDA #<NUMBUF
- LDY #>NUMBUF
- STA ZP+0
- STY ZP+1
- LDA #1
- JSR UTOA
- LDA #<NUMBUF
- LDY #>NUMBUF
- JSR PUTS
- LDA #CHR├╥
- JSR PUTCHAR
- RTS
-
- NUMBUF .BUF 11
-
- KAR = *
- JSR ECHO
- LDA NAME+0
- LDY NAME+1
- JSR PUTS
- LDA #CHR├╥
- JSR PUTCHAR
- JSR COUNT╠INES
- BCC +
- RTS
- + LDX #LINE├OUNT
- JSR PUTNUM
- ;** OPEN FILE
- LDA NAME+0
- LDY NAME+1
- STA ZP+0
- STY ZP+1
- LDA #"R"
- JSR OPEN
- BCC +
- JSR ECHO╬AME
- LDA #<OPEN┼RR═SG
- LDY #>OPEN┼RR═SG
- JSR EPUTS
- RTS
- + STA IN╞ILE
- JSR KAR┬ODY
- LDA IN╞ILE
- JSR CLOSE
- RTS
- OPEN┼RR═SG = *
- .ASC ": CANNOT OPEN"
- .BYTE CHR├╥,0
-
- ECHO = *
- LDA #<ECHO═SG1
- LDY #>ECHO═SG1
- JSR EPUTS
- JSR ECHO╬AME
- LDA #<ECHO═SG2
- LDY #>ECHO═SG2
- JMP EPUTS
- ECHO═SG1 = *
- .ASC "KARING "
- .BYTE CHR╤╒╧╘┼,0
- ECHO═SG2 = *
- .BYTE CHR╤╒╧╘┼,CHR├╥,0
-
- ECHO╬AME = *
- LDA NAME+0
- LDY NAME+1
- JSR EPUTS
- RTS
-
- KAR┬ODY = *
- JSR INIT╔N┬UF
- LDA #<IN┬UF
- LDY #>IN┬UF
- STA ZP+0
- STY ZP+1
- - JSR CHECK╙TOP
- LDA IN┬UF╠EN+0
- LDY IN┬UF╠EN+1
- LDX IN╞ILE
- JSR READ
- BCS ++
- BEQ +
- PHA
- TYA
- PHA
- JSR CHECK╙TOP
- PLA
- TAY
- PLA
- LDX #STDOUT
- JSR WRITE
- BCC -
- BCS ++
- + RTS
- + JSR ECHO╬AME
- LDA #<IO┼RR═SG
- LDY #>IO┼RR═SG
- JSR EPUTS
- RTS
- IO┼RR═SG = *
- .ASC ": READ/WRITE ERROR"
- .BYTE CHR├╥,0
-
- ;=== LINE COUNTING PORTION ===
-
- COUNT╠INES = *
- LDA NAME+0
- LDY NAME+1
- STA ZP+0
- STY ZP+1
- LDA #"R"
- JSR OPEN
- BCC +
- JSR ECHO╬AME
- LDA #<OPEN┼RR═SG
- LDY #>OPEN┼RR═SG
- JSR EPUTS
- SEC
- RTS
- + STA IN╞ILE
- JSR COUNT╔NIT
- JSR COUNT┬ODY
- LDA IN╞ILE
- JSR CLOSE
- RTS
-
- COUNT╔NIT = *
- LDA #0
- LDX #3
- - STA LINE├OUNT,X
- DEX
- BPL -
- RTS
-
- COUNT┬ODY = *
- - JSR CHECK╙TOP
- LDA #<IN┬UF
- LDY #>IN┬UF
- STA ZP+0
- STY ZP+1
- LDA #254
- LDY #0
- LDX IN╞ILE
- JSR READ
- STA IN┬UF╠EN+0
- STY IN┬UF╠EN+1
- BEQ +
- JSR COUNT╙CAN┬UFFER
- JMP -
- + RTS
-
- COUNT╙CAN┬UFFER = *
- LDY #0
- - LDA IN┬UF,Y
- CMP #CHR├╥
- BNE +
- INC LINE├OUNT+0
- BNE +
- INC LINE├OUNT+1
- BNE +
- INC LINE├OUNT+2
- BNE +
- INC LINE├OUNT+3
- + INY
- CPY IN┬UF╠EN
- BCC -
- STA LAST╞ILE├HAR
- RTS
-
- ;=== 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
-
- EPUTCHAR = *
- LDX #STDERR
- JMP PUTC
- 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
-
- GETARG = *
- STY ZP+1
- ASL
- STA ZP+0
- ROL ZP+1
- CLC
- LDA ACE┴RGV+0
- 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
- ORA ZP+0
- 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
- RTS
-
- ;===BSS===
-
- BSS = *
- IN┬UF = BSS
- BSS┼ND = IN┬UF+256
-