home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / Information / 256KB.UTILS.SFX / multi.a < prev    next >
Encoding:
Text File  |  1993-06-23  |  2.3 KB  |  214 lines

  1. ;
  2. ; MULTIRUN 4*64K
  3. ;
  4. .OPT NOL,NOS,MEM
  5. FBANK =$02
  6. INDEX0 =$22
  7. INDEX1 =$24
  8. ;
  9. PIA =$DFC0
  10. PA =PIA
  11. CTRLA =PIA+1
  12. PB =PIA+2
  13. CTRLB =PIA+3
  14. ;
  15. VIDEO =$D000
  16. SSAVE =$D100
  17. SID =$D400
  18. COLRAM =$D800
  19. ;
  20. CHROUT =$FFD2
  21. ;
  22. *=$C800
  23.  JSR $B7F1
  24.  TXA
  25.  LSR A
  26.  PHP
  27.  JSR $B7F1
  28.  TXA
  29.  ASL A
  30.  PLP
  31.  ROR A
  32.  STA FBANK
  33. ;
  34. MULTI LDA CTRLA
  35.  AND #%00000100
  36.  BNE MULTI1
  37.  LDX #11
  38. MULTI0 LDA MULTI3,X
  39.  STA PIA,X
  40.  DEX
  41.  BPL MULTI0
  42. ;
  43. MULTI1 JSR PACK
  44.  LDA FBANK
  45.  BPL BCOPY
  46.  JMP UNPACK
  47. MULTI3 .BYT $DC,%00110100
  48.  .BYT $FE,%00000100
  49.  .BYT $FF,0,$FF,0
  50.  .BYT $DC,4,$FE,4
  51. ;
  52. ; BLOCK COPY
  53. ;
  54. ; VALITSE BANKKIIN 2 ($8000-$BFFF)
  55. ; KOHDELOHKO (FBANK)
  56. BCOPY9 LDA PA
  57.  PHA
  58.  AND #$0C
  59.  ASL A
  60.  ASL A
  61.  ASL A
  62.  ASL A
  63.  STA INDEX0
  64.  PLA
  65.  AND #$3F
  66.  ORA INDEX0
  67.  STA PA
  68. BCOPY LDA FBANK
  69.  AND #%00000011
  70.  STA FBANK
  71.  LDA PA
  72.  AND #%00001100
  73.  ASL A 
  74.  ASL A
  75.  ORA FBANK
  76.  ASL A
  77.  ASL A
  78.  ORA #%00110000
  79.  STA PB
  80.  LDA PA
  81.  AND #%11001111
  82.  STA PA
  83.  LDX #4
  84.  LDY #0
  85.  STY INDEX0
  86. BCOPY1 LDA #$40
  87.  STA INDEX0+1
  88.  STY INDEX1
  89.  ASL A
  90.  STA INDEX1+1
  91. BCOPY0 LDA (INDEX0),Y
  92.  STA (INDEX1),Y
  93.  INY
  94.  BNE BCOPY0
  95.  INC INDEX1+1
  96.  INC INDEX0+1
  97.  BPL BCOPY0
  98.  DEX
  99.  BEQ UNPACK
  100.  INC PB
  101.  CLC
  102.  LDA PA
  103.  ADC #$10
  104.  STA PA
  105.  BCC BCOPY1
  106. ;
  107. ; UNPACK - OHJELMAN SUORITUS
  108. ; UUDESSA LOHKOSSA
  109. ;
  110. UNPACK LDA FBANK
  111.  AND #%11
  112.  STA FBANK
  113. ;
  114. ; TARKISTA KOHDELOHKON KUNTO
  115. ;
  116.  LSR A
  117.  ROR A
  118.  ROR A
  119.  STA INDEX0
  120.  LDA PA
  121.  AND #%00001111
  122.  ORA INDEX0
  123.  ORA #%00110000
  124.  STA PA
  125.  LDX #0
  126. UNPAC0 LDA MULTI,X
  127.  CMP MULTI-$8000,X
  128.  BNE BCOPY9
  129.  INX
  130.  BNE UNPAC0
  131. ; LOHKO OK, UNPACK
  132. UNPAC2 LDA FBANK
  133.  ASL A
  134.  ASL A
  135.  ASL A
  136.  ASL A
  137.  ORA FBANK
  138.  ASL A
  139.  ASL A
  140.  ORA #%00110000
  141.  STA PA
  142.  ORA #%00110010
  143.  STA PB
  144. ;
  145. ; MOVE VIDEO CHIP
  146.  LDY #46
  147. UNPAC3 LDA VIDEO-$8000,Y
  148.  STA VIDEO,Y
  149.  DEY
  150.  BPL UNPAC3
  151. ; SILENCE SID
  152.  INY
  153.  STY SID+18
  154. ;
  155. ; MOVE COLOUR RAM
  156. UNPAC4 LDA COLRAM-$8000,Y
  157.  STA COLRAM,Y
  158.  LDA COLRAM-$7F00,Y
  159.  STA COLRAM+$100,Y
  160.  LDA COLRAM-$7E00,Y
  161.  STA COLRAM+$200,Y
  162.  LDA COLRAM-$7D00,Y
  163.  STA COLRAM+$300,Y
  164.  INY
  165.  BNE UNPAC4
  166. ;
  167. ; RESTORE STACK POINTER
  168.  LDX SSAVE-$8000
  169.  TXS
  170. ;
  171. ; RETURN TO MAIN PROGRAM
  172.  LDA PA
  173.  AND #%11001111
  174.  ORA #%00010000
  175.  STA PA
  176.  CLI
  177.  RTS
  178. ;
  179. ; PACK THE PROGRAM
  180. ;
  181. PACK SEI
  182.  LDA PA
  183.  ORA #%00110000
  184.  STA PA
  185.  TSX
  186.  INX
  187.  INX
  188.  STX SSAVE-$8000
  189. ; VIDEO
  190.  LDY #48
  191. PACK0 LDA VIDEO,Y
  192.  STA VIDEO-$8000,Y
  193.  DEY
  194.  BPL PACK0
  195. ;
  196. ; SAVE COLOUR RAM
  197.  INY
  198. PACK1 LDA COLRAM,Y
  199.  STA COLRAM-$8000,Y
  200.  LDA COLRAM+$100,Y
  201.  STA COLRAM-$7F00,Y
  202.  LDA COLRAM+$200,Y
  203.  STA COLRAM-$7E00,Y
  204.  LDA COLRAM+$300,Y
  205.  STA COLRAM-$7D00,Y
  206.  INY
  207.  BNE PACK1
  208. ;
  209.  LDA PA
  210.  AND #%11011111
  211.  STA PA
  212.  RTS
  213. .END
  214.