100 REM OPEN2,8,1,"TOD BABY.O" 110 SYS700 120 ; 130 .OPT OO 140 ; 150 STATUS = $90 160 BUFFER = $0200 170 FRMEVL = $AD9E 180 GETCOMMA = $AEFD 190 ILLQUAN = $B248 200 IRQVEC = $314 210 ; 220 ; 230 JMP HOOK ; 240 JMP DROP ; 250 ; 260 CURRENT .BYTE 0,0,0,0 270 VALUES .BYTE 0,0,0,0 280 ; 290 ;--------------------- 300 ; 310 FBYTE JSR GETCOMMA ; 320 JSR FRMEVL ; 330 JMP $B1AA ; 340 ; 350 ; 360 HOOK = * 370 JSR FBYTE ; FETCH COLUMN NUMBER 380 STY COLUMN ; 390 ; 400 JSR FBYTE ; FETCH ROW NUMBER 410 STY ROW ; 420 ; 430 JSR FBYTE ; FETCH COLOR VALUE 440 STY COLOR ; 450 ; 460 JSR GETCOMMA ; FETCH 'PRINT USING' 470 JSR FRMEVL ; STRING/DEAL/BABY 480 JSR 46755 ; 490 ; 500 CMP #9 ; 510 BCC HYPNO ; 520 JMP $A571 ; 530 ; 540 HYPNO STA LENGTH ; SAVE BABY'S LENG 550 ; 560 LDA ROW ; SEE IF ROW IS LEGAL 570 CMP #25 ; 580 BCS OHNO ; 590 CLC ; 600 LDA LENGTH ; EXIT IF LENGTH = 0 610 BEQ OHNO ; 620 ADC COLUMN ; IF LENGTH+COLUMN>40 630 CMP #41 ; THEN EXIT THIS BABY 640 BCC ALLOK ; ELSE LIFE (null)ES ON 650 OHNO JMP ILLQUAN ; 660 ; 670 ALLOK = * 680 LDY #0 ; INIT MOST SIG. BYTE 690 LDA #0 ; INIT LEAST SIG. BYTE 700 LDX ROW ; FETCH ROW COUNT 710 BEQ SUIT ; EXIT IF ON ROW ZERO 720 ; 730 SILK CLC ; 740 ADC #40 ; 750 BCC SHARP ; 760 INY ; 770 SHARP DEX ; 780 BNE SILK ; 790 ; 800 SUIT CLC ; 810 ADC COLUMN ; 820 STA $FB ; 830 STA $FD ; 840 TYA ; 850 PHP ; 860 ADC 648 ; 870 STA $FC ; 880 TYA ; 890 PLP ; 900 ADC #$D8 ; 910 STA $FE ; 920 ; 930 LDX #3 ; ZERO-OUT THE TOD BABY 940 LDA #0 ; 950 GSL STA $DD08,X ; 960 STA VALUES,X ; 970 DEX ; 980 BPL GSL ; 990 ; 1000 LDA #>MYIRQ ; DO NOT RE-INSTALL 1010 CMP IRQVEC+1 ; MY BABY 1020 BNE NOTMINE ; 1030 RTS ; 1040 ; 1050 NOTMINE PHP ; SAVE INT STATUS 1060 SEI ; 1070 LDX IRQVEC+1 ; INSTALL MY BABY 1080 STX OLDIRQ+1 ; AND PRESERVE OLD 1090 STA IRQVEC+1 ; VECTOR AT THE 1100 LDA #MYIRQ ; 1220 BNE GETBACK ; 1230 PHP ; 1240 SEI ; 1250 LDA OLDIRQ ; RESTORE OLD IRQ VEC 1260 STA IRQVEC ; 1270 LDA OLDIRQ+1 ; 1280 STA IRQVEC+1 ; 1290 PLP ; 1300 GETBACK RTS ; 1310 ; 1320 ;----------------------- 1330 ; 1340 MYIRQ = * 1350 PHP ; 1360 SEI ; 1370 LDX #3 ; COPY TOD REG'S TO 1380 ACDC LDA $DD08,X ; LOCAL BUFFER 1390 STA CURRENT,X ; 1400 DEX ; 1410 BPL ACDC ; 1420 ; 1430 LDX #3 ; COMPARE WITH OLD VALUES 1440 TEARS LDA CURRENT,X ; 1450 CMP VALUES,X ; 1460 BNE TCB ; 1470 DEX ; 1480 BNE TEARS ; 1490 PLP ; PROCESS OLD IRQ IF THE TIME 1500 JMP (OLDIRQ) ; HASN'T CHANGED 1510 ; 1520 TCB LDX #3 ; NEW VALUES NOW BECOME 1530 CHEAP LDA CURRENT,X ; THE OLD 1540 STA VALUES,X ; VALUES! 1550 DEX ; 1560 BPL CHEAP ; 1570 ; 1580 LDY LENGTH ; 1590 DEY ; 1600 LDA VALUES+1 ; HANDLE SECONDS 1610 JSR COMMONL ; 1620 BMI EXIT ; 1630 LDA VALUES+1 ; 1640 AND #$7F ; 1650 JSR COMMONU ; 1660 BMI EXIT ; 1670 LDA #$3A ; PRINT A COLON 1680 JSR COMMONOK ; 1690 BMI EXIT ; 1700 LDA VALUES+2 ; HANDLE MINUTES 1710 JSR COMMONL ; 1720 BMI EXIT ; 1730 LDA VALUES+2 ; 1740 AND #$7F ; 1750 JSR COMMONU ; 1760 BMI EXIT ; 1770 LDA #$3A ; PRINT A COLON 1780 JSR COMMONOK ; 1790 BMI EXIT ; 1800 LDA VALUES+3 ; HANDLE HOURS 1810 JSR COMMONL ; 1820 BMI EXIT ; 1830 LDA VALUES+2 ; 1840 AND #$1F ; 1850 JSR COMMONU ; 1860 EXIT PLP ; 1870 JMP (OLDIRQ) ; 1880 ; 1890 COMMONU LSR A ; 1900 LSR A ; 1910 LSR A ; 1920 LSR A ; 1930 ; 1940 COMMONL AND #15 ; 1950 ORA #$30 ; 1960 COMMONOK STA ($FB),Y ; 1970 LDA COLOR ; 1980 STA ($FD),Y ; 1990 DEY ; 2000 RTS ; 2010 COLOR *=*+1 2020 ROW *=*+1 2030 COLUMN *=*+1 2040 LENGTH *=*+1 2050 OLDIRQ *=*+2