home *** CD-ROM | disk | FTP | other *** search
- .DEF STASH
- .DEF FETCH
- .DEF SWAP
-
- .REF C$KERNIN
- .REF C$KERNOUT
- .REF C$105
- .REF C$106
-
- TOADDR = $02; &$03
- TOBANK = $04
- FROMADDR = $05; &$06
- FROMBANK = $07
- LEN = $08; &$09
-
- ;* STASH(TO, TOBANK, FROM, FROMBANK, LEN)
- ;* CHAR *TO;
- ;* INT TOBANK;
- ;* CHAR *FROM;
- ;* INT FROMBANK;
- ;* INT LEN;
- STASH
- STA $FB
- LDA #$0A
- LDX #$00
- LDY #$00
- JSR C$105
- JSR ├OMMON╙TART
-
- ;* ╙ET UP TO ACCESS ╔/╧ BLOCK
- JSR ╔╧BLOCK
-
- ;* ╙TORE 'TO' ADDRESS
- LDA TOADDR
- STA $DF04
- LDA TOADDR+1
- STA $DF05
-
- ;* ╙TORE 'FROM' ADDRESS
- LDA FROMADDR
- STA $DF02
- LDA FROMADDR+1
- STA $DF03
-
- ;* ╙TORE 'TO' BANK
- LDA TOBANK
- STA $DF06
-
- ;* ╙TORE LENGTH OF TRANSFER
- LDA LEN
- STA $DF07
- LDA LEN+1
- STA $DF08
-
- ;* ╙AVE OLD CLOCK SPEED
- LDA $D030
- STA CLOCKSPEED
-
- ;* ╙ET CLOCK SPEED TO SLOW
- LDA #0
- STA $D030
-
- ;* ═AKE APPROPRIATE NEW VALUE
- LDX FROMBANK
- JSR ╞IX╥EGS
-
- ;* ┴CTUALLY DO ╥┼├ CALL
- LDX FROMBANK
- LDY #%10010000
- JSR DMAñCALL
-
- ;* ╥ESTORE OLD VALUES
- LDA CLOCKSPEED
- STA $D030
- LDA RAMCONFIG
- STA $D506
- LDA CONFIGSAVE
- STA $FF00
-
- ;* ╬OW THAT WE'RE DONE, GO BACK TO ├
- LDA #$0A
- LDX #$00
- LDY #$00
- JMP C$106
-
- ;* SWAP(TO, TOBANK, FROM, FROMBANK, LEN)
- ;* CHAR *TO;
- ;* INT TOBANK;
- ;* CHAR *FROM;
- ;* INT FROMBANK;
- ;* INT LEN;
- SWAP
- STA $FB
- LDA #$0A
- LDX #$00
- LDY #$00
- JSR C$105
- JSR ├OMMON╙TART
-
- ;* ╙ET UP TO ACCESS ╔/╧ BLOCK
- JSR ╔╧BLOCK
-
- ;* ╙TORE 'TO' ADDRESS
- LDA TOADDR
- STA $DF04
- LDA TOADDR+1
- STA $DF05
-
- ;* ╙TORE 'FROM' ADDRESS
- LDA FROMADDR
- STA $DF02
- LDA FROMADDR+1
- STA $DF03
-
- ;* ╙TORE 'TO' BANK
- LDA TOBANK
- STA $DF06
-
- ;* ╙TORE LENGTH OF TRANSFER
- LDA LEN
- STA $DF07
- LDA LEN+1
- STA $DF08
-
- ;* ╙AVE OLD CLOCK SPEED
- LDA $D030
- STA CLOCKSPEED
-
- ;* ╙ET CLOCK SPEED TO SLOW
- LDA #0
- STA $D030
-
- ;* ═AKE APPROPRIATE NEW VALUE
- LDX FROMBANK
- JSR ╞IX╥EGS
-
- ;* ┴CTUALLY DO ╥┼├ CALL
- LDX FROMBANK
- LDY #%10010010
- JSR DMAñCALL
-
- ;* ╥ESTORE OLD VALUES
- LDA CLOCKSPEED
- STA $D030
- LDA RAMCONFIG
- STA $D506
- LDA CONFIGSAVE
- STA $FF00
-
- ;* ╬OW THAT WE'RE DONE, GO BACK TO ├
- LDA #$0A
- LDX #$00
- LDY #$00
- JMP C$106
-
- ;* FETCH(TO, TOBANK, FROM, FROMBANK, LEN)
- ;* CHAR *TO;
- ;* INT TOBANK;
- ;* CHAR *FROM;
- ;* INT FROMBANK;
- ;* INT LEN;
- FETCH
- STA $FB
- LDA #$0A
- LDX #$00
- LDY #$00
- JSR C$105
- JSR ├OMMON╙TART
-
- ;* ╙ET UP TO ACCESS ╔/╧ BLOCK
- JSR ╔╧BLOCK
-
- ;* ╙TORE 'TO' ADDRESS
- LDA TOADDR
- STA $DF02
- LDA TOADDR+1
- STA $DF03
-
- ;* ╙TORE 'FROM' ADDRESS
- LDA FROMADDR
- STA $DF04
- LDA FROMADDR+1
- STA $DF05
-
- ;* ╙TORE 'TO' BANK
- LDA FROMBANK
- STA $DF06
-
- ;* ╙TORE LENGTH OF TRANSFER
- LDA LEN
- STA $DF07
- LDA LEN+1
- STA $DF08
-
- ;* ╙AVE OLD CLOCK SPEED
- LDA $D030
- STA CLOCKSPEED
-
- ;* ╙ET CLOCK SPEED TO SLOW
- LDA #0
- STA $D030
-
- ;* ═AKE APPROPRIATE NEW VALUE
- LDX TOBANK
- JSR ╞IX╥EGS
-
- ;* ┴CTUALLY DO ╥┼├ CALL
- LDX TOBANK
- LDY #%10010001
- JSR DMAñCALL
-
- ;* ╥ESTORE OLD VALUES
- LDA CLOCKSPEED
- STA $D030
- LDA RAMCONFIG
- STA $D506
- LDA CONFIGSAVE
- STA $FF00
-
- ;* ╬OW THAT WE'RE DONE, GO BACK TO ├
- LDA #$0A
- LDX #$00
- LDY #$00
- JMP C$106
-
- ;*
- ;*** ╓ARIABLES
- ;*
- CLOCKSPEED .BSS 1
- TEMP .BSS 1
- RAMCONFIG .BSS 1
- CONFIGSAVE .BSS 1
-
- ;*
- ;*** ╙UBROUTINES
- ;*
-
- ;* ┴CCESS ╔/╧ BLOCK
- ╔╧BLOCK
- LDA $FF00
- STA CONFIGSAVE
- AND #%11111110
- STA $FF00
- RTS
-
- ;* ┴LLOW US TO ACCESS ANY BLOCK OF ╥┴═
- ╞IX╥EGS
- JSR C$KERNIN
- LDX #$FF
- LDY #$6B
- JSR C$KERNOUT
- AND #%01000000
- STA TEMP
- LDA $D506
- STA RAMCONFIG
- AND #%10111111
- ORA TEMP
- STA $D506
- RTS
-
- ;* ├OMMON START CODE
- ├OMMON╙TART
- LDY #0 ; START AT START OF PARMS
- LDA ($82),┘
- STA TOADDR
- INY
- LDA ($82),Y
- STA TOADDR+1
- INY
- LDA ($82),Y
- STA TOBANK
- INY
- INY
- LDA ($82),Y
- STA FROMADDR
- INY
- LDA ($82),Y
- STA FROMADDR+1
- INY
- LDA ($82),Y
- STA FROMBANK
- INY
- INY
- LDA ($82),Y
- STA LEN
- INY
- LDA ($82),Y
- STA LEN+1
- RTS
-
- ;* ─O ACTUAL ─═┴ CALL
- DMAñCALL
- TXA ; ╙AVE BANK TO USE
- PHA
- TYA ; ╙AVE ╥┼├ COMMAND BYTE
- PHA
- LDX #5 ; ╞IX UP ─═┴ STUFF TO SET CONFIGURATION CORRECTLY
- DMAñLOOP1
- LDA DMAñCHANGE,X
- STA $03F3,X
- DEX
- BPL DMAñLOOP1
-
- PLA ; ╥ESTORE ╥┼├ COMMAND BYTE
- TAY
- PLA ; ╥ESTORE BANK TO USE
- TAX
- JSR C$KERNIN ; ─O ACTUAL ─═┴ CALL
- LDX #$FF
- LDY #$50
- JMP C$KERNOUT
-
- LDX #5
- DMAñLOOP2 ; ╥ESTORE ─═┴ STUFF TO ORIGINAL VALUES
- LDA DMAñORIG,X
- STA $03F3,X
- DEX
- BPL DMAñLOOP2
- RTS
-
- DMAñCHANGE
- STA $FF00
- STY $DF01
- DMAñORIG
- STY $DF01
- STA $FF00
-