00000000: 3B 20 43 4F 4D 50 49 4C 45 2F 55 4E 43 4F 4D 50 |; COMPILE/UNCOMP|
00000010: 49 4C 45 20 50 49 43 54 55 52 45 53 0D 3B 20 42 |ILE PICTURES.; B|
00000020: 59 20 44 41 56 49 44 20 53 54 49 44 4F 4C 50 48 |Y DAVID STIDOLPH|
00000030: 0D 3B 0D 3B 20 43 4F 4D 50 52 45 53 53 4F 52 2F |.;.; COMPRESSOR/|
00000040: 44 45 43 4F 4D 50 52 45 53 53 4F 52 0D 3B 20 46 |DECOMPRESSOR.; F|
00000050: 52 4F 4D 20 41 52 54 49 43 4C 45 20 42 59 20 43 |ROM ARTICLE BY C|
00000060: 48 52 49 53 20 5A 41 4D 41 52 41 0D 3B 20 20 20 |HRIS ZAMARA.; |
00000070: 20 20 20 54 52 41 4E 53 41 43 54 4F 52 20 2D 2D | TRANSACTOR --|
00000080: 20 56 4F 4C 55 4D 45 20 36 2C 20 49 53 53 55 45 | VOLUME 6, ISSUE|
00000090: 20 34 0D 3B 20 20 20 20 20 20 20 20 20 20 20 20 | 4.; |
000000A0: 20 20 20 20 20 20 20 20 4A 41 4E 2E 20 31 39 38 | JAN. 198|
000000B0: 36 0D 3B 0D 3B 20 43 4F 44 45 20 46 4F 52 20 43 |6.;.; CODE FOR C|
000000C0: 4F 4D 41 4C 2C 20 57 52 49 54 54 45 4E 20 42 59 |OMAL, WRITTEN BY|
000000D0: 0D 3B 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |.; |
000000E0: 20 20 20 44 41 56 49 44 20 53 54 49 44 4F 4C 50 | DAVID STIDOLP|
000000F0: 48 0D 3B 0D 43 48 4B 49 4E 20 3D 20 24 46 46 43 |H.;.CHKIN = $FFC|
00000100: 36 0D 43 48 4B 4F 55 54 20 3D 20 24 46 46 43 39 |6.CHKOUT = $FFC9|
00000110: 0D 43 48 52 49 4E 20 3D 20 24 46 46 43 46 0D 43 |.CHRIN = $FFCF.C|
00000120: 48 52 4F 55 54 20 3D 20 24 46 46 44 32 0D 43 4C |HROUT = $FFD2.CL|
00000130: 52 43 48 4E 20 3D 20 24 46 46 43 43 0D 50 4F 49 |RCHN = $FFCC.POI|
00000140: 4E 54 20 3D 20 24 41 38 0D 20 2A 20 3D 20 24 43 |NT = $A8. * = $C|
00000150: 30 30 30 0D 20 4A 4D 50 20 4C 4F 41 44 43 44 0D |000. JMP LOADCD.|
00000160: 20 4A 4D 50 20 53 41 56 45 43 44 0D 46 49 4C 4E | JMP SAVECD.FILN|
00000170: 55 4D 20 2E 42 59 54 20 30 0D 42 59 54 45 20 2E |UM .BYT 0.BYTE .|
00000180: 42 59 54 20 30 0D 4F 4C 44 42 59 54 20 2E 42 59 |BYT 0.OLDBYT .BY|
00000190: 54 20 30 0D 4C 41 53 54 20 2E 42 59 54 20 30 0D |T 0.LAST .BYT 0.|
000001A0: 4E 55 4D 20 2E 42 59 54 20 30 0D 3B 0D 4C 4F 41 |NUM .BYT 0.;.LOA|
000001B0: 44 43 44 20 4C 44 58 20 46 49 4C 4E 55 4D 0D 20 |DCD LDX FILNUM. |
000001C0: 4A 53 52 20 43 48 4B 49 4E 0D 20 4C 44 41 20 23 |JSR CHKIN. LDA #|
000001D0: 24 30 30 0D 20 53 54 41 20 50 4F 49 4E 54 0D 20 |$00. STA POINT. |
000001E0: 4C 44 41 20 23 24 45 30 0D 20 53 54 41 20 50 4F |LDA #$E0. STA PO|
000001F0: 49 4E 54 2B 31 0D 3B 0D 4D 41 49 4E 4C 44 20 4A |INT+1.;.MAINLD J|
00000200: 53 52 20 43 48 52 49 4E 0D 20 43 4D 50 20 23 32 |SR CHRIN. CMP #2|
00000210: 35 34 0D 20 42 4E 45 20 4E 4F 52 4D 41 4C 0D 20 |54. BNE NORMAL. |
00000220: 4A 53 52 20 43 48 52 49 4E 0D 20 53 54 41 20 42 |JSR CHRIN. STA B|
00000230: 59 54 45 0D 20 4A 53 52 20 43 48 52 49 4E 0D 20 |YTE. JSR CHRIN. |
00000240: 53 54 41 20 4E 55 4D 0D 20 4C 44 59 20 23 30 30 |STA NUM. LDY #00|
00000250: 0D 4E 45 58 54 20 4C 44 41 20 42 59 54 45 0D 20 |.NEXT LDA BYTE. |
00000260: 53 54 41 20 28 50 4F 49 4E 54 29 2C 59 0D 20 4A |STA (POINT),Y. J|
00000270: 53 52 20 49 4E 43 52 43 56 0D 44 45 43 4E 55 4D |SR INCRCV.DECNUM|
00000280: 20 44 45 43 20 4E 55 4D 0D 20 42 4E 45 20 4E 45 | DEC NUM. BNE NE|
00000290: 58 54 0D 20 4A 4D 50 20 4D 41 49 4E 4C 44 0D 3B |XT. JMP MAINLD.;|
000002A0: 0D 4E 4F 52 4D 41 4C 20 4C 44 59 20 23 30 30 0D |.NORMAL LDY #00.|
000002B0: 20 53 54 41 20 28 50 4F 49 4E 54 29 2C 59 0D 20 | STA (POINT),Y. |
000002C0: 4A 53 52 20 49 4E 43 52 43 56 0D 20 4A 4D 50 20 |JSR INCRCV. JMP |
000002D0: 4D 41 49 4E 4C 44 0D 3B 0D 49 4E 43 52 43 56 20 |MAINLD.;.INCRCV |
000002E0: 49 4E 43 20 50 4F 49 4E 54 0D 20 42 4E 45 20 4E |INC POINT. BNE N|
000002F0: 4F 54 52 31 0D 20 49 4E 43 20 50 4F 49 4E 54 2B |OTR1. INC POINT+|
00000300: 31 0D 4E 4F 54 52 31 20 4C 44 41 20 50 4F 49 4E |1.NOTR1 LDA POIN|
00000310: 54 2B 31 0D 20 43 4D 50 20 23 32 35 35 0D 20 42 |T+1. CMP #255. B|
00000320: 4E 45 20 4E 54 45 4E 44 52 0D 20 4C 44 41 20 50 |NE NTENDR. LDA P|
00000330: 4F 49 4E 54 0D 20 43 4D 50 20 23 36 34 0D 20 42 |OINT. CMP #64. B|
00000340: 4E 45 20 4E 54 45 4E 44 52 0D 20 50 4C 41 0D 20 |NE NTENDR. PLA. |
00000350: 50 4C 41 0D 20 4A 4D 50 20 43 4C 52 43 48 4E 0D |PLA. JMP CLRCHN.|
00000360: 4E 54 45 4E 44 52 20 52 54 53 0D 3B 0D 3B 20 43 |NTENDR RTS.;.; C|
00000370: 4F 4D 50 41 43 54 4F 52 20 46 4F 52 20 43 4F 4D |OMPACTOR FOR COM|
00000380: 41 4C 20 32 2E 30 0D 3B 0D 53 41 56 45 43 44 20 |AL 2.0.;.SAVECD |
00000390: 4C 44 58 20 46 49 4C 4E 55 4D 0D 20 4A 53 52 20 |LDX FILNUM. JSR |
000003A0: 43 48 4B 4F 55 54 0D 3B 0D 20 4C 44 41 20 23 24 |CHKOUT.;. LDA #$|
000003B0: 30 30 0D 20 53 54 41 20 50 4F 49 4E 54 0D 20 4C |00. STA POINT. L|
000003C0: 44 41 20 23 24 45 30 0D 20 53 54 41 20 50 4F 49 |DA #$E0. STA POI|
000003D0: 4E 54 2B 31 0D 3B 0D 20 53 45 49 0D 20 4C 44 41 |NT+1.;. SEI. LDA|
000003E0: 20 31 0D 20 41 4E 44 20 23 25 31 31 31 31 31 31 | 1. AND #%111111|
000003F0: 30 31 0D 20 53 54 41 20 31 0D 20 4C 44 59 20 23 |01. STA 1. LDY #|
00000400: 30 0D 20 4C 44 41 20 28 50 4F 49 4E 54 29 2C 59 |0. LDA (POINT),Y|
00000410: 0D 20 53 54 41 20 42 59 54 45 0D 20 4C 44 41 20 |. STA BYTE. LDA |
00000420: 31 0D 20 4F 52 41 20 23 25 30 30 30 30 30 30 31 |1. ORA #%0000001|
00000430: 30 0D 20 53 54 41 20 31 0D 20 43 4C 49 0D 20 4C |0. STA 1. CLI. L|
00000440: 44 41 20 23 31 0D 20 53 54 41 20 50 4F 49 4E 54 |DA #1. STA POINT|
00000450: 0D 20 53 54 41 20 4E 55 4D 0D 3B 0D 53 41 56 45 |. STA NUM.;.SAVE|
00000460: 4D 4E 20 4C 44 59 20 23 30 30 0D 20 4C 44 41 20 |MN LDY #00. LDA |
00000470: 42 59 54 45 0D 20 53 54 41 20 4F 4C 44 42 59 54 |BYTE. STA OLDBYT|
00000480: 0D 20 53 45 49 0D 20 4C 44 41 20 31 0D 20 41 4E |. SEI. LDA 1. AN|
00000490: 44 20 23 25 31 31 31 31 31 31 30 31 0D 20 53 54 |D #%11111101. ST|
000004A0: 41 20 31 0D 20 4C 44 41 20 28 50 4F 49 4E 54 29 |A 1. LDA (POINT)|
000004B0: 2C 59 0D 20 53 54 41 20 42 59 54 45 0D 20 4C 44 |,Y. STA BYTE. LD|
000004C0: 41 20 31 0D 20 4F 52 41 20 23 25 30 30 30 30 30 |A 1. ORA #%00000|
000004D0: 30 31 30 0D 20 53 54 41 20 31 0D 20 43 4C 49 0D |010. STA 1. CLI.|
000004E0: 20 4A 53 52 20 50 55 54 4F 55 54 0D 20 49 4E 43 | JSR PUTOUT. INC|
000004F0: 20 50 4F 49 4E 54 0D 20 42 4E 45 20 4E 4F 54 4E | POINT. BNE NOTN|
00000500: 4F 57 0D 20 49 4E 43 20 50 4F 49 4E 54 2B 31 0D |OW. INC POINT+1.|
00000510: 4E 4F 54 4E 4F 57 20 4C 44 41 20 50 4F 49 4E 54 |NOTNOW LDA POINT|
00000520: 2B 31 0D 20 43 4D 50 20 23 24 46 46 0D 20 42 4E |+1. CMP #$FF. BN|
00000530: 45 20 53 41 56 45 4D 4E 0D 20 4C 44 41 20 50 4F |E SAVEMN. LDA PO|
00000540: 49 4E 54 0D 20 43 4D 50 20 23 36 34 0D 20 42 4E |INT. CMP #64. BN|
00000550: 45 20 53 41 56 45 4D 4E 0D 3B 0D 3B 20 45 4E 44 |E SAVEMN.;.; END|
00000560: 20 43 4F 4D 50 52 45 53 53 0D 3B 0D 20 4A 53 52 | COMPRESS.;. JSR|
00000570: 20 4E 4D 41 54 43 48 0D 46 49 4E 49 53 48 20 4A | NMATCH.FINISH J|
00000580: 4D 50 20 43 4C 52 43 48 4E 0D 3B 0D 50 55 54 4F |MP CLRCHN.;.PUTO|
00000590: 55 54 20 4C 44 41 20 42 59 54 45 0D 20 43 4D 50 |UT LDA BYTE. CMP|
000005A0: 20 4F 4C 44 42 59 54 0D 20 42 4E 45 20 4E 4D 41 | OLDBYT. BNE NMA|
000005B0: 54 43 48 0D 20 49 4E 43 20 4E 55 4D 0D 20 42 4E |TCH. INC NUM. BN|
000005C0: 45 20 52 45 54 52 4E 0D 20 44 45 43 20 4E 55 4D |E RETRN. DEC NUM|
000005D0: 0D 20 4A 4D 50 20 4E 4F 54 32 0D 52 45 54 52 4E |. JMP NOT2.RETRN|
000005E0: 20 52 54 53 0D 3B 0D 4E 4D 41 54 43 48 20 4C 44 | RTS.;.NMATCH LD|
000005F0: 41 20 4E 55 4D 0D 20 43 4D 50 20 23 31 0D 20 42 |A NUM. CMP #1. B|
00000600: 4E 45 20 4E 4F 54 31 0D 20 4A 53 52 20 53 45 4E |NE NOT1. JSR SEN|
00000610: 44 0D 20 52 54 53 0D 3B 0D 4E 4F 54 31 20 43 4D |D. RTS.;.NOT1 CM|
00000620: 50 20 23 32 0D 20 42 4E 45 20 4E 4F 54 32 0D 20 |P #2. BNE NOT2. |
00000630: 4A 53 52 20 53 45 4E 44 0D 20 4A 53 52 20 53 45 |JSR SEND. JSR SE|
00000640: 4E 44 0D 20 4C 44 41 20 23 31 0D 20 53 54 41 20 |ND. LDA #1. STA |
00000650: 4E 55 4D 0D 20 52 54 53 0D 3B 0D 4E 4F 54 32 20 |NUM. RTS.;.NOT2 |
00000660: 4C 44 41 20 23 32 35 34 0D 20 4A 53 52 20 43 48 |LDA #254. JSR CH|
00000670: 52 4F 55 54 0D 20 4C 44 41 20 4F 4C 44 42 59 54 |ROUT. LDA OLDBYT|
00000680: 0D 20 4A 53 52 20 43 48 52 4F 55 54 0D 20 4C 44 |. JSR CHROUT. LD|
00000690: 41 20 4E 55 4D 0D 20 4A 53 52 20 43 48 52 4F 55 |A NUM. JSR CHROU|
000006A0: 54 0D 20 4C 44 41 20 23 31 0D 20 53 54 41 20 4E |T. LDA #1. STA N|
000006B0: 55 4D 0D 20 52 54 53 0D 3B 0D 53 45 4E 44 20 4C |UM. RTS.;.SEND L|
000006C0: 44 41 20 4F 4C 44 42 59 54 0D 20 43 4D 50 20 23 |DA OLDBYT. CMP #|
000006D0: 32 35 34 0D 20 42 4E 45 20 4E 4F 54 32 35 34 0D |254. BNE NOT254.|
000006E0: 20 4A 53 52 20 43 48 52 4F 55 54 0D 20 4C 44 41 | JSR CHROUT. LDA|
000006F0: 20 23 32 35 34 0D 20 4A 53 52 20 43 48 52 4F 55 | #254. JSR CHROU|
00000700: 54 0D 20 4C 44 41 20 23 31 0D 4E 4F 54 32 35 34 |T. LDA #1.NOT254|
00000710: 20 4A 53 52 20 43 48 52 4F 55 54 0D 20 52 54 53 | JSR CHROUT. RTS|
00000720: 0D 3B 0D 45 4E 44 20 2E 45 4E 44 0D |.;.END .END. |
; COMPILE/UNCOMPILE PICTURES.; BY DAVID
STIDOLPH.;.; COMPRESSOR/DECOMPRESSOR.; F
ROM ARTICLE BY CHRIS ZAMARA.; TRANS
ACTOR -- VOLUME 6, ISSUE 4.;
JAN. 1986.;.; CODE FOR COMAL, WR
ITTEN BY.; DAVID STIDOLP
H.;.CHKIN = $FFC6.CHKOUT = $FFC9.CHRIN =
$FFCF.CHROUT = $FFD2.CLRCHN = $FFCC.POI
NT = $A8. * = $C000. JMP LOADCD. JMP SAV
ECD.FILNUM .BYT 0.BYTE .BYT 0.OLDBYT .BY
T 0.LAST .BYT 0.NUM .BYT 0.;.LOADCD LDX
FILNUM. JSR CHKIN. LDA #$00. STA POINT.
LDA #$E0. STA POINT+1.;.MAINLD JSR CHRIN
. CMP #254. BNE NORMAL. JSR CHRIN. STA B
YTE. JSR CHRIN. STA NUM. LDY #00.NEXT LD
A BYTE. STA (POINT),Y. JSR INCRCV.DECNUM
DEC NUM. BNE NEXT. JMP MAINLD.;.NORMAL
LDY #00. STA (POINT),Y. JSR INCRCV. JMP
MAINLD.;.INCRCV INC POINT. BNE NOTR1. IN
C POINT+1.NOTR1 LDA POINT+1. CMP #255. B
NE NTENDR. LDA POINT. CMP #64. BNE NTEND
R. PLA. PLA. JMP CLRCHN.NTENDR RTS.;.; C
OMPACTOR FOR COMAL 2.0.;.SAVECD LDX FILN
UM. JSR CHKOUT.;. LDA #$00. STA POINT. L
DA #$E0. STA POINT+1.;. SEI. LDA 1. AND
#%11111101. STA 1. LDY #0. LDA (POINT),Y
. STA BYTE. LDA 1. ORA #%00000010. STA 1
. CLI. LDA #1. STA POINT. STA NUM.;.SAVE
MN LDY #00. LDA BYTE. STA OLDBYT. SEI. L
DA 1. AND #%11111101. STA 1. LDA (POINT)
,Y. STA BYTE. LDA 1. ORA #%00000010. STA
1. CLI. JSR PUTOUT. INC POINT. BNE NOTN
OW. INC POINT+1.NOTNOW LDA POINT+1. CMP
#$FF. BNE SAVEMN. LDA POINT. CMP #64. BN
E SAVEMN.;.; END COMPRESS.;. JSR NMATCH.
FINISH JMP CLRCHN.;.PUTOUT LDA BYTE. CMP
OLDBYT. BNE NMATCH. INC NUM. BNE RETRN.
DEC NUM. JMP NOT2.RETRN RTS.;.NMATCH LD
A NUM. CMP #1. BNE NOT1. JSR SEND. RTS.;
.NOT1 CMP #2. BNE NOT2. JSR SEND. JSR SE
ND. LDA #1. STA NUM. RTS.;.NOT2 LDA #254
. JSR CHROUT. LDA OLDBYT. JSR CHROUT. LD
A NUM. JSR CHROUT. LDA #1. STA NUM. RTS.
;.SEND LDA OLDBYT. CMP #254. BNE NOT254.
JSR CHROUT. LDA #254. JSR CHROUT. LDA #
1.NOT254 JSR CHROUT. RTS.;.END .END.
×
C64 Image
> CLICK IMAGE PREVIEW FOR FULL MODAL