home *** CD-ROM | disk | FTP | other *** search
/ 64'er / 64ER_CD.iso / 92xx / 9207.d64 / escos.src (.txt) < prev    next >
Commodore BASIC  |  1995-03-30  |  8KB  |  230 lines

  1. 1000 REM OPEN1,8,1,"O:ESCOS.OBJ"
  2. 1020 SYS 9*4096
  3. 1040 ;
  4. 1060 .OPT P,OO
  5. 1080 ;
  6. 1100 *= $8000
  7. 1120 ;
  8. 1140 ; **********************************************************
  9. 1160 ; * EXPANDED SPRITES CONTROLLED SCREEN BY M. SACHS IN 1992 *
  10. 1180 ; **********************************************************
  11. 1200 ;
  12. 1220 ; BENUTZTE VEKTOREN UND ADRESSEN
  13. 1240 ;
  14. 1260 NMIVEK   = $FFFA ; NMI-VEKTOR
  15. 1280 IRQVEK   = $FFFE ; IRQ-VEKTOR
  16. 1300 ICR      = $DC0E ; INTERRUPT CONTROL REGISTER DER CIA1
  17. 1320 CRA      = $DC0D ; CONTROL REGISTER A DER CIA1
  18. 1340 VIC      = $D000 ; BASISADRESSE DES VIC
  19. 1360 VICPOS   = $DD00 ; ADRESSBEREICH DES VIC WIRD HIER FESTGELEGT
  20. 1380 SPOINT01 = $C7F8 ; SPRITE-POINTER FUER DIE ERSTEN ACHT SPRITES
  21. 1400 SPOINT02 = $CBF8 ; SPRITE-POINTER FUER DIE ZWEITEN ACHT SPRITES
  22. 1420 SPOINT03 = $CFF8 ; SPRITE-POINTER FUER DIE DRITTEN ACHT SPRITES
  23. 1440 SPOINT04 = $D3F8 ; SPRITE-POINTER FUER DIE VIERTEN ACHT SPRITES
  24. 1460 SPOINT05 = $D7F8 ; SPRITE-POINTER FUER DIE FUENFTEN ACHT SPRITES
  25. 1480 SPOINT06 = $DBF8 ; SPRITE-POINTER FUER DIE SECHSTEN ACHT SPRITES
  26. 1500 STREG1   = $D011 ; STEUERREGISTER 1 DES VIC
  27. 1520 STREG2   = $D016 ; STEUERREGISTER 2 DES VIC (SCROLL REGISTER)
  28. 1540 IRR      = $D019 ; INTERRUPT REQUEST REGISTER
  29. 1560 EXTERIOR = $D021 ; EXTERIOR COLOR (RAHMENFARBE)
  30. 1580 BASIS    = $D018 ; BASISADRESSE VON ZEICHENGENERATOR UND VIDEO RAM
  31. 1600 CPUPORT  = $01   ; HIER WIRD FESTGELEGT OB ROM ODER RAM AKTIV IST
  32. 1620 KOTAB1   = $3000 ; TABELLE MIT ZEIGERN AUF VIC-ADRESSEN
  33. 1640 KOTAB2   = $3100 ; TABELLE MIT WERTEN FUER VIC-ADRESSEN
  34. 1660 BLOCK    = $E000 ; SPRITE-BLOCK $80
  35. 1680 ;
  36. 1700 ; ***********************************************************************
  37. 1720 ;
  38. 1740 ; GENERIERUNG DER HILFSTABELLEN KOTAB1 UND KOTAB2
  39. 1760 ;
  40. 1780 :        LDY #$00
  41. 1800 :        TYA
  42. 1820 CLEAR    STA KOTAB1,Y
  43. 1840 :        STA KOTAB2,Y
  44. 1860 :        INY
  45. 1880 :        BNE CLEAR
  46. 1900 :        CLC
  47. 1920 :        LDX #$06
  48. 1940 :        LDY #$00
  49. 1960 LOOP2    LDA #$01
  50. 1980 LOOP1    INY
  51. 2000 :        STA KOTAB1,Y
  52. 2020 :        PHA
  53. 2040 :        LDA #$2A
  54. 2060 :        STA KOTAB2,Y
  55. 2080 :        PLA
  56. 2100 :        ADC #$02
  57. 2120 :        CMP #$11
  58. 2140 :        BNE LOOP1
  59. 2160 :        TYA
  60. 2180 :        ADC #$1F
  61. 2200 :        TAY
  62. 2220 :        LDA #$18
  63. 2240 :        STA KOTAB1,Y
  64. 2260 :        LDA #$10
  65. 2280 :        STA KOTAB2,Y
  66. 2300 :        INY
  67. 2320 :        INY
  68. 2340 :        DEX
  69. 2360 :        BNE LOOP2
  70. 2380 :        LDA #$11
  71. 2400 :        STA KOTAB1+$1E
  72. 2420 :        STA KOTAB1+$E4
  73. 2440 :        LDA #$10
  74. 2460 :        STA KOTAB2+$1E
  75. 2480 :        LDA #$88
  76. 2500 :        STA KOTAB2+$E4
  77. 2520 ;
  78. 2540 ; INTERRUPTROUTINE VORBEREITEN
  79. 2560 ;
  80. 2580 :        SEI            ; INTERRUPT SPERREN
  81. 2600 :        LDA #$35       ; KERNAL RAM EINBLENDEN
  82. 2620 :        STA CPUPORT
  83. 2640 :        LDX #<NEWNMI   ; NMI-VEKTOR AUF NEWNMI 'VERBIEGEN'
  84. 2660 :        LDY #>NEWNMI   ; DIENT NUR DAZU UM DIE RESTORE-TASTE
  85. 2680 :        STX NMIVEK     ; ZU NEUTRALISIEREN
  86. 2700 :        STY NMIVEK+1
  87. 2720 :        LDX #<NEWIRQ   ; IRQ-VEKTOR AUF NEWIRQ 'VERBIEGEN'
  88. 2740 :        LDY #>NEWIRQ
  89. 2760 :        STX IRQVEK
  90. 2780 :        STY IRQVEK+1
  91. 2800 :        LDA #$00
  92. 2820 :        STA ICR
  93. 2840 :        STA CRA        ; INTERRUPT DURCH TIMER VERHINDERN
  94. 2860 :        STA VICPOS     ; ADRESSBEREICH DES VIC NACH $C000-$FFFF
  95. 2880 ;
  96. 2900 ; VIC MIT ENTSPRECHENDEN WERTEN VERSORGEN
  97. 2920 ;
  98. 2940 :        LDX #$2E
  99. 2960 VICSET   LDA VICVALUE,X
  100. 2980 :        STA VIC,X
  101. 3000 :        DEX
  102. 3020 :        BPL VICSET
  103. 3040 ;
  104. 3060 ; SPRITEPOINTER SETZEN
  105. 3080 ;
  106. 3100 :        LDY #$07
  107. 3120 SETPOINT LDA POSTAB01,Y
  108. 3140 :        STA SPOINT01,Y
  109. 3160 :        LDA POSTAB02,Y
  110. 3180 :        STA SPOINT02,Y
  111. 3200 :        LDA POSTAB03,Y
  112. 3220 :        STA SPOINT03,Y
  113. 3240 :        DEC CPUPORT    ; I/O BEREICH AUSBLENDEN
  114. 3260 :        LDA POSTAB04,Y ; DA DIE SPRITEPOINTER
  115. 3280 :        STA SPOINT04,Y ; SPOINT04-SPOINT06
  116. 3300 :        LDA POSTAB05,Y ; IN DIESEM BEREICH LIEGEN
  117. 3320 :        STA SPOINT05,Y
  118. 3340 :        LDA POSTAB06,Y
  119. 3360 :        STA SPOINT06,Y
  120. 3380 :        INC CPUPORT    ; I/O BEREICH WIEDER EINBLENDEN
  121. 3400 :        DEY
  122. 3420 :        BPL SETPOINT
  123. 3440 ;
  124. 3460 ; SPRITEDATEN NACH $E000 KOPIEREN (BLOCK $80)
  125. 3480 ;
  126. 3500 :        LDY #$3F
  127. 3520 LABEL5   LDA SPRITE,Y
  128. 3540 :        STA BLOCK,Y
  129. 3560 :        DEY
  130. 3580 :        BPL LABEL5
  131. 3600 ;
  132. 3620 :        CLI            ; INTERRUPT WIEDER FREIGEBEN
  133. 3640 :        LDY #$00       ; UND IN ENDLOSSCHLEIFE SPRINGEN
  134. 3660 :        LDX #$00       ; UM DAS TIMING DES INTERRUPTPROGRAMMES
  135. 3680 ENDLESS  JMP ENDLESS    ; NICHT ZU STOEREN
  136. 3700 ;
  137. 3720 ; ***********************************************************************
  138. 3740 ; ***********************************************************************
  139. 3760 ;
  140. 3780 ; HIER BEGINNT DAS EIGENTLICHE INTERRUPTPROGRAMM
  141. 3800 ;
  142. 3820 NEWIRQ   BIT $00        ; TIMING
  143. 3840 :        NOP            ; TIMING
  144. 3860 NEXT     NOP            ; TIMING
  145. 3880 :        CLC            ; TIMING
  146. 3900 :        BIT $00        ; TIMING
  147. 3920 :        LDX KOTAB1,Y   ; VIC-ADRESSEN HOLEN
  148. 3940 :        STX EXECUTE+1  ; UND ABSPEICHERN
  149. 3960 :        LDA VIC,X      ; ALTE VIC-WERTE HOLEN
  150. 3980 :        ADC KOTAB2,Y   ; UND NEUE DAZU ADDIEREN
  151. 4000 :        DEC STREG2     ; SCROLL-REGISTER SCHALTEN
  152. 4020 EXECUTE  STA VIC        ; NEUE WERTE ABSPEICHERN
  153. 4040 :        INC STREG2     ; SCROLL-REGISTER SCHALTEN
  154. 4060 :        NOP            ; TIMING
  155. 4080 :        INY            ; SCHON ALLE WERTE DURCH
  156. 4100 :        BNE NEXT       ; NEIN, DANN ZURUECK
  157. 4120 ;
  158. 4140 :        LDX #$01
  159. 4160 :        LDA #$13       ; SPRITE Y-KOORDINATEN WIEDER
  160. 4180 OLDPOS   STA VIC,X      ; AUF ANFANGSWERT SETZEN
  161. 4200 :        INX
  162. 4220 :        INX
  163. 4240 :        CPX #$11       ; SCHON ALLE SPRITES
  164. 4260 :        BNE OLDPOS     ; NEIN, DANN ZURUECK
  165. 4280 :        LDA #$01
  166. 4300 :        STA IRR        ; INTERRUPT LOESCHEN
  167. 4320 :        LDA #$08
  168. 4340 :        STA STREG1     ; UP-DOWN BORDER EINSCHALTEN
  169. 4360 :        LDA #$10
  170. 4380 :        STA BASIS      ; BASISADRESSE WIEDER AUF ANFANGSWERT
  171. 4400 :        STA EXTERIOR   ; RAHMENFARBE AUF SCHWARZ
  172. 4420 NEWNMI   RTI            ; RETURN FROM INTERRUPT
  173. 4440 ;
  174. 4460 ; ***********************************************************************
  175. 4480 ; ***********************************************************************
  176. 4500 ;
  177. 4520 ; AB HIER FOLGEN DIE BENUTZTEN WERTE
  178. 4540 ;
  179. 4560 VICVALUE .BYTE $F0,$13,$28,$13
  180. 4580 :        .BYTE $58,$13,$88,$13 ; SPRITE KOORDINATEN
  181. 4600 :        .BYTE $B8,$13,$E8,$13
  182. 4620 :        .BYTE $18,$13,$48,$13
  183. 4640 :        .BYTE $C1             ; MSB FUER X-KOORDINATEN DER SPRITES
  184. 4660 :        .BYTE $08             ; STEUERREGISTER 1
  185. 4680 :        .BYTE $14             ; INTERRUPT BEI RASTERZEILE $14
  186. 4700 :        .BYTE $00             ; X-WERT (LIGHTPENSTROBE)
  187. 4720 :        .BYTE $00             ; DASSELBE FUER Y-WERT (HIER NICHT BENUTZT)
  188. 4740 :        .BYTE $FF             ; ALLE SPRITES EINSCHALTEN
  189. 4760 :        .BYTE $08             ; STEUERREGISTER 2 (UP-DOWN BORDER)
  190. 4780 :        .BYTE $FF             ; SPRITEEXPAND IN X-RICHTUNG
  191. 4800 :        .BYTE $10             ; BASISADRESSE VON ZEICHENG. UND VIDEO RAM
  192. 4820 :        .BYTE $00             ; INTERRUPT REQUEST REGISTER
  193. 4840 :        .BYTE $01             ; INTERRUPT MASK REGISTER
  194. 4860 :        .BYTE $00             ; SPRITE-BACKGROUND-PRIORITAET
  195. 4880 :        .BYTE $FF             ; MULTICOLORMODE FUER SPRITES
  196. 4900 :        .BYTE $FF             ; SPRITEEXPAND IN Y-RICHTUNG
  197. 4920 :        .BYTE $00             ; SPRITE-SPRITE-KOLLISION
  198. 4940 :        .BYTE $00             ; SPRITE-BACKGROUND-KOLLISION
  199. 4960 :        .BYTE $00             ; EXTERIORCOLOR (RAHMENFARBE)
  200. 4980 :        .BYTE $00             ; BACKGROUNDCOLOR (HINTERGRUNDFARBE)
  201. 5000 :        .BYTE $00             ; BACKGROUNDCOLOR 1
  202. 5020 :        .BYTE $00             ; BACKGROUNDCOLOR 2
  203. 5040 :        .BYTE $00             ; BACKGROUNDCOLOR 3
  204. 5060 :        .BYTE $0A             ; SPRITEMULTICOLOR 0
  205. 5080 :        .BYTE $0E             ; SPRITEMULTICOLOR 1
  206. 5100 :        .BYTE $07,$07,$07,$07 ; COLOR SPRITE 0
  207. 5120 :        .BYTE $07,$07,$07,$07 ; BIS SPRITE 7
  208. 5140 ;
  209. 5160 ; WERTE FUER DIE SPRITEPOINTER
  210. 5180 ;
  211. 5200 POSTAB01 .BYTE $80,$80,$80,$80,$80,$80,$80,$80
  212. 5220 POSTAB02 .BYTE $80,$80,$80,$80,$80,$80,$80,$80
  213. 5240 POSTAB03 .BYTE $80,$80,$80,$80,$80,$80,$80,$80
  214. 5260 POSTAB04 .BYTE $80,$80,$80,$80,$80,$80,$80,$80
  215. 5280 POSTAB05 .BYTE $80,$80,$80,$80,$80,$80,$80,$80
  216. 5300 POSTAB06 .BYTE $80,$80,$80,$80,$80,$80,$80,$80
  217. 5320 ;
  218. 5340 ; DATEN FUER SPRITE
  219. 5360 ;
  220. 5380 SPRITE   .BYTE $00,$00,$00,$27,$6D,$EC,$39,$DB
  221. 5400 :        .BYTE $B8,$1E,$76,$64,$37,$99,$DC,$2E
  222. 5420 :        .BYTE $66,$74,$19,$9D,$98,$26,$77,$6C
  223. 5440 :        .BYTE $39,$99,$98,$27,$6E,$E4,$39,$DB
  224. 5460 :        .BYTE $9C,$1E,$66,$74,$37,$9D,$EC,$1E
  225. 5480 :        .BYTE $E7,$B8,$39,$99,$EC,$27,$76,$74
  226. 5500 :        .BYTE $19,$DD,$98,$2E,$76,$EC,$1B,$9B
  227. 5520 :        .BYTE $74,$36,$6D,$DC,$00,$00,$00
  228. 5540 :        .END
  229. 5560 REM CLOSE1
  230.