home *** CD-ROM | disk | FTP | other *** search
- ;
- ; MULTIRUN 4*64K
- ;
- .OPT NOL,NOS,MEM
- FBANK =$02
- INDEX0 =$22
- INDEX1 =$24
- ;
- PIA =$DFC0
- PA =PIA
- CTRLA =PIA+1
- PB =PIA+2
- CTRLB =PIA+3
- ;
- VIDEO =$D000
- SSAVE =$D100
- SID =$D400
- COLRAM =$D800
- ;
- CHROUT =$FFD2
- ;
- *=$C800
- JSR $B7F1
- TXA
- LSR A
- PHP
- JSR $B7F1
- TXA
- ASL A
- PLP
- ROR A
- STA FBANK
- ;
- MULTI LDA CTRLA
- AND #%00000100
- BNE MULTI1
- LDX #11
- MULTI0 LDA MULTI3,X
- STA PIA,X
- DEX
- BPL MULTI0
- ;
- MULTI1 JSR PACK
- LDA FBANK
- BPL BCOPY
- JMP UNPACK
- MULTI3 .BYT $DC,%00110100
- .BYT $FE,%00000100
- .BYT $FF,0,$FF,0
- .BYT $DC,4,$FE,4
- ;
- ; BLOCK COPY
- ;
- ; VALITSE BANKKIIN 2 ($8000-$BFFF)
- ; KOHDELOHKO (FBANK)
- BCOPY9 LDA PA
- PHA
- AND #$0C
- ASL A
- ASL A
- ASL A
- ASL A
- STA INDEX0
- PLA
- AND #$3F
- ORA INDEX0
- STA PA
- BCOPY LDA FBANK
- AND #%00000011
- STA FBANK
- LDA PA
- AND #%00001100
- ASL A
- ASL A
- ORA FBANK
- ASL A
- ASL A
- ORA #%00110000
- STA PB
- LDA PA
- AND #%11001111
- STA PA
- LDX #4
- LDY #0
- STY INDEX0
- BCOPY1 LDA #$40
- STA INDEX0+1
- STY INDEX1
- ASL A
- STA INDEX1+1
- BCOPY0 LDA (INDEX0),Y
- STA (INDEX1),Y
- INY
- BNE BCOPY0
- INC INDEX1+1
- INC INDEX0+1
- BPL BCOPY0
- DEX
- BEQ UNPACK
- INC PB
- CLC
- LDA PA
- ADC #$10
- STA PA
- BCC BCOPY1
- ;
- ; UNPACK - OHJELMAN SUORITUS
- ; UUDESSA LOHKOSSA
- ;
- UNPACK LDA FBANK
- AND #%11
- STA FBANK
- ;
- ; TARKISTA KOHDELOHKON KUNTO
- ;
- LSR A
- ROR A
- ROR A
- STA INDEX0
- LDA PA
- AND #%00001111
- ORA INDEX0
- ORA #%00110000
- STA PA
- LDX #0
- UNPAC0 LDA MULTI,X
- CMP MULTI-$8000,X
- BNE BCOPY9
- INX
- BNE UNPAC0
- ; LOHKO OK, UNPACK
- UNPAC2 LDA FBANK
- ASL A
- ASL A
- ASL A
- ASL A
- ORA FBANK
- ASL A
- ASL A
- ORA #%00110000
- STA PA
- ORA #%00110010
- STA PB
- ;
- ; MOVE VIDEO CHIP
- LDY #46
- UNPAC3 LDA VIDEO-$8000,Y
- STA VIDEO,Y
- DEY
- BPL UNPAC3
- ; SILENCE SID
- INY
- STY SID+18
- ;
- ; MOVE COLOUR RAM
- UNPAC4 LDA COLRAM-$8000,Y
- STA COLRAM,Y
- LDA COLRAM-$7F00,Y
- STA COLRAM+$100,Y
- LDA COLRAM-$7E00,Y
- STA COLRAM+$200,Y
- LDA COLRAM-$7D00,Y
- STA COLRAM+$300,Y
- INY
- BNE UNPAC4
- ;
- ; RESTORE STACK POINTER
- LDX SSAVE-$8000
- TXS
- ;
- ; RETURN TO MAIN PROGRAM
- LDA PA
- AND #%11001111
- ORA #%00010000
- STA PA
- CLI
- RTS
- ;
- ; PACK THE PROGRAM
- ;
- PACK SEI
- LDA PA
- ORA #%00110000
- STA PA
- TSX
- INX
- INX
- STX SSAVE-$8000
- ; VIDEO
- LDY #48
- PACK0 LDA VIDEO,Y
- STA VIDEO-$8000,Y
- DEY
- BPL PACK0
- ;
- ; SAVE COLOUR RAM
- INY
- PACK1 LDA COLRAM,Y
- STA COLRAM-$8000,Y
- LDA COLRAM+$100,Y
- STA COLRAM-$7F00,Y
- LDA COLRAM+$200,Y
- STA COLRAM-$7E00,Y
- LDA COLRAM+$300,Y
- STA COLRAM-$7D00,Y
- INY
- BNE PACK1
- ;
- LDA PA
- AND #%11011111
- STA PA
- RTS
- .END
-