10INPUT LINE "Channel: " C$ 20datacastbuff=&7C00 30bigbuff=&5800 40REM This version saves big buff to disk 50REM see lines 3691+..., 600+... 60REM see lines 3881,2891,3621... 70REM + 920... - 3901 80endaddr=&7C00 90*KEY 9 SAVE"SEARCH"|MRUN|M 100*KEY 0 CLEAR|MMODE0|MLOAD"SEARCH"|ML.,100|M 110CLOSE#0 120MODE7 130rowdest = &A8 140rowdest1=&A9 150intzp0 = &AA 160intzp1=&AB 170main0=&AC 180main1=&AD 190main2=&AE 200main3=&AF 210ctrlstatus = &FC10 220setrow = &FC11 230datareg = &FC12 240clrtxt = &FC13 250REM 260ttxtenable = &1C 270ttxtdisable = 0 280irq2v = &206 290osLine = &F2 300osascii = &FFE3 310oswrch = &FFEE 320osfile = &FFDD 330osbyte = &FFF4 340osrdch = &FFE0 350osword = &FFF1 360REM 370DIM Code &800 380RunAddr=&5000 390FOR Pass = 4 TO 6 STEP 2 400O%=Code 410 P% = RunAddr 420[OPT Pass 430 Ldy #0 440 Jsr &FFC2 450.skipp 460 Lda (osLine),Y 470 Cmp #32:Beq getch 480 Cmp #13:Beq ch2 490 Iny:Jmp skipp 500.ch2 Lda #ASC("2") 510 jmp gotch 520.getch 530 iny 540 Lda (osLine),Y 550.gotch 560 Clc: Sbc #ASC("0") 570 And #3 580 Sta chan 590 Jsr initInt 600Lda #bigbuff MOD 256:Sta rowdest 610Lda #bigbuff DIV 256:Sta rowdest+1 620\????????????????????? 630.mainloop 640Lda rowdest+1 650Cmp #endaddr DIV 256 660Bne qweewq 670 Jmp termin8 \ Buffer filled 680.qweewq 690Bit &FF:Bpl mainloop 700.termin8 710 Jsr stopInt 720 Lda #126 730 Jsr osbyte 740 Rts 750.initInt 760 Sei 770 Lda irq2v:Sta oldirq2v 780 Lda irq2v+1:Sta oldirq2v+1 790 Lda #irq2 MOD 256: Sta irq2v 800 Lda #irq2 DIV 256: Sta irq2v+1 810 Cli 820 Lda #ttxtenable 830 Clc:Adc chan 840 Sta ctrlstatus 850 Rts 860\ 870.stopInt 880 Lda #ttxtdisable 890 Sta ctrlstatus 900 Sei 910 Lda oldirq2v:Sta irq2v 920 Lda oldirq2v+1:Sta irq2v+1 930 Cli 940 Rts 950\ 960.irq2 970 Bit ctrlstatus 980 Bmi ourint 990 Jmp (oldirq2v) 1000.ourint 1010\ Save regs & state 1020Lda &FC:Pha:Txa:Pha:Tya:Pha 1030 Lda #0: Sta setrow 1040 Tay 1050.readttxt 1060 Sty setrow 1070 Lda datareg 1080 Beq norow 1090 Lda #0 1100 Sty setrow 1110 Sta datareg 1120 Tya:Pha 1130 Jsr readrow 1140 Pla:Tay 1150.norow 1160 Iny 1170 Cpy #16 1180 Bne readttxt 1190 Sta clrtxt 1200 \ Restore regs 1210 Pla:Tay:Pla:Tax:Pla:Sta &FC 1220 jmp (oldirq2v) 1230\ 1240.readrow 1250 Lda datareg \ Mag 1260 Tay:Lda hamtab,Y 1270 Bmi badhamm 1280 And #15 \ remove 'corrected' flag 1290Sta magno 1300 Lda datareg \ Row 1310 Tay:Lda hamtab,Y 1320 Bmi badhamm 1330 And #15 1340Sta rowno 1350 Lda magno 1360 Cmp #8 1370 Rol rowno 1380 And #7 1390 Sta magno 1400 Jmp selectdest 1410\ 1420.transfer40 1430Lda rowdest+1:Cmp #endaddr DIV 256:Bne carry_on 1440RTS: Lda #bigbuff MOD 256:Sta rowdest 1450 Lda #bigbuff DIV 256:Sta rowdest+1 1460.carry_on 1470 Ldy #0 1480 Lda magno:Sta (rowdest),Y:Iny 1490 Lda rowno:Sta (rowdest),Y:Iny 1500.read40 1510 Lda datareg 1520 Sta (rowdest),Y 1530 Iny 1540 Cpy #42 1550 Bne read40 1560\???????????????????? 1570Lda rowdest:Clc:Adc #42:Sta rowdest 1580Lda rowdest+1:Adc #0:Sta rowdest+1 1590\????????????????????? 1600.badhamm 1610 Rts 1620\ 1630.selectdest 1640 Lda rowno 1650 Cmp #31 1660\ Bne notdatacast 1670 Lda #datacastbuff MOD 256 1680\Sta rowdest ????????????? 1690 Lda #datacastbuff DIV 256 1700\Sta rowdest+1 ????????????? 1710 Jsr transfer40 1720 Rts 1730.notdatacast 1740 Rts 1750\ 1760.chan EQUB 1 1770.oldirq2v 1780 NOP:NOP 1790.magno NOP 1800.rowno NOP 1810.hamtab 1820 EQUD &4101FF41 \ 1 1830 EQUD &FF4140FF 1840 EQUD &FF4142FF 1850 EQUD &47FFFF4A 1860 EQUD &FF4140FF 1870 EQUD &40FF0040 \ 0 1880 EQUD &4BFFFF46 1890 EQUD &FF4340FF 1900 EQUD &FF414CFF 1910 EQUD &47FFFF44 1920 EQUD &47FFFF46 1930 EQUD &074747FF \ 7 1940 EQUD &45FFFF46 1950 EQUD &FF4D40FF 1960 EQUD &FF464606 \ 6 1970 EQUD &47FFFF46 1980 EQUD &FF4142FF 1990 EQUD &49FFFF44 2000 EQUD &42FF0242 \ 2 2010 EQUD &FF4342FF 2020 EQUD &45FFFF48 2030 EQUD &FF4340FF 2040 EQUD &FF4342FF 2050 EQUD &4303FF43 \ 3 2060 EQUD &45FFFF44 2070 EQUD &FF444404 \ 4 2080 EQUD &FF4F42FF 2090 EQUD &47FFFF44 2100 EQUD &054545FF \ 5 2110 EQUD &45FFFF44 2120 EQUD &45FFFF46 2130 EQUD &FF434EFF 2140 EQUD &FF414CFF 2150 EQUD &49FFFF4A 2160 EQUD &4BFFFF4A 2170 EQUD &FF4A4A0A \ 10 2180 EQUD &4BFFFF48 2190 EQUD &FF4D40FF 2200 EQUD &0B4B4BFF \ 11 2210 EQUD &4BFFFF4A 2220 EQUD &4CFF0C4C \ 12 2230 EQUD &FF4D4CFF 2240 EQUD &FF4F4CFF 2250 EQUD &47FFFF4A 2260 EQUD &FF4D4CFF 2270 EQUD &4D0DFF4D \ 13 2280 EQUD &4BFFFF46 2290 EQUD &FF4D4EFF 2300 EQUD &49FFFF48 2310 EQUD &094949FF \ 9 2320 EQUD &FF4F42FF 2330 EQUD &49FFFF4A 2340 EQUD &FF484808 \ 8 2350 EQUD &49FFFF48 2360 EQUD &4BFFFF48 2370 EQUD &FF434EFF 2380 EQUD &FF4F4CFF 2390 EQUD &49FFFF44 2400 EQUD &4F0FFF4F \ 15 2410 EQUD &FF4F4EFF 2420 EQUD &45FFFF48 2430 EQUD &FF4D4EFF 2440 EQUD &FF4F4EFF 2450 EQUD &4EFF0E4E \ 14 2460.handledata 2470 Lda datacastbuff+8 2480 Ldx #0 2490 Tay 2500 Jsr osbyte 2510 Rts 2520\.datacastbuff EQUS STRING$(40, " ") 2530.osparamblk 2540 EQUS STRING$(16," ") 2550] 2560NEXT 2570OSCLI("SAVE DC "+STR$~(Code)+" "+STR$~(O%)+" FFFF"+STR$~(RunAddr)+" FFFF"+STR$~(RunAddr)) 2580OSCLI("DC "+C$) 2590OSCLI("SAVE raw"+C$+" "+STR$~(bigbuff)+" "+STR$~(endaddr)) 2600END 2610DEFFNRMB(N) 2620P%=P%+N 2630O%=O%+N 2640=Pass