[ 53280,0:53281,0:646,(162):"":" USE LYNX TO DISSOLVE THIS FILE":10 2 *STAR LYNX 0.80 JOE/STA 7 /CRT509 14 P 52 CRT.ASM 72 S 3 CRT1.ASM 8 S 177 CRT2.ASM 6 S 240 CRT.ADR 4 S 149 ADDRESS.KERNAL 3 S 126 CRT.DOC 4 S 121  2072 TIME/DAVEx7-. L%  ,) i ㅋ8勅      ii  ee8 勅` *&`ܤ֩7X YHsHL ѯ62#qV3(tpNh:tIu&et =iꨄ tuְ5qrcufC% tޭ(`uξB;a J%] >  YiQeqqrЕ`qz΢(` ^-Tef@` c_ Fxᖈe:n/0F@Io0 MT l@Ls$P ,߫B e/e0()+ʎ>?xܐ + +)(?%:;̔8aC0 SP [O¢!yA| k+Ů寐 AK$0) S`=\GY N" x @Nx9DaEA/& I/*I @ L HH8A Y )FqHrh"Р%ِ ڎ A2E)("}Ív  qr%8g@(  E!8hh`ƮH匪hL H HJJ h)PAii0 a L ! `pYi(Lʆ `Cs z &]D S'  :^8C} CJ; >><A.H=8&5 | |hz`ݥLK"F0/"Τ<!j1LhZL"ZWۉ @J 8c1 I Т ` ڙS8fב` `[Aݩ L L@A `RELEA$xBEGK`7G)(::)@jE'0A? (Y/N)  iBC؉NDf... B 2072 T/Df"xA&7؊@-.Lx.% t`T`,!)dE٥8)`/|kxb!@,  ,ii  ee8 勅/`{ *&`ܤ֓+IX YHsHL%c+X5.09Jd p8m0CH`xsPA& tIMf$bRwRA$1,08$-ff(vHIG˜ qABAs242hbD8qGIVZEMP NAMJDZdosДHELLGEb# I)x,X%X-qBē P&L?8H h8/ s i% ~n6@1ƒ.@BpL @  5`} L 8 /0`/0Ll12U Ƅ̄@@с lHU3 hߑRĈ qQ1j,Ɔ̪n2p-8` d-40: AGi 0ӢD)ө-1б`$1 ~B 8*1`80 Y`3[Hx8  ̴PůŮ6; h(L!vXLt CHECKSUM ERROR7fD HehE``fl`8tu4!"`\' o ϥH h0`/ @_,̆Ǝe > )e` &ߝMcL L0CP$Ḟbp KJ lIp<Ƴ'" ת?%<P$p@ ͽ ? U |+Ì} Ls `NTEu COMMAND Cs$ Fz DIp CRY (P1SS TO RETURN) ; *** TIME CRUNCHER 5.09 * ; *** WRITTEN BY DAVE - 9511 ; .NOL ; .LIB CRT.ADR .LIB ADDRESS.KERNAL ; SS00 = $0053 D001 = $1F D002 = $27 D003 = $3C D004 = $70 D005 = $73 D006 = $88 D007 = $92 D008 = $C2 D009 = $CD D010 = $D8 D011 = $D9 D012 = $DA D013 = $DB D014 = $DC D015 = $DD D016 = $DE ; DELAY = $10 ; ; ; * = $0800 ; .BYT 0,$0C,$08 .WOR 509 .BYT $9E,' 2062' .BYT 0,0,0 ; ENTRY = * JMP ENTRY2 ; .BYT 'V3' ; ; ////// * = $0002 ; ZZ = *-2 ZPGORG = * L1A30 STA D002+1 STX D005+1 TXA SBC D004+1 TAX LDA D005+2 SBC D004+2 BEQ *+4 LDX #$FF LDY #$00 C1A31 INY DEX BEQ L1A32 LDA (D004+1),Y CMP (D005+1),Y BEQ C1A31 L1A32 DEY Z001 = * CPY #$00 ;< 01+1 BCC L1A33 BNE L1A35 L1A33 LDX D005+1 Z002 = * C1A34 LDA #$00 ;< 02+1 LDY #$00 STY D005+1 BEQ C1A05 L1A35 LDX D005+2 INX BNE L1A36 TYA ADC D005+1 BCC L1A36 STA D003+1 TYA Z003 = * SBC #$FF ;< 03+1 CMP D001+1 BCC L1A33 TAY L1A36 STY D001+1 LDX D005+1 LDA D005+2 STX D006+1 STA D007+1 CPY #$FE BCC C1A34 BCS L1A07 ;>>> ; ; ; === ZS00 = * C1A00 LDX D004+1 LDY D004+2 INX BNE L1A01 INY BEQ L1A21 L1A01 STY D005+2 DEC XFF BNE *+5 JSR UPDATE LDA #$00 STA D001+1 STA D005+1 D1A02 LDA #$00 ;<(2^STEP*2) STA D016 Z004 = * D1A03 LDA $FF00 ;<< 04+1+2 Z005 = * C1A04 CMP $FF00,X ;<< 05+1+2 BEQ L1A30 C1A05 INX BNE C1A04 INC D005+2 BEQ L1A06 DEC D016 BNE C1A04 L1A06 LDY D001+1 BEQ L1A22 SEC Z006 = * L1A07 LDA #$00 ;< 06+1 SBC D001+1 PHP CLC SBC D004+1 STA D012 Z007 = * LDA #$00 ;< 07+1 SBC D004+2 PLP SBC #$00 STA D013 CPY #$02 BCS L1A08 TAX BNE L1A20 JSR S1P00 BNE L1A10 L1A08 BNE L1A09 JSR S1L00 BEQ L1A10 L1A09 JSR S1N00 L1A10 LDA D001+1 C1A11 SEC ADC D004+1 STA D004+1 BCC C1A00 INC D004+2 BNE C1A00 RTS ; L1A20 DEY L1A21 LDA (D004+1),Y Z008 = * L1A22 STA $FFFF ;<< 08+1+2 INC D008+1 BNE *+4 INC D008+2 INC D009+1 Z009 = * LDX #$00 ;< 09+1 INX BNE *+5 JSR S1K00 TYA BEQ C1A11 ; Z010 = * .BYT $08 ; < 10+1 Z011 = * .BYT 0 ; < 11+1 Z012 = * .BYT 0 ; < 12+1 Z013 = * .BYT 0 ; < 13+1 Z014 = * .BYT 0 ; < 14+1 Z015 = * .BYT 0 ; < 15+1 Z016 = * .BYT 0 ; < 16+1 ; * = ZPGORG+$00FE ; ; ; ; ; ------ LOAD ; L1B00 LDA LOADLN LDX #LOADNM JSR SETNAM LDA #$08 TAX LDY #$60 JSR DERROR BEQ *+5 JMP ENTRY2 ;>>>>> LDA FA JSR TALK LDA SA JSR TKSA LDX #POSX8A LDY #POSY8A CLC JSR PLOT LDX #LOADL LDA #LOADH STX XFB STA XFC JSR CHKINI ; JSR ACPTR STA X2F JSR ACPTR STA X30 LDX #$01 LDY #$00 C1B10 DEX BNE *+7 JSR HEXOLD LDX #$40 JSR ACPTR SEI INC $01 STA (XFB),Y DEC $01 JSR CHECKB INC XFB BNE L1B11 INC XFC BNE L1B11 JSR CLOSE2 LDX #16 JMP $A473 ;HALT >> L1B11 BIT STATUS BVC C1B10 ; JSR HEXOLD JSR UNTLK JSR CLOSE2 JSR CHKSTO ; SEC ; X/Y=FB/FC-LOADL/H+2F/30 LDA XFB SBC #LOADL PHP CLC ADC X2F TAX LDA XFC ADC X30 PLP SBC #LOADH TAY STX D2AD1+1 STY D2AD2+1 DEX ; X/Y=X/Y-1 STX D2BD6 INX BNE *+3 DEY STY D2BD7 ; ; ------ CRUNCH ; SEI LDA #$7F STA $DC00 INC $01 JSR S1G00 JSR S1H00 DEC $01 CLI LDA #$1B STA $D011 LDA #$00 STA $D020 ; LDX #POSX8B JSR CLRLN LDX #POSX8C JSR CLRLN LDX #POSX8D JSR CLRLN ; ; ------ SAVE ; C1D00 LDA $DC05 ;IRQ TIMERH CMP #$3F BCC C1D00 LDA SHFLAG BEQ L1D10 LDA #TEXT9A LDX #POSY9A JSR WRITE C1D01 LDA SHFLAG BNE C1D01 JSR CLRLN2 ; L1D10 LDA #TEXT9B LDX #POSY9B JSR WRITE ; LDA SAVELN LDX #SAVEPF JSR SETNAM LDA #$61 STA SA JSR OPEN2 LDA FA JSR LISTEN LDA SA JSR SECOND LDA #DECRUN STA X8C LDA #$01 JSR CIOUT LDA #$08 JSR CIOUT LDX #$01 LDY #$00 C1D20 DEX BNE *+7 JSR HEXSAV LDX #$21 SEI INC $01 LDA (X8B),Y DEC $01 JSR CIOUT INC X8B BNE *+4 INC X8C LDA X8B CMP $AE LDA X8C SBC $AF BCC C1D20 JSR HEXSAV JSR UNLSN BIT SA BMI L1D21 LDA FA JSR LISTEN LDA SA AND #$EF ORA #$E0 JSR SECOND JSR UNLSN L1D21 CLI ; JSR CLRLN2 LDA #TEXT9C LDX #POSY9C JSR WRITE LDA #0 STA NDX C1D30 JSR GETIN CMP #'Y' BNE L1D31 JSR CLRLN2 JMP L1D10 ;>>>^ L1D31 CMP #'N' BNE C1D30 ; ; ------ RUN ; LDA #TEXT9D JSR WRTTXT JSR CHKWDG SEI INC $01 LDY #RUNLEN C1E00 LDA C1F00-1,Y STA $00FF,Y DEY BNE C1E00 JMP $0100 ;... ; ; ($0100-) Z1F = *-$0100 Z1F00 = *-Z1F C1F00 LDA DECRUN-1,Y ;RUN Z1F01 = *-Z1F D1F01 STA $0800,Y INY BNE C1F00 INC Z1F01+2 INC Z1F00+2 BNE C1F00 DEC $01 CLI JSR $A659 JMP $A7AE RUNLEN = *-C1F00 ; ; ; === WRITE OLD HEXOLD = * SEC LDA XFB SBC #LOADL PHA LDA XFC SBC #LOADH TAX LDA #POS18A STA PNTR PLA JMP HEXOUT ; ; === UPDATE SCREEN DATA UPDATE = * TXA PHA TYA PHA DEC $01 ; LDA $DC01 ;SPACE? EOR #$FF BNE UPD0 STA UPD0+1 BEQ UPD1 ;>>> ; UPD0 LDA #$00 ;< BNE UPD1 ;STILL PRESSED ; LDA UPD1+1 ;TOGGLE STA $D011 EOR #$1B STA UPD1+1 STA $D020 INC UPD0+1 ; UPD1 LDA #$00 ;< BEQ HEXNW2 JMP HEXNW3 ; ; === WRITE NEW HEXNEW = * TXA PHA TYA PHA DEC $01 HEXNW2 = * LDA #$38 ;SEC STA DHX10 ; LDA #$03 ;CYA STA COLOR LDA #POS18B LDX #POSD8B STA LHX20+1 STX DHX21+1 STY DHX21+2 LDY #>POSC8B STX DHX22+1 STY DHX22+2 SEC ; TO DO LDA #0 SBC D004+1 PHA LDA #0 SBC D004+2 TAX PLA JSR HEXOUT ; LDA #POS38A LDX #POSD8A STA LHX20+1 STX DHX21+1 STY DHX21+2 LDY #>POSC8A STX DHX22+1 STY DHX22+2 SEC ; NEW LDA D008+1 SBC #DECRUN TAX STX DHN23+1 PLA STA DHN21+1 JSR HEXOUT ; LDA #POS28A STA LHX20+1 LDY D004+1 LDX D004+2 INY BNE *+3 INX SEC ;GAIN TYA DHN20 SBC #$00 ;>> ; LHX20 = * LDY #$00 ;< DHX21 STA $0000,Y ;<< LDA COLOR DHX22 STA $0000,Y ;<< INC LHX20+1 RTS ; ; ; ====== CRUNCH PART 1 S1G00 LDY #$00 TYA ; FD/FE=0000-(FB/FC-LOADL/H) SEC SBC XFB PHP CLC ADC #LOADL STA XFD TYA ADC #LOADH PLP SBC XFC STA XFE ; LDA XFB ; COPY INTO HIGH LDX XFC STA X02 C1G10 DEX STX X03 DEC D1G12+2 C1G11 LDA (X02),Y D1G12 STA $0000,Y INY BNE C1G11 CPX #LOADH BCS C1G10 RTS ; ; ; ====== CRUNCH PART 2 S1H00 LDA XFD LDX XFE STA D1A03+1 STX D1A03+2 STA DHN20+1 STX DHN22+1 LDA #PROG STA L1A22+1 STX L1A22+2 JSR SWAP ; - - - ; LDA #$01 STA XFF JSR SS00 JSR S1K01 JSR HEXNEW ; LDA D011 STA D2BD2 ; LDA #$08 SEC SBC D010 BNE L1H20 LDA D008+1 BNE *+4 DEC D008+2 DEC D008+1 LDA #$08 L1H20 STA D2BD3 ; CLC LDA D008+1 PHA SBC #LSTBYT STA D2BD5 ; SEC LDA D008+1 SBC #PROG-1 STA D2AD3+1 ; JSR SWAP ; - - - PLA STA EAL+1 PLA STA EAL RTS ; ; ; === SWAP MEM/0PAGE SWAP LDX #$02 C0CAA LDA $00,X LDY ZPGORG-2,X STY $00,X STA ZPGORG-2,X INX BNE C0CAA RTS ; ; === S1K00 INC D015 S1K01 LDA D009+1 CMP #$06 BCS L1K02 LDX #$00 STX D009+1 LDX #$03 BNE S1M01 L1K02 SBC #$06 CMP #$10 BCS L1K03 LDX #$04 JSR S1M01 STX D009+1 CLC JSR S1P10 LDA #$03 BNE S1M00 L1K03 LDX #$08 JSR S1M01 STX D009+1 SEC JSR S1P10 LDA #$03 BNE S1M00 ; ; === S1L00 JSR S1Q00 LDA D012 LDX #$08 LDY D013 BNE L1L01 JSR S1M01 CLC BCC L1L03 L1L01 JSR S1M01 LDA D013 D1L02 LDX #$08 JSR S1M01 SEC L1L03 JSR S1P10 TXA ; ... ; ; === S1M00 LDX #$02 S1M01 ROR A ROR D011 DEC D010 BNE L1M02 STA D014 LDA D011 LDY #$00 STA (D008+1),Y LDA #$08 STA D010 LDA D014 INC D008+1 BNE L1M02 INC D008+2 L1M02 DEX BNE S1M01 RTS ; ; === S1N00 JSR S1Q00 LDA D012 LDX #$08 LDY D013 BNE L1N10 JSR S1M01 CLC BCC L1N12 ;>>> ; L1N10 JSR S1M01 LDA D013 D1N11 LDX #$08 JSR S1M01 SEC L1N12 JSR S1P10 LDA D001+1 SEC SBC #$03 CMP #$10 BCS L1N20 LDX #$04 JSR S1M01 CLC BCC L1N21 ;>>> ; L1N20 LDX #$08 JSR S1M01 SEC L1N21 JSR S1P10 LDA #$01 BNE S1M00 ; ; === S1P00 JSR S1Q00 LDA D012 LDX #$08 JSR S1M01 SEC S1P10 ROR D011 DEC D010 BNE L1P11 LDA D011 LDY #$00 STA (D008+1),Y LDA #$08 STA D010 INC D008+1 BNE L1P11 INC D008+2 L1P11 RTS ; ; === S1Q00 JSR S1K01 LDA D015 BNE *+3 RTS ;>>>>> LDX #$04 JSR S1M01 STX D015 LDA #$FD LDX #$08 JSR S1M01 LDA #$07 LDX #$03 JMP S1M01 ;>>> ; ; ; ; === WRITE TEXT (A/Y, X TAB;) WRITE STX PNTR JMP WRTTXT ; ; === CLEAR SCREEN LINE (X;Z=0) CLRLN STX TBLX JSR SCRLIN CLRLN2 = * LDY #39 LDA #' ' C0CLL STA (PNT),Y DEY BPL C0CLL RTS ; ; POSX9A = 22 POSY9A = 3 TEXT9A = * .BYT $05,'RELEASE ',$73,'HIFT ' .BYT $6C,'OCK TO BEGIN SAVING!',0 ; POSX9B = 21 POSY9B = 10 TEXT9B = * .BYT $9E,'SAVING... ',$1E,'(' POS19B = *-TEXT9B-2+POSY9B .BYT '::::)',0 ; POSX9C = 21 POSY9C = 8 TEXT9C = * .BYT $9E,$12,' SAVE AGAIN? (Y/N) ',$92,0 ; TEXT9D = * .BYT $1E,$93,$09,$8E,'CHECKING AND RUNNING...',$0D,0 ; ; ; ; .LIB CRT1 ; LOADL = $01 LOADH = >PROG+1 LSTBYT = PROG-$07E8 ; ; ; ------------------------------------- ; ; POSX1A = 1 POSY1A = 10 TEXT1A = * .BYT $08,$0E,$11,$9E,$12,' ',$74,'IME ' .BYT $63,'RUNCHER 5.09 ',$0D,0 ; POSX1B = 2 POSY1B = 16 TEXT1B = * .BYT $99,' BY ',$64,'AVE ',$0D .BYT $1E,' THANKS TO ',$6D,'ATCHAM AND ' .BYT $73,'LOAT & ',$74,'IM',$0D,$0D .BYT ' MEMORY RANGE FOR PROCESS: 0800-' .BYT $66,$66,$66,$66,$0D .BYT ' HIGHEST LENGTH AVAILABLE: 242 BLOCKS',$0D,$0D,0 ; POSX2A = 9 POSY2A = 5 TEXT2A = * .BYT $1E,'SOURCE FILE: ',0 ; POSX2B = 11 POSY2B = 5 TEXT2B = * .BYT $11,$11,$1F,'(GIVE EMPTY NAME FOR ' .BYT $64,$6F,$73,' SHELL)',0 ; POSX3A = 10 POSY3A = 5 TEXT3A = * .BYT $1E,'TARGET FILE: ',0 ; POSX3B = 12 POSY3B = 1 TEXT3B = * .BYT $11,$11,$1F,'(DON',$27,'T USE [@:] PREFIX, IT' .BYT $27,'S INCLUDED)',0 ; POSX4A = 12 POSY4A = 6 TEXT4A = * .BYT $1E,'START MODE: ' POS14A = *-TEXT4A-1+POSY4A .BYT $72,'UN' POS24A = *-TEXT4A-1+POSY4A .BYT '/',$73,'YS',$9F,0 ; POSX4B = 12 POSY4B = POS14A TEXT4B = * .BYT $9F,'RUN ',0 ; POSX4C = 12 POSY4C = 6 TEXT4C = * .BYT $1E,'START ADDRESS: $' POS14C = *-TEXT4C-1+POSY4C .BYT $9F,'---- ',0 ; POSX5 = 13 POSY5 = 3 TEXT5 = * .BYT $1E,'$0001 INIT VALUE: $' .BYT $9F,'37' POS15 = *-TEXT5-2+POSY5 .BYT ' ',0 ; POSX6A = 15 POSY6A = 6 TEXT6A = * .BYT $1E,'STEP (0-7): ',0 ; POSX6B = 17 POSY6B = 4 TEXT6B = * .BYT $11,$11,$1F,'(TYPE X IF 2^XTEXT1A LDX #POSY1A JSR WRITE LDA #TEXT1B LDX #POSY1B JSR WRITE ; ; --- SOURCE SOURCE = * LDX #POSX2A JSR CLRLN LDA #TEXT2A LDX #POSY2A JSR WRITE JSR GETCUR LDA #TEXT2B LDX #POSY2B JSR WRITE JSR SETCUR LDA #LOADNM JSR GETNAM BNE L0B00 JSR DOSCMD JMP ENTRY2 ;>>>^ ; L0B00 STA LOADLN PHP LDX #POSX2B JSR CLRLN PLP BCC TARGET LDX #POSX2A JSR CLRLN LDA #5 ;GRN STA COLOR STA GDCOL LDA #$09 JSR CHROUT JMP HALT ;>>>>> ; ; --- TARGET TARGET = * LDX #POSX3A JSR CLRLN LDA #TEXT3A LDX #POSY3A JSR WRITE JSR GETCUR LDA #TEXT3B LDX #POSY3B JSR WRITE C0C00 JSR SETCUR LDA #SAVENM JSR GETNAM BCS *+4 BEQ C0C00 ; >>> ; PHP CLC ADC #2 STA SAVELN LDX #POSX3B JSR CLRLN PLP BCC STADDR LDX #POSX3A JSR CLRLN JMP SOURCE ; ; --- START ADDRESS STADDR = * LDX #POSX4A JSR CLRLN LDA #TEXT4A LDX #POSY4A JSR WRITE LDA #POS24A STA PNTR LDA #0 STA BLNSW ; C0D00 JSR GETIN CMP #$03 ;STOP BNE *+10 INC BLNSW JSR CLRLN2 JMP TARGET ;>>>^ CMP #'S' BEQ L0D10 CMP #'R' BNE C0D00 ; INC BLNSW ; RUN LDA #TEXT4B LDX #POSY4B JSR WRITE LDA #$37 STA D2GD1+1 LDA #$20 ;JSR STA D2GD3 LDA #$8D ;STA STA D2GD4 LDA #<$A7AE LDX #>$A7AE STA D2GD5+1 STX D2GD5+2 LDA #0 STA ZERONE+1 JMP L0E00 ;>>> ; L0D10 INC BLNSW ; SYS JSR CLRLN2 LDA #TEXT4C LDX #POSY4C JSR WRITE LDA #POS14C STA PNTR LDX #4 STX ZERONE+1 LDA #0 JSR GETHEX BCS STADDR STA D2GD5+1 STX D2GD5+2 LDA #$2C ;BIT STA D2GD3 STA D2GD4 ; ; --- $01 ZERONE = * LDA #00 ;>>^ LDX #POSX5 JSR CLRLN LDA #TEXT5 LDX #POSY5 JSR WRITE LDA #POS15 STA PNTR LDX #2 TXA JSR GETHEX BCC *+8 JSR CLRLN2 JMP STADDR ;>>>^ STX D2GD1+1 TXA AND #$03 CMP #$02 BCS L0E00 LDA #$78 ;SEI .BYT $2C ;BIT L0E00 = * LDA #$58 ;CLI STA D2GD2 ; ; --- STEP STEP = * LDX #POSX6A JSR CLRLN LDA #TEXT6A LDX #POSY6A JSR WRITE JSR GETCUR LDA #TEXT6B LDX #POSY6B JSR WRITE JSR SETCUR LDA #0 STA BLNSW ; C0F00 JSR GETIN CMP #$03 ;STOP BNE L0F01 INC BLNSW JSR CLRLN2 LDX #POSX6B JSR CLRLN JMP ZERONE ;>>>^ L0F01 CMP #'0' BCC C0F00 CMP #'8' BCS C0F00 PHA INC BLNSW JSR CHROUT LDX #POSX6B JSR CLRLN PLA ; SEC SBC #$2F ;'0'->1 TAX STA D1L02+1 STA D1N11+1 CLC ADC #$07 STA D2GD7+2 LDA #$01 C0F10 ASL A DEX BNE C0F10 STA D1A02+1 ; ; --- CONTINUE? CONT = * LDA #TEXT7 LDX #POSY7 JSR WRITE C0G00 LDA LSTX CMP #$40 BCC C0G00 LDA #0 STA NDX C0G01 JSR GETIN CMP #$03 ;STOP BNE *+8 JSR CLRLN2 JMP STEP ;>>>^ CMP #' ' BNE C0G01 ; JSR CLRLN2 LDA #TEXT8A LDX #POSY8A JSR WRITE LDA #TEXT8B LDX #POSY8B JSR WRITE LDA #TEXT8C LDX #POSY8C JSR WRITE LDA #TEXT8D LDX #POSY8D JSR WRITE ; JSR CSCOPY JMP L1B00 ; ; ; === GET CURSOR POS GETCUR = * SEC JSR PLOT STX X2F STY X30 RTS ; ; === SET CURSOR POS SETCUR = * LDX X2F LDY X30 CLC JMP PLOT ; ; ====== ENTER FILENAME (A/X;A,C,Z) GETNAM STA X31 STX X32 LDA #3 ;CYAN STA COLOR LDY #$00 STY NDX STY BLNSW CGN00 STY X8D CGN01 JSR GETIN LDY X8D CMP #$03 BNE *+6 INC BLNSW SEC RTS ;>>>>> CMP #$14 ;DEL BEQ LGN10 CMP #$0D ;RET BEQ LGN20 CPY #16 BEQ CGN01 PHA AND #$7F CMP #' ' PLA BCC CGN01 STA (X31),Y INY LGN02 JSR CHROUT JMP CGN00 ; LGN10 DEY ; DEL BPL LGN02 INY BPL CGN01 ;>>> ; LGN20 INC BLNSW ; RET JSR SPACE LDA X8D CLC RTS ; ; ====== ENTER HEX VALUE (A,X;A/X,C) GETHEX STX X31 LDX #$00 STX NDX STX BLNSW TAX CGH00 STX X8D CGH01 JSR GETIN STA X32 LDX X8D CMP #$03 BNE *+6 INC BLNSW SEC RTS ;>>>>> CMP #$14 ;DEL BEQ LGH10 CMP #$0D ;RET BEQ LGH20 CPX X31 BEQ CGH01 CMP #'0' BCC CGH01 CMP #':' BCC LGH02 CMP #'A' BCC CGH01 CMP #'G' BCS CGH01 ADC #$20 LGH02 JSR CHROUT INX BNE CGH00 ; LGH10 DEX ; DEL BMI CGH01 INC BLNSW LDY PNTR LDA (PNT),Y AND #$7F STA (PNT),Y DEY STY PNTR LDA #'-' STA (PNT),Y DEC BLNSW BEQ CGH00 ;>>> ; LGH20 CPX X31 ; RET BNE CGH01 INC BLNSW JSR SPACE LDA PNTR CLC ;-1 SBC X31 TAY JSR SGH30 TAX ; ... ; === SGH30 = * LDA (PNT),Y JSR HXCNV ASL A ASL A ASL A ASL A STA X31 INY LDA (PNT),Y JSR HXCNV ORA X31 INY CLC RTS ; ; === HEX CONV (A;A) HXCNV = * SEC SBC #$30 CMP #$0A BCC *+4 SBC #$07 RTS ; ; ; ====== COPY CHECKSUM MODULE CSCOPY = * LDY #CSLEN CCS0 LDA CHECK-1,Y STA ZCHECK-1,Y DEY BNE CCS0 RTS ; ; ////////// $0334 ////////// ZCH = *-$0334 CHECK = * ZCHECK = *-ZCH PHP LDA $01 PHA SEI LDA #$38 STA $01 ; JSR CHKINI LDY #0 BEQ LCH1 CCH0 LDA (XFE),Y JSR CHECKB LCH1 INC XFE BNE *+4 INC XFF LDA XFF CMP EAL+1 BNE CCH0 LDA XFE CMP EAL BNE CCH0 ; DEC $01 LDA CHKSM0 ZCH10 = *-ZCH CMP #00 ;< BNE LCH2 LDA CHKSM1 ZCH11 = *-ZCH CMP #00 ;< BNE LCH2 LDA CHKSM2 ZCH12 = *-ZCH CMP #00 ;< BNE LCH2 ; PLA STA $01 PLP ZCH13 = *-ZCH JMP $0000 ;<< ; ; LCH2 LDA #TXCH JSR WRTTXT CLI JMP HALT ; TXCH = *-ZCH .BYT $0D,$05,'CHECKSUM ERROR',$0D,$1E,0 ; ; === CHECKSUM INIT CHKINI = *-ZCH LDA #0 STA CHKSM0 STA CHKSM1 STA CHKSM2 RTS ; ; === CHECK CHECKB = *-ZCH PHA CLC ADC CHKSM0 STA CHKSM0 BCC *+4 INC CHKSM1 PLA EOR CHKSM2 STA CHKSM2 RTS ; ; === STORE CHECKSUM CHKSTO = *-ZCH LDA CHKSM0 STA ZCH10+1 LDA CHKSM1 STA ZCH11+1 LDA CHKSM2 STA ZCH12+1 RTS ; ; === CHECKSUM WEDGE CHKWDG = *-ZCH LDA D2GD5+1 LDX D2GD5+2 STA ZCH13+1 STX ZCH13+2 LDA #ZCHECK STA D2GD5+1 STX D2GD5+2 RTS ; ; ====== DISK ERROR CHECKING DERROR = *-ZCH JSR SETLFS JSR OPEN2 LDA FA JSR TALK LDA #$6F JSR TKSA JSR ACPTR PHA JSR UNTLK PLA CMP #'0' RTS ; CSLEN = *-CHECK ; ; ; LOADLN .BYT 0 LOADNM .WOR 0,0,0,0,0,0,0,0 ; ; ; .LIB CRT2 ; ; .LIS .WOR PROG .BYT LOADL,LOADH .BYT CSLEN .NOL ;; ZERO PAGE ;.WOR ZS00-ZZ ;.WOR Z001-ZZ ;.WOR Z002-ZZ ;.WOR Z003-ZZ ;.WOR Z004-ZZ ;.WOR Z005-ZZ ;.WOR Z006-ZZ ;.WOR Z007-ZZ ;.WOR Z008-ZZ ;.WOR Z009-ZZ ;.WOR Z010-ZZ ;; ... ;.WOR Z016-ZZ .NOL ; ; .END ; *** TIME CRUNCHER 5.09 - DECRUNCHER ; .NOL ; ; ; .BYT 0 ; DECRUN = * ; .BYT $16,$08 .WOR 509 .BYT $9E,' 2072 TIME/DAVE' .BYT 0,0,0 ; SEI LDX #$FF TXS C2A00 LDA Z00F8-1,X .BYT $9D,$F8,$00 ;STA $00F8,X DEX BNE C2A00 STX $01 D2AD1 LDA #$00 D2AD2 LDY #$00 STA VARTAB STY VARTAB+1 STA EAL STY EAL+1 D2AD3 LDY #$00 JMP L0100 ; ; ; Z00F8 = *-DECRUN+$0801 D2BD1 .BYT 0 ;F9 D2BD2 .BYT 0 ;FA D2BD3 .BYT 0 ;FB D2BD4 .BYT 0 ;FC D2BD5 .BYT 0 ;FD D2BD6 .BYT 0 ;FE D2BD7 .BYT 0 ;FF ; DECR = * L0100 = $0100 DIST = DECR-L0100 ; ; ------ PART 1 Z0100 = *-DIST C2C00 LDA PROG09,X Z0103 = *-DIST STA $07E8,X INX BNE C2C00 INC Z0100+2 INC Z0103+2 DEY BNE C2C00 ; ; ; ------ PART 2 C2D00 LDX #$02 JSR S2F01 BEQ L2D02 CMP #$06 BCC L2D01 AND #$01 TAY JSR S2F00 ADC #$06 BCC L2D01 TAX JSR S2F01 STA XF9 BPL C2D00 ; L2D01 STA X8B LDA XFC SEC SBC X8B STA XFC STA X8C LDA XFD SBC #$00 STA XFD STA X8D JSR S2E00 L2D02 LDX XF9 BEQ L2D03 DEC XF9 BPL C2D00 L2D03 JSR S2F01 BEQ L2D04 JSR S2F00 LDX #$02 STX X8B BCC L2D06 L2D04 INX JSR S2F01 BEQ L2D05 INX JSR S2F01 JSR S2F00 ADC #$01 L2D05 ADC #$03 STA X8B INX JSR S2F01 INY JSR S2F00 L2D06 ADC XFE STA X8C LDA X8D ADC XFF STA X8D SEC JSR S2E00 BEQ C2D00 ;>>>>^ ; ; === S2E00 = *-DIST LDY X8B LDA XFE SBC X8B STA XFE BCS C2E01 DEC XFF C2E01 LDA (X8C),Y STA (XFE),Y DEY BNE C2E01 RTS ; ; === S2F00 = *-DIST LDX Z2GD6,Y S2F01 = *-DIST LDA #$00 STA X8D C2F02 LDY XFB BEQ L2F10 C2F03 ASL XFA ROL A ROL X8D DEC XFB DEX BPL C2F02 TAY RTS ; L2F10 STA X8E LDA (XFC),Y STA XFA LDA #$08 STA XFB LDA X8E LDY XFC BNE L2F11 DEC XFD L2F11 DEC XFC CPY #$E7 BNE C2F03 LDY XFD CPY #$07 BNE C2F03 ; ; --- D2GD1 LDA #$37 STA $01 D2GD2 CLI D2GD3 JSR $A659 D2GD4 STA $0800 READY = $A474-1 LDA #>READY PHA LDA #STMSG JSR WRTTXT ; ; ------ C3B00 LDX #$00 STX BLNSW STX NDX STX BUF JSR CRET LDA #'>' JSR CHROUT ; ; ---- C3C00 STX XFB ; C3C10 JSR GETIN AND #$7F CMP #$03 ;STOP BNE L3C11 INC BLNSW JSR SPACE RTS ; >>>> EXIT, Z=0 L3C11 LDX XFB CMP #$0D ;CR BEQ L3C30 CMP #$14 ;DEL BEQ L3C20 CMP #' ' BCC C3C10 CPX #$26 BEQ C3C10 STA BUF,X INX L3C12 JSR CHROUT JMP C3C00 ;>>> ; ; --- DEL L3C20 DEX BMI C3C10 BPL L3C12 ;>>> ; ; ; --- CR L3C30 INC BLNSW JSR SPACE JSR CRET JSR CRET LDA BUF CMP #'$' BEQ L3D00 LDA #$0F LDX #$08 TAY JSR SETLFS JSR S3E00 ; LDX #$0F JSR CHKIN C3C31 JSR CHRIN JSR CHROUT CMP #$0D BNE C3C31 LDA #$0F JSR CLOSE JSR CLRCHN JMP C3B00 ; ; ; --- $ L3D00 LDA #$02 LDX #$08 LDY #$00 JSR SETLFS JSR S3E00 LDX #$02 JSR CHKIN JSR SPACE LDY #$22 JSR S3F00 ; C3D10 JSR CRET LDX LSTX CPX #$3F ;STOP BEQ L3D20 ;>> CPX #$3C :SPACE BNE L3D11 BIT LSTX BVC *-2 BIT LSTX BVS *-2 L3D11 JSR CHRIN STA XFD JSR CHRIN LDX XFD JSR WRTNUM JSR SPACE LDY #$1E JSR S3F00 LDA STATUS BEQ C3D10 ; L3D20 JSR CLRCHN LDA #$02 JSR CLOSE JMP C3B00 ; ; ; === S3E00 LDA XFB LDX #$00 LDY #$02 JSR SETNAM JMP OPEN ; ; === (Y;) S3F00 JSR CHRIN JSR CHROUT DEY BNE S3F00 RTS ; ; STMSG = * .BYT $1E,$93,$0E,$9F,$C5,'NTER ',$C4,$CF,$D3 .BYT ' COMMAND OR ',$05,'$',$9F .BYT ' FOR DIRECTORY',$0D .BYT ' (PRESS ',$D3,$D4,$CF,$D0 .BYT ' TO RETURN)',$0D,$1E,0 ; ; ; .END ; *** ADDRESSES FOR CRT 5.09 ; .NOL ; X02 = $02 X03 = $03 VARTAB = $2D ; $2C X2F = $2F X30 = $30 X31 = $31 X32 = $32 X33 = $33 X34 = $34 X35 = $35 X36 = $36 X37 = $37 X38 = $38 X8B = $8B X8C = $8C X8D = $8D X8E = $8E STATUS = $90 CHKSM0 = $AA CHKSM1 = $AB CHKSM2 = $AC CHKSM3 = $AD EAL = $AE ; $AF BYTE = $B6 FNLEN = $B7 LA = $B8 SA = $B9 FA = $BA LSTX = $C5 NDX = $C6 BLNSW = $CC PNT = $D1 ; $D2 PNTR = $D3 QTSW = $D4 TBLX = $D6 XF9 = $F9 XFA = $FA XFB = $FB XFC = $FC XFD = $FD XFE = $FE XFF = $FF ; STACK = $0100 BUF = $0200 COLOR = $0286 GDCOL = $0287 SHFLAG = $028D SAVELN = $07E8 SAVEPF = $07E9 SAVENM = $07EB ; ERRHLT = $A437 HALT = $A474 CRET = $AAD7 SPACE = $AB3F WRTTXT = $AB1E WRTNUM = $BDCD CLRSCR = $E544 SCRLIN = $E56C OPEN2 = $F3D5 CLOSE2 = $F642 ; ; ; .END ; *** KERNAL ENTRY POINTS * ; .NOL ; CINT = $FF81 IOINIT = $FF84 RAMTES = $FF87 RESTOR = $FF8A VECTOR = $FF8D SETMSG = $FF90 SECOND = $FF93 TKSA = $FF96 MEMTOP = $FF99 MEMBOT = $FF9C SCNKEY = $FF9F SETTMO = $FFA2 ACPTR = $FFA5 CIOUT = $FFA8 UNTLK = $FFAB UNLSN = $FFAE LISTEN = $FFB1 TALK = $FFB4 READST = $FFB7 SETLFS = $FFBA SETNAM = $FFBD OPEN = $FFC0 CLOSE = $FFC3 CHKIN = $FFC6 CHKOUT = $FFC9 CLRCHN = $FFCC CHRIN = $FFCF CHROUT = $FFD2 LOAD = $FFD5 SAVE = $FFD8 SETTIM = $FFDB RDTIM = $FFDE STOP = $FFE1 GETIN = $FFE4 CLALL = $FFE7 UDTIM = $FFEA SCREEN = $FFED PLOT = $FFF0 IOBASE = $FFF3 ; ; .END tIME cRUNCHER V5.09 (c64) (*) dAVE, 1995 tHIS PROGRAM IS A DISASSEMBLED AND RECONSTRUCTED VERSION OF tIME cRUNCHER V5.0, WHICH IS SIGNED BY mATCHAM, AND sLOAT & tIM. tHE CRUNCHING AND DECRUNCHING METHOD IS THE SAME AS IN V5.0. i MADE A MUCH FRIENDLIER ENTRY SEQUENCE, AND MADE A LITTLE SIMPLIER DECRUNCHER ROUTINE. tHIS CRUNCHER IS 10% FASTER THAN tIME cRUNCHER V3.4 AND V6.0 (THEY PRESENTED EXACTLY THE SAME RESULTS!), AND NEEDS THE HALF OF TIME AS cRUEL cRUNCHERS, WHICH - ON THE OTHER HAND - HAS BETTER COMPRESSION RATE. i OFTEN FOUND A BIT WORSE COMPRESSION WITH tIME cRUNCHERS ON THE HIGHER GRADE, i PREFER GRADE 3 FOR AN AVERAGE PROGRAM. --- i CAN NOT DECLARE THIS PROGRAM TO pUBLIC dOMAIN BECAUSE THE ORIGINAL VERSION IS NOT MY PRODUCT. aLTHOUGH i INCLUDE ALL SOURCES i MADE, YOU MUST RESPECT THE ORIGINAL AUTHOR'S RIGHT WHEN USE THEM.