* * ZipGSX CDA (WIP) * * ( c) Zip Technologies * (s) 2024, Antoine Vignau * mx %00 rel dsk ZipDA.l lst off use 4/Int.Macs use 4/Text.Macs use 4/Util.Macs *------------------------------- KBD EQU $C000 KBDSTROBE EQU $C010 CYAREG EQU $C036 CLRAN0 EQU $C059 SETAN1 EQU $C05A CLRAN1 EQU $C05B SETAN2 EQU $C05C CLRAN2 EQU $C05D SETAN3 EQU $C05E BUTN0 EQU $C061 BUTN1 EQU $C062 *------------------------------- CDA Header STR "Zip GS Control" ADRL entryPOINT ; Ptr to code start ADRL exitPOINT ; Ptr to shutdown routine *------------------------------- entryPOINT PHB PHK PLB PHA PHA PHA _GetInputDevice PHA PHA _GetInGlobals PHA PHA PHA _GetOutputDevice PHA PHA _GetOutGlobals TSC STA stackPTR JSR initTEXT JSR L0D6A JSR checkZIPGS ; ZIPGS PRESENT? LDA fgZIPGS BNE L0055 JSR L03B4 L0055 JSR L1207 JSR L0144 JSR L0145 *------------------------------- L005E JSR waitforKEY AND #$00FF CMP #$008A BEQ L009B CMP #$008B BEQ L0095 CMP #$0088 BEQ L00A1 CMP #$0095 BEQ L00A1 CMP #$008D BNE L0084 LDA L088D BEQ L00A1 BRA L00A7 L0084 CMP #$009B BEQ L00A7 CMP #$00BF BEQ L00AD CMP #$00AF BEQ L00AD BRA L005E L0095 JSR L090D BRL L005E L009B JSR L0927 BRL L005E L00A1 JSR L096F BRL L005E L00A7 JSR L0992 BRL L005E L00AD JSR L00B3 BRL L005E L00B3 LDAL BUTN0 AND #$0080 BNE L00C6 LDAL BUTN1 AND #$0080 BNE L00C6 RTS L00C6 LDA $10 STA L00EA LDA $12 STA L00EA+2 JSR L0EAB JSR L0FDA JSR L03D2 JSR waitforKEY JSR L1029 LDA L00EA STA $10 LDA L00EA+2 STA $12 RTS L00EA ADRL $00000000 *------------------------------- waitforKEY SEP #$20 LDAL KBD BPL waitforKEY STAL KBDSTROBE REP #$20 RTS *------------------------------- L00FD LDA fgZIPGS BEQ L0105 JSR L1241 L0105 JSR L0EAB JSR L0D6A LDA stackPTR TCS _SetOutGlobals _SetOutputDevice _SetInGlobals _SetInputDevice PEA $0000 _InitTextDev PEA $0001 _InitTextDev PLB *------------------------------- exitPOINT RTL *------------------------------- stackPTR DW $0000 *------------------------------- L0143 RTS L0144 RTS *------------------------------- L0145 LDA #L01C5 JSR L10DB JSR L0406 JSR L0D0F JSR L097F JSR L0441 JSR L0467 RTS L015B LDA #L04BB STA $06 SEP #$10 LDX #$03 LDY #$06 REP #$10 JSR L1078 RTS L016C LDA #L04CC STA $06 SEP #$10 LDX #$03 LDY #$08 REP #$10 JSR L1078 RTS L017D LDA #L04DD STA $06 SEP #$10 LDX #$03 LDY #$09 REP #$10 JSR L1078 RTS L018E LDA #L04EE STA $06 SEP #$10 LDX #$03 LDY #$0A REP #$10 JSR L1078 RTS L019F LDA #L04FF STA $06 SEP #$10 LDX #$03 LDY #$0E REP #$10 JSR L1078 RTS L01B0 SEP #$20 LDA #$13 STA $10 LDA #$00 STA $12 LDA #$3D STA $11 LDA #$18 STA $13 REP #$20 RTS L01C5 DB $13 DB $00 DB $3C DB $17 DB $FF DA L0506 DB $FE DB $00 DB $05 DA L04BB DB $03 DB $06 DA L04CC DB $03 DB $08 DA L04DD DB $03 DB $09 DA L04EE DB $03 DB $0A DA L04FF DB $03 DB $0E L01E3 LDA #$FFFF STA L0EF2 LDA #L0268 JSR L10DB JSR L0A5F LDA #$0000 STA L088F JSR L097F JSR L045B JSR L0487 RTS L0202 LDA #L051A STA $06 SEP #$10 LDX #$03 LDY #$04 REP #$10 JSR L1078 RTS L0213 LDA #L052C STA $06 SEP #$10 LDX #$03 LDY #$05 REP #$10 JSR L1078 RTS L0224 LDA #L053D STA $06 SEP #$10 LDX #$03 LDY #$06 REP #$10 JSR L1078 RTS L0235 LDA #L0550 STA $06 SEP #$10 LDX #$03 LDY #$07 REP #$10 JSR L1078 RTS L0246 LDA #L0565 STA $06 SEP #$10 LDX #$03 LDY #$08 REP #$10 JSR L1078 RTS L0257 LDA #L0586 STA $06 SEP #$10 LDX #$03 LDY #$09 REP #$10 JSR L1078 RTS L0268 DB $13 DB $02 DB $3C DB $17 DB $FF DA L0576 DB $FE DB $00 DB $06 DA L051A DB $03 DB $04 DA L052C DB $03 DB $05 DA L053D DB $03 DB $06 DA L0550 DB $03 DB $07 DA L0565 DB $03 DB $08 DA L0586 DB $03 DB $09 L028A SEP #$20 LDA #$13 STA $10 LDA #$02 STA $12 LDA #$3D STA $11 LDA #$18 STA $13 REP #$20 JSR L0DB2 RTS L02A2 LDA #$FFFF STA L0EF2 LDA #L0338 JSR L10DB JSR L0ACC LDA #$0000 STA L088F JSR L097F JSR L045B JSR L0487 RTS L02C1 LDA #L0594 STA $06 SEP #$10 LDX #$03 LDY #$04 REP #$10 JSR L1078 RTS L02D2 LDA #L059E STA $06 SEP #$10 LDX #$03 LDY #$05 REP #$10 JSR L1078 RTS L02E3 LDA #L05A8 STA $06 SEP #$10 LDX #$03 LDY #$06 REP #$10 JSR L1078 RTS L02F4 LDA #L05B2 STA $06 SEP #$10 LDX #$03 LDY #$07 REP #$10 JSR L1078 RTS L0305 LDA #L05BC STA $06 SEP #$10 LDX #$03 LDY #$08 REP #$10 JSR L1078 RTS L0316 LDA #L05C6 STA $06 SEP #$10 LDX #$03 LDY #$09 REP #$10 JSR L1078 RTS L0327 LDA #L05D0 STA $06 SEP #$10 LDX #$03 LDY #$0A REP #$10 JSR L1078 RTS L0338 DB $13 DB $02 DB $3C DB $17 DB $FF DA L05DA DB $FE DB $00 DB $07 DA L0594 DB $03 DB $04 DA L059E DB $03 DB $05 DA L05A8 DB $03 DB $06 DA L05B2 DB $03 DB $07 DA L05BC DB $03 DB $08 DA L05C6 DB $03 DB $09 DA L05D0 DB $03 DB $0A L035E SEP #$20 LDA #$13 STA $10 LDA #$02 STA $12 LDA #$3D STA $11 LDA #$18 STA $13 REP #$20 JSR L0DB2 RTS L0376 LDA #L0386 JSR L10DB JSR L0B4B JSR L045B JSR L0487 RTS L0386 DB $0D DB $02 DB $40 DB $12 DB $FF DA L05E9 DB $FE DB $00 DB $03 DA L0600 DB $05 DB $06 DA L062A DB $04 DB $07 DA L0657 DB $05 DB $08 L039C SEP #$20 LDA #$0D STA $10 LDA #$02 STA $12 LDA #$41 STA $11 LDA #$13 STA $13 REP #$20 JSR L0DB2 RTS L03B4 LDA #L03C0 JSR L10DB JSR waitforKEY JMP L00FD L03C0 DB $13 DB $00 DB $3C DB $17 DB $FF DA L0506 DB $FE DB $00 DB $02 DA L073B DB $FF DB $06 DA L0753 DB $FF DB $09 L03D2 LDA #L03DC JSR L10DB JSR L0487 RTS L03DC DB $1D DB $07 DB $46 DB $16 DB $FF DA L0682 DB $FF DB $00 DB $08 DA L0693 DB $FF DB $02 DA L06A3 DB $FF DB $03 DA L06B2 DB $FF DB $05 DA L06D3 DB $FF DB $06 DA L06E9 DB $FF DB $07 DA L06F8 DB $0A DB $09 DA L0710 DB $0A DB $0A DA L0724 DB $0A DB $0B L0406 LDA #L04A7 STA $06 SEP #$10 LDX #$0A LDY #$13 REP #$10 JSR L1078 SEP #$10 LDX #$19 LDY #$13 REP #$10 JSR L1095 LDA L11FD AND #$0003 ASL ASL CLC ADC #L0857 STA $06 JSR L107B SEP #$10 LDX #$0A LDY #$11 REP #$10 JSR L1095 JSR L1349 RTS L0441 LDX #$0001 INX SEP #$20 LDA $13 CLC SBC $12 REP #$20 TAY JSR L1095 LDA #L0769 STA $06 JSR L107B RTS L045B JSR L0441 LDA #L0779 STA $06 JSR L107B RTS L0467 SEP #$20 LDA $11 SEC SBC $10 SEC SBC L0782 TAX LDA $13 CLC SBC $12 TAY REP #$20 JSR L1095 LDA #L0783 STA $06 JSR L107B RTS L0487 SEP #$20 LDA $11 SEC SBC $10 SEC SBC L078D TAX LDA $13 CLC SBC $12 TAY REP #$20 JSR L1095 LDA #L078E STA $06 JSR L107B RTS L04A7 ASC "Zip Cache Size: k"00 L04BB ASC " Zip GS "00 L04CC ASC " Misc. Settings "00 L04DD ASC " Slot Settings "00 L04EE ASC " Speed Settings "00 L04FF ASC " Quit "00 L0506 ASC " ZipGS Control v1.2"00 L051A ASC " Joystick Delay: "00 L052C ASC " Speaker Delay: "00 L053D ASC " AppleTalk Delay: "00 L0550 ASC " C/D Cache Disable: "00 L0565 ASC " Counter Delay: "00 L0576 ASC " Misc. Settings"00 L0586 ASC " CPS Follow: "00 L0594 ASC " Slot 1: "00 L059E ASC " Slot 2: "00 L05A8 ASC " Slot 3: "00 L05B2 ASC " Slot 4: "00 L05BC ASC " Slot 5: "00 L05C6 ASC " Slot 6: "00 L05D0 ASC " Slot 7: "00 L05DA ASC " Slot Settings"00 L05E9 ASC " System Speed"00 ASC "100%"00 ASC "~J~"00 L0600 ASC "_________________________________________"00 L062A ASC "~Z" L062C ASC "VWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWVWV_"00 L0657 ASC "LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL" ASC "LL~"00 L0682 ASC "^ About Zip GS ^"00 L0693 ASC "Zip GS (c) 1990"00 L06A3 ASC "Zip Technology"00 L06B2 ASC "5601 West Slauson Ave, Suite 190"00 L06D3 ASC "Culver City, CA 90230"00 L06E9 ASC "(213) 337-1313"00 L06F8 ASC "Hardware: Steve Meadows"00 L0710 ASC " Tony Vece"00 L0724 ASC "Software: David D. Ely"00 L073B ASC "Sorry, no ZipGS present"00 L0753 ASC "Press any key to exit"00 L0769 ASC "Select: ~J~ ~K~"00 L0779 ASC " ~H~ ~U~"00 L0782 ASC 0A L0783 ASC "Open: ~M~"00 L078D ASC 10 L078E ASC "Exit: ~M~ "00 L079E ASC "On "00 L07A2 ASC "Off"00 L07A6 ASC "Fast "00 L07AD ASC "Normal"00 L07B4 ASC " " ASC " 6.25 %" ASC " 12.50 %" ASC " 18.75 %" ASC " 25.00 %" ASC " 31.25 %" ASC " 37.50 %" ASC " 43.75 %" ASC " 50.00 %" ASC " 56.25 %" ASC " 62.50 %" ASC " 68.75 %" ASC " 75.00 %" ASC " 81.25 %" ASC " 87.50 %" ASC " 93.75 %" ASC "100.00 %" ASC " " ASC " " L0845 HEX 05080A0C0F121416191C1E202326282A HEX 2D31 L0857 ASC " 8"00 ASC " 16"00 ASC " 32"00 ASC " 64"00 DW $003A DW $0064 DW $0096 DW $00C8 DW $00FA DW $012C DW $015E DW $0190 DW $01C2 DW $01F4 DW $0226 DW $0258 DW $028A DW $02BC DW $02EE DW $0320 DW $0352 DW $0378 DW $03E8 L088D DW $0000 L088F DW $0003 L0891 DW $0003 L0893 DA L01B0-1 DA L028A-1 DA L035E-1 DA L039C-1 L089B DA L0145-1 DA L01E3-1 DA L02A2-1 DA L0376-1 L08A3 DA L08B3 DA L08BF DA L08C9 DA L08D7 DA L08E3 DA L08F3 DA L0901 DA L0903 L08B3 DA $0005 DA L015B-1 DA L016C-1 DA L017D-1 DA L018E-1 DA L019F-1 L08BF DA L0CE6-1 DA L0C5D-1 DA L0C64-1 DA L0C6B-1 DA L00FD-1 L08C9 DA $0006 DA L0202-1 DA L0213-1 DA L0224-1 DA L0235-1 DA L0246-1 DA L0257-1 L08D7 DA L0BED-1 DA L0BF5-1 DA L0BFD-1 DA L0C05-1 DA L0C0D-1 DA L0C15-1 L08E3 DA $0007 DA L02C1-1 DA L02D2-1 DA L02E3-1 DA L02F4-1 DA L0305-1 DA L0316-1 DA L0327-1 L08F3 DA L0C21-1 DA L0C29-1 DA L0C31-1 DA L0C39-1 DA L0C41-1 DA L0C49-1 DA L0C51-1 L0901 DA $0001 L0903 DA L0143-1 DA L0143-1 DA L0143-1 *------------------------------- L0909 LDA $FE PHA RTS L090D JSR L0955 JSR L094E LDX L088F DEX BPL L0920 L0919 LDY #$0000 LDA ($FC),Y TAX DEX L0920 STX L088F BRL L097F RTS L0927 JSR L0955 JSR L094E LDA L088F INC LDY #$0000 CMP ($FC),Y BCC L093B LDA #$0000 L093B STA L088F BRL L097F RTS L0942 LDA L088F ASL TAY INY INY LDA ($FC),Y STA $FE RTS L094E JSR L0942 JSR L0909 RTS L0955 LDA L088D ASL ASL TAX LDA L08A3,X STA $FC RTS L0961 LDA L088D ASL ASL TAX INX INX LDA L08A3,X STA $FC RTS L096F JSR L0961 LDA L088F ASL TAY LDA ($FC),Y STA $FE JSR L0909 RTS MX %00 L097F LDA #$00DE JSR L0DD0 JSR L0955 JSR L094E LDA #$00DE JSR L0DD0 RTS L0992 JSR L0955 JSR L094E LDA L088D CMP #$0000 BNE L09A3 BRL L0919 L09A3 LDA #$0000 JSR L09AA RTS L09AA PHA LDA L088D ASL TAX LDA L0893,X STA $FE JSR L0909 PLA STA L088D CMP #$0000 BEQ L09C9 LDA L088F STA L0891 BRA L09CF L09C9 LDA L0891 STA L088F L09CF LDA L088D ASL TAX LDA L089B,X STA $FE JSR L0909 RTS L09DD STA L0A27 PLX PLA STA L0A2F AND L11FD STA L0A31 PLA STA L0A2D PLA STA L0A2B PLA STA L0A29 PHX LDX L0A2B LDY L0A29 JSR L1095 LDA L0A2F AND #$4558 ; EX CMP L0A31 JSR L0A33 LDX L0A2D LDY L0A29 JSR L1095 LDA L0A27 BNE L0A21 LDA L0A31 JMP L0A41 L0A21 LDA L0A31 JMP L0A50 L0A27 DW $0000 L0A29 DW $0000 L0A2B DW $0000 L0A2D DW $0000 L0A2F DW $0000 L0A31 DW $0000 *------------------------------- L0A33 BNE L0A3B LDA #$0044 JMP L0DD0 L0A3B LDA #$00A0 JMP L0DD0 L0A41 BEQ L0A48 LDA #L079E BRA L0A4B L0A48 LDA #L07A2 L0A4B STA $06 JMP L107B L0A50 BNE L0A57 LDA #L07A6 BRA L0A5A L0A57 LDA #L07AD L0A5A STA $06 JMP L107B L0A5F PEA $0004 PEA $0001 PEA $001A PEA $0040 LDA #$0000 JSR L09DD PEA $0005 PEA $0001 PEA $001A PEA $0100 LDA #$0000 JSR L09DD PEA $0006 PEA $0001 PEA $001A PEA $0020 LDA #$0000 JSR L09DD PEA $0007 PEA $0001 PEA $001A PEA $0080 LDA #$0000 JSR L09DD PEA $0008 PEA $0001 PEA $001A PEA $0010 LDA #$0000 JSR L09DD PEA $0009 PEA $0001 PEA $001A PEA $0008 LDA #$0000 JSR L09DD RTS L0ACC PEA $0004 PEA $0001 PEA $000D PEA $0200 LDA #$FFFF JSR L09DD PEA $0005 PEA $0001 PEA $000D PEA $0400 LDA #$FFFF JSR L09DD PEA $0006 PEA $0001 PEA $000D PEA $0800 LDA #$FFFF JSR L09DD PEA $0007 PEA $0001 PEA $000D PEA $1000 LDA #$FFFF JSR L09DD PEA $0008 PEA $0001 PEA $000D PEA $2000 LDA #$FFFF JSR L09DD PEA $0009 PEA $0001 PEA $000D PEA $4000 LDA #$FFFF JSR L09DD PEA $000A PEA $0001 PEA $000D PEA $8000 LDA #$FFFF JSR L09DD RTS L0B4B JSR L133E JSR L0B95 SEP #$10 LDX #$15 LDY #$03 REP #$10 JSR L1095 LDX freqSTEP TXA AND #$00FF ASL ASL ASL TAX LDY #$0007 L0B6A LDA L07B4,X AND #$00FF JSR L0DD0 INX DEY BPL L0B6A RTS L0B78 LDX freqSTEP INX CPX #$0011 BCC L0B84 LDX #$0000 L0B84 STX freqSTEP RTS L0B88 LDX freqSTEP DEX BPL L0B91 LDX #$0010 L0B91 STX freqSTEP RTS L0B95 LDA freqSTEP AND #$001F STA freqSTEP LDA L0845 AND #$00FF TAX LDY #$0007 JSR L1095 LDX #$FFFF LDY #$0000 L0BB1 INX CPX #$0011 BCS L0BEC L0BB7 CPX freqSTEP BCC L0BC8 BEQ L0BC3 LDA #$00A0 BRA L0BCF L0BC3 CPX #$0000 BEQ L0BB1 L0BC8 LDA L062C,Y SEC SBC #$0080 L0BCF JSR L0DD0 INY TYA AND #$00FF CLC ADC #$0005 PHA LDA L0845,X AND #$00FF CMP $01,S BCC L0BE9 PLA BRA L0BB7 L0BE9 PLA BRA L0BB1 L0BEC RTS L0BED LDA L11FD EOR #$0040 BRA L0C1B L0BF5 LDA L11FD EOR #$0100 BRA L0C1B L0BFD LDA L11FD EOR #$0020 BRA L0C1B L0C05 LDA L11FD EOR #$0080 BRA L0C1B L0C0D LDA L11FD EOR #$0010 BRA L0C1B L0C15 LDA L11FD EOR #$0008 L0C1B STA L11FD BRL L0A5F L0C21 LDA L11FD EOR #$0200 BRA L0C57 L0C29 LDA L11FD EOR #$0400 BRA L0C57 L0C31 LDA L11FD EOR #$0800 BRA L0C57 L0C39 LDA L11FD EOR #$1000 BRA L0C57 L0C41 LDA L11FD EOR #$2000 BRA L0C57 L0C49 LDA L11FD EOR #$4000 BRA L0C57 L0C51 LDA L11FD EOR #$8000 L0C57 STA L11FD BRL L0ACC L0C5D LDA #$0001 JSR L09AA RTS L0C64 LDA #$0002 JSR L09AA RTS L0C6B LDA #$0003 JSR L09AA L0C71 JSR waitforKEY AND #$00FF CMP #$008D BEQ L0CB3 CMP #$0088 BEQ L0CBA CMP #$008A BEQ L0CBA CMP #$0095 BEQ L0CC2 CMP #$008B BEQ L0CC2 CMP #$00C6 BEQ L0CD5 CMP #$00E6 BEQ L0CD5 CMP #$00CF BEQ L0CCA CMP #$00EF BEQ L0CCA CMP #$00BF BEQ L0CE0 CMP #$00AF BEQ L0CE0 CMP #$009B BNE L0C71 L0CB3 LDA #$0000 JSR L09AA RTS L0CBA JSR L0B88 JSR L0B4B BRA L0C71 L0CC2 JSR L0B78 JSR L0B4B BRA L0C71 L0CCA LDA #$0000 STA freqSTEP JSR L0B4B BRA L0C71 L0CD5 LDA #$0010 STA freqSTEP JSR L0B4B BRA L0C71 L0CE0 JSR L00B3 L0CE3 BRL L0C71 L0CE6 SEP #$20 LDA freqSTEP BEQ L0CF1 LDA #$00 BRA L0CF3 L0CF1 LDA #$10 L0CF3 STA freqSTEP REP #$20 JSR L0D0F JSR L090D RTS strENABLE ASC "Enable "00 strDISABLE ASC "Disable"00 L0D0F SEP #$30 LDX #$00 LDA freqSTEP BNE L0D23 L0D18 LDA strENABLE,X BEQ L0D2E STA L04BB+8,X INX BRA L0D18 L0D23 LDA strDISABLE,X BEQ L0D2E STA L04BB+8,X INX BRA L0D23 L0D2E REP #$30 LDA #L04BB STA $06 SEP #$10 LDX #$03 LDY #$06 REP #$10 JSR L1078 SEP #$10 LDX #$0A LDY #$11 REP #$10 JSR L1095 JSR L1349 RTS MX %10 L0D4F LDX $15 LDA L0EC2,X STA $16 LDA L0EDA,X STA $17 LDA $14 BIT #$01 BEQ L0D65 LDA #$00 BRA L0D67 L0D65 LDA #$01 L0D67 STA $18 RTS MX %00 L0D6A LDA #$A0A0 PHA LDX #$FFFF PHX L0D72 LDA $01,S INC CMP #$0018 BCS L0DAF STA $01,S TAX LDA L0EC2,X STA $16 LDA L0EDA,X STA $17 LDA #$0001 STA $18 LDA $03,S LDY #$0000 L0D91 STA [$16],Y INY INY CPY #$0027 ; 40 columns BCC L0D91 LDA #$0000 STA $18 LDA $03,S LDY #$0000 L0DA4 STA [$16],Y INY INY CPY #$0027 ; 40 columns BCC L0DA4 BRA L0D72 L0DAF PLA PLA RTS L0DB2 LDA #$00A0 PHA JSR L0EB5 L0DB9 REP #$20 PLA PHA JSR L0DD0 SEP #$20 LDA $15 CMP $13 BNE L0DB9 REP #$20 PLA JSR L0EB5 RTS L0DCF DB $00 L0DD0 PHX PHY SEP #$30 AND #$FF PHA CMP #$8D BNE L0DDE BRL L0E54 L0DDE CMP #$FE BNE L0DE5 BRL L0E1D L0DE5 CMP #$DE BNE L0DEC BRL L0E32 L0DEC BIT L0DCF BPL L0DF8 PLA JSR L0E2F PHA BRA L0DFF L0DF8 BVC L0DFF PLA JSR L0E45 PHA L0DFF SEP #$30 JSR L0D4F LDA $14 LSR TAY PLA STA [$16],Y LDA $14 INC CMP $11 BCC L0E16 INC $15 LDA $10 L0E16 STA $14 L0E18 REP #$30 PLY PLX RTS MX %10 L0E1D LDA #$80 BIT L0DCF BNE L0E29 TSB L0DCF BRA L0E2C L0E29 TRB L0DCF L0E2C PLA BRA L0E18 L0E2F AND #$5F RTS L0E32 LDA #$40 BIT L0DCF BVS L0E3E TSB L0DCF BRA L0E42 L0E3E TRB L0DCF CLV L0E42 PLA BRA L0E18 L0E45 CMP #$C0 BCC L0E4D CMP #$E0 BCC L0E51 L0E4D AND #$7F BRA L0E53 L0E51 AND #$1F L0E53 RTS MX %00 L0E54 INC $15 LDA $10 STA $14 PLA BRA L0E18 *------------------------------- * initTEXT *------------------------------- initTEXT PEA $0000 PEA $0000 PEA $0003 _SetInputDevice PEA $0000 PEA $0000 PEA $0003 _SetOutputDevice PEA $00FF PEA $0080 _SetInGlobals PEA $00FF PEA $0080 _SetOutGlobals PEA $0000 _InitTextDev PEA $0001 _InitTextDev L0EAB LDA #$5000 STA $10 LDA #$1800 STA $12 L0EB5 SEP #$20 LDA $10 STA $14 LDA $12 STA $15 REP #$20 RTS L0EC2 HEX 0080008000800080 HEX 28A828A828A828A8 HEX 50D050D050D050D0 L0EDA HEX 0404050506060707 HEX 0404050506060707 HEX 0404050506060707 L0EF2 DW $0000 *------------------------------- L0EF4 SEP #$30 INY STY $13 INX STX $11 TXA AND #$FF SEC SBC $10 STA L0FB9 REP #$10 LDA #$FE JSR L0DD0 SEP #$30 LDX #$00 LDY #$00 JSR L0FBA LDA $11 AND #$FF CLC SBC $10 TAX LDA L0EF2 BNE L0F26 LDA #$A0 BRA L0F28 L0F26 LDA #$5A L0F28 JSR L0FC6 DEX LDA L0EF2 BNE L0F35 LDA #$DF BRA L0F37 L0F35 LDA #$5C L0F37 JSR L0FC6 DEX BNE L0F37 LDA L0EF2 BNE L0F46 LDA #$A0 BRA L0F48 L0F46 LDA #$5F L0F48 JSR L0FC6 LDA $13 SEC SBC $12 SBC #$02 STA $0E LDY #$00 STY $0F L0F58 LDY $0F INY STY $0F LDX #$00 JSR L0FBA LDA #$5A JSR L0FC6 LDY $0F LDX L0FB9 DEX JSR L0FBA LDA #$5F JSR L0FC6 DEC $0E BNE L0F58 LDX #$00 LDA $13 SEC SBC $12 TAY DEY JSR L0FBA LDX L0FB9 INC L0FB9 LDA #$A0 JSR L0FC6 DEX DEX L0F92 LDA #$4C JSR L0FC6 DEX BNE L0F92 LDA #$A0 JSR L0FC6 DEC L0FB9 REP #$10 LDA #$FE JSR L0DD0 SEP #$20 INC $10 DEC $11 INC $12 DEC $13 REP #$20 JSR L0DB2 RTS L0FB9 DB $00 L0FBA TXA AND #$20FF STA $10,X SEP #$10 JSR L0D4F RTS L0FC6 PHX PHY PHA JSR L0D4F LDA $14 AND #$4AFF TAY PLA STA [$16],Y INC $14 PLY PLX RTS MX %00 L0FDA LDA #$0000 PHA PHA PHA L0FE0 LDA $01,S TAX LDA $05,S SEP #$20 STA $18 LDA L0EC2,X STA $16 LDA L0EDA,X STA $17 REP #$20 LDY #$0000 LDA $03,S TAX L0FFB LDA [$16],Y STA L14DB,X INX INX INY INY CPY #$0028 BNE L0FFB TXA STA $03,S LDA $01,S INC STA $01,S CMP #$0018 BCC L0FE0 LDA #$0000 STA $01,S LDA $05,S INC STA $05,S CMP #$0002 BCC L0FE0 PLA PLA PLA RTS L1029 LDA #$0000 PHA PHA PHA L102F LDA $01,S TAX LDA $05,S SEP #$20 STA $18 LDA L0EC2,X STA $16 LDA L0EDA,X STA $17 REP #$20 LDY #$0000 LDA $03,S TAX L104A LDA L14DB,X STA [$16],Y INX INX INY INY CPY #$0028 BNE L104A TXA STA $03,S LDA $01,S INC STA $01,S CMP #$0018 BCC L102F LDA #$0000 STA $01,S LDA $05,S INC STA $05,S CMP #$0002 BCC L102F PLA PLA PLA RTS L1078 JSR L1095 L107B LDY #$0000 SEP #$20 L1080 LDA ($06),Y BEQ L108C JSR L108F INY SEP #$20 BRA L1080 L108C REP #$20 RTS MX %10 L108F ORA #$80 JSR L0DD0 RTS L1095 SEP #$10 TXA CLC ADC $10 STA $14 TYA CLC ADC $12 STA $15 REP #$10 RTS PHA LSR LSR LSR LSR AND #$000F CLC ADC #$00B0 JSR L0DD0 PLA AND #$000F CLC ADC #$00B0 JMP L0DD0 LDY #$0000 SEP #$20 L10C5 LDA ($06),Y BEQ L10D5 JSR L0DD0 INY BNE L10C5 INC $06 SEP #$20 BRA L10C5 L10D5 REP #$20 RTS L10D8 DB $00 L10D9 DB $00 L10DA DB $00 L10DB STA $08 SEP #$30 LDY #$00 LDA ($08),Y STA $10 INY LDA ($08),Y STA $12 INY LDA ($08),Y TAX INY LDA ($08),Y TAY JSR L0EF4 SEP #$30 LDY #$04 LDA ($08),Y STA L10D8 BEQ L1130 BPL L1118 LDA $12 CLC ADC #$01 STA $15 LDA $10 STA $14 LDA $11 SEC SBC $10 TAX REP #$30 JSR L11DD L1118 SEP #$20 BIT L10D8 BVC L1130 REP #$20 CLC LDA $08 ADC #$0005 STA $0C LDA ($0C) STA $0A JSR L115C L1130 REP #$30 LDY #$0009 LDA ($08),Y AND #$00FF PHA CLC LDA #$0006 ADC $08 STA $0C L1143 PLA BNE L1149 BRL L11E8 L1149 DEC PHA CLC LDA $0C ADC #$0004 STA $0C LDA ($0C) STA $0A JSR L115C BRA L1143 L115C LDA $0A STA $06 SEP #$30 LDY #$02 LDA ($0C),Y BPL L11AB CMP #$FF BEQ L1193 LDA #$00 JSR L11AF SEP #$20 LDA #$80 TSB L0DCF LDA #$DA JSR L108F L117D SEP #$20 JSR L11EE LDA #$D6 JSR L108F SEP #$20 JSR L11EE LDA #$D7 JSR L108F BRA L117D L1193 JSR L11B8 LDA L10D9 LSR STA L10D9 SEC LDA $11 SBC $10 LSR SBC #$00 SEC SBC L10D9 BRA L11AF L11AB LDY #$02 LDA ($0C),Y L11AF TAX LDY #$03 LDA ($0C),Y TAY JMP L1078 L11B8 STZ L10DA LDY #$FF L11BD INY LDA ($0A),Y AND #$7F CMP $7E BNE L11C9 INC L10DA L11C9 CMP $5E BNE L11D0 INC L10DA L11D0 CMP #$00 BNE L11BD TYA CLC SBC L10DA STA L10D9 RTS L11DD SEP #$20 LDA #$4C JSR L0DD0 DEX BNE L11DD RTS L11E8 REP #$30 STZ L0EF2 RTS MX %10 L11EE LDA $14 CMP $10 BNE L11FC LDA #$80 TRB L0DCF REP #$20 PLA L11FC RTS *------------------------------- L11FD DB $00 DB $00 L11FF DB $00 L1200 DB $00 L1201 DB $00 L1202 DB $00 fgZIPGS DW $0000 ; 0: no ZipGS, -1: we have one freqSTEP DW $0002 ; 0: 0%, 15: 100% *------------------------------- L1207 LDX #L130D L120A LDA L1210,X DEX BNE L120A L1210 SEP #$30 JSR L12CF LDAL CLRAN1 STA L1202 STAL CLRAN1 LDAL SETAN1 STA L1201 LDAL CLRAN0 STA L11FF LDAL SETAN2 STA L1200 JSR L12CB REP #$30 JSR L1282 JSR L12E2 RTS L1241 JSR L12B3 JSR L1248 RTS L1248 SEP #$30 JSR L12CF LDA L11FF STAL CLRAN0 LDA L1200 STAL SETAN2 LDA freqSTEP CMP #$00 BEQ L1276 SEC LDA #$10 SBC freqSTEP ASL ASL ASL ASL STAL CLRAN2 STAL CLRAN1 BRA L127C L1276 STA CLRAN2 JSR L12C7 L127C JSR L12CB REP #$30 RTS L1282 SEP #$10 LDX L1202 PHX PHX TXA AND #$0003 PHA LDX L11FF LDY L1200 PHY PHX REP #$10 PLA AND #$FFF8 STA L11FD PLA ORA L11FD STA L11FD PLA AND #$0010 LSR LSR ORA L11FD STA L11FD RTS L12B3 LDA L11FD AND #$FFFB PHA SEP #$10 PLX PLY STX L11FF STY L1200 REP #$10 RTS MX %10 L12C7 LDA #$00 BRA L12DD L12CB LDA #$A5 BRA L12DD L12CF LDA #$5A STAL SETAN1 STAL SETAN1 STAL SETAN1 L12DD STAL SETAN1 RTS L12E2 SEP #$20 LDA L1201 AND #$F0 LSR LSR LSR LSR STA L1201 SEC LDA #$10 SBC L1201 REP #$20 AND #$00FF STA freqSTEP LDA L11FD BIT #$0004 BEQ L130C LDA #$0000 STA freqSTEP L130C RTS MX %10 L130D ASC "Zip GS is Disabled"00 L1320 ASC "MHz "00 L132B ASC " "00 L1330 DB $00 DB $00 L1332 DB $00 L1333 DB $00 L1334 DB $00 L1335 DB $00 L1336 DB $00 DB $00 L1338 DB $00 DB $00 L133A DB $00 DB $00 DB $00 DB $00 *------------------------------- L133E SEP #$10 LDX #$10 LDY #$0A REP #$10 JSR L1095 L1349 LDA #$0000 STA L1334 STA L1336 STA L1338 STA L133A JSR L13CC SEP #$30 LDA freqSTEP BNE L136D REP #$30 LDA #L130D STA $06 JSR L107B RTS L136D REP #$30 LDA L1330 PHA PEA ^L1334 PEA L1334 PEA $0006 PEA $0000 _Int2Dec SEP #$30 LDY #$FF L138A INY LDA L1334,Y CMP #$00 BNE L138A LDA #$A0 STA L1333,Y STA L1334,Y LDA #$00 STA L1335,Y DEY LDX #$02 L13A2 DEY LDA L1334,Y STA L1335,Y DEX BNE L13A2 LDA #$AE STA L1334,Y REP #$30 LDA #L132B STA $06 JSR L107B LDA #L1334 STA $06 JSR L107B LDA #L1320 STA $06 JSR L107B RTS *------------------------------- L13CC LDA #$0000 STA L1330 STA L1332 LDY #$00C1 L13D8 LDA L13D8,Y DEY BNE L13D8 PHP SEI SEP #$30 LDAL CYAREG STA L148B AND #$7F STAL CYAREG LDA #$5A ; unlock STAL SETAN1 STAL SETAN1 STAL SETAN1 STAL SETAN1 LDA freqSTEP BEQ L141A LDA #$10 SEC SBC freqSTEP ASL ASL ASL ASL STAL CLRAN2 STAL CLRAN1 BRA L141E L141A STAL SETAN1 L141E LDAL CLRAN0 STA L148C AND #$D7 STAL CLRAN0 LDA #$80 STAL SETAN3 LDA #$00 STAL SETAN3 REP #$30 LDY #$0064 LDX #$0000 L143F LDAL SETAN1 BPL L143F L1445 LDAL SETAN1 BMI L1445 L144B LDAL SETAN1 BPL L144B L1451 TXA LDX #$0005 L1455 DEX BNE L1455 NOP NOP CLC ADC #$0001 TAX LDAL SETAN1 BMI L1451 DEY BNE L144B TXA CLC ADC #$0005 STAL L1330 SEP #$20 LDA L148C STAL CLRAN0 LDA L148B STAL CYAREG LDA #$A5 STAL SETAN1 REP #$20 PLP RTS L148B DB $00 L148C DB $00 *------------------------------- * checkZIPGS *------------------------------- checkZIPGS STZ fgZIPGS LDY #$0000 ; wait a big number of cycles L1493 LDA L1493,Y DEY BNE L1493 PHP SEP #$20 LDA #$5A ; unlock STAL SETAN1 STAL SETAN1 STAL SETAN1 STAL SETAN1 LDAL CLRAN0 ; save value EOR #$F8 STA L14DA STAL CLRAN0 LDAL CLRAN0 ; read again CMP L14DA ; same value? BNE L14D8 ; nope, it was write-only, so no ZipGS EOR #$F8 ; yes, restore the original value STAL CLRAN0 LDA #$A5 ; lock the beast STAL SETAN1 REP #$20 LDA #$FFFF ; and say we have a ZipGSX STA fgZIPGS L14D8 PLP RTS L14DA DB $00 *------------------------------- * Big buffer *------------------------------- L14DB DS $800,$01