home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er
/
64ER_CD.iso
/
90xx
/
9005a.d64
/
nofreeze.src
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-03-30
|
3KB
|
100 lines
10 SYS9*4096
20 .OPT OO
30 *=$C000
40 ;
50 IRQVEK = $0314 ; VEKTOR AUF IRQ-ROUTINE
60 VICREG = $D011 ; VIC-CONTROLLREGISTER 1
70 RASTER = $D012 ; AKTUELLE RASTERZEILE
80 IRQFRQ = $DC04 ; REGISTER FUER IRQ-FREQUENZ (LO/HI)
90 CIACTL = $DC0E ; CIA1-CONTROLLREGISTER
100 NRMIRQ = $EA31 ; NORMALE IRQ-ROUTINE
110 RESET = $FCE2 ; RESET-ROUTINE
120 ;
130 LINE = 250 ; RASTERZEILE FUER INTERRUPT
140 ;
150 LDA #0 ; CIA-INTERRUPTS
160 STA CIACTL ; SPERREN
170 LDA #<ROUT ; IRQ-VEKTOR
180 LDX #>ROUT ; AUF EIGENE
190 STA IRQVEK ; ROUTINE
200 STX IRQVEK+1 ; BIEGEN
210 LDA #199 ; CIA-INTERRUPT-FREQUENZ
220 LDX #76 ; AUF UNGEFAEHR
230 STA IRQFRQ ; 50 HZ STELLEN
240 STX IRQFRQ+1 ; (SO WIE BEI RASTER-IRQ)
250 I1 LDA VICREG ; WARTEN, BIS RASTERZEILE
260 BPL I1 ; >255
270 I1A LDA VICREG ; WARTEN, BIS RASTERZEILE
280 BMI I1A ; WIEDER =0
290 LDA #LINE-5 ; WARTEN, BIS RASTERSTRAHL
300 I2 CMP RASTER ; 5 ZEILEN UNTER DER
310 BNE I2 ; GEWUENSCHTEN ZEILE IST
320 LDA #1 ; CIA-INTERRUPTS
330 STA CIACTL ; WIEDER FREIGEBEN
340 RTS
1000 ;
1010 ROUT LDA RASTER; MOMENTANE RASTERZEILE
1020 CMP #LINE-5 ; = STARTZEILE?
1030 BEQ OK ; WENN JA, DANN ZU OK
1040 LDX #8 ; VERZOEGERN, BIS RASTERSTRAHL
1050 C1 DEX ; NAECHSTE ZEILE
1060 BNE C1 ; ERREICHT HAT
1070 LDA RASTER ; MOMENTANE RASTERZEILE
1080 CMP #LINE-4 ; = STARTZEILE-1? (ZUR SICHERHEIT)
1090 BEQ OK ; WENN JA, DANN ZU OK
1100 JMP RESET ; WENN NEIN, DANN RESET (=> FREEZESCHUTZ)
1110 OK LDA #LINE-3 ; DAFUER SORGEN,
1120 W1 CMP RASTER ; DASS DIE GE-
1130 BNE W1 ; WUENSCHTE RASTER-
1140 LDX #10 ; ZEILE (LINE) AB-
1150 W2 DEX ; SOLUT FLIMMERFREI
1160 BNE W2 ; ANGESPRUNGEN WIRD
1170 NOP ; (NACHZULESEN IN
1180 LDA RASTER ; 64'ER 06/89,
1190 CMP #LINE-2 ; SEITE 90 FF)
1200 BEQ W3 ;
1210 BIT 2 ;
1220 NOP ;
1230 W3 LDX #9 ;
1240 W4 DEX ;
1250 BNE W4 ;
1260 NOP ;
1270 NOP ;
1280 NOP ;
1290 LDA RASTER ;
1300 CMP #LINE-1 ;
1310 BEQ W5 ;
1320 BIT 2 ;
1330 W5 LDX #10 ;
1340 W6 DEX ;
1350 BNE W6 ;
1360 NOP ;
1370 LDA RASTER ;
1380 CMP #LINE ;
1390 BNE W7 ;
1400 W7 LDX #5 ;
1410 W8 DEX ;
1420 BNE W8 ;
1430 NOP ; NOCHMALS
1440 NOP ; VERZOEGERN
1450 NOP ;
1460 NOP ;
1470 NOP ;
1480 NOP ;
1490 ;
1500 ; AB HIER FOLGT DANN DIE HAUPT-
1510 ; RASTER-INTERRUPT-ROUTINE, DIE SO
1520 ; WIE NORMAL PROGRAMMIERT WERDEN
1530 ; KANN, NUR BRAUCHT MAN DAS IRQ-
1540 ; REQUEST-REGISTER NICHT MEHR ZU
1550 ; LOESCHEN
2000 ;
2010 MAIN LDA #19 ; BILDSCHIRM AUF 24
2020 STA VICREG ; ZEILEN SCHALTEN
2030 LDX #14 ; VERZOEGERN
2040 L1 DEX ;
2050 BNE L1 ;
2060 LDA #27 ; WIEDER AUF 25 ZEILEN
2070 STA VICREG ; ZURUECKSCHALTEN
2080 JMP NRMIRQ ; ZUR NORMALEN INTERRUPT-ROUTINE