1REM H% -> Chan, G% -> From, F% -> To 2datch=6 9C$="2" 10INPUT LINE "Data channel: " datch 11H%=ASC(C$)-ASC("0") 20datacastbuff=&7C00 30bigbuff=&4000 31G%=bigbuff 40REM This version saves big buff to disk 50REM see lines 3691+..., 600+... 60REM see lines 3881,2891,3621... 70REM + 920... - 3901 80endaddr=&7C00 81F%=endaddr 90*KEY 9 SAVE"SEARCH"|MRUN|M 100*KEY 0 CLEAR|MMODE0|MLOAD"SEARCH"|ML.,100|M 110CLOSE#0 120MODE7 130rowdest = &A8 140rowdest1=&A9 141Q%=rowdest 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=&3000 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 1030Lda frame 1040Cmp #0 1050Bne ini01 1060Inc frame+1 1070.ini01 1080Inc frame 1090 Lda #0: Sta setrow 1100 Sta slot 1110 Tay 1120.readttxt 1130 Sty setrow 1140 Lda datareg 1150 Beq norow 1160 Lda #0 1170 Sty setrow 1180 Sta datareg 1190 Tya:Pha 1200 Jsr readrow 1210 Pla:Tay 1220.norow 1230 Iny 1240 Inc slot 1250 Cpy #16 1260 Bne readttxt 1270 Sta clrtxt 1280 \ Restore regs 1290 Pla:Tay:Pla:Tax:Pla:Sta &FC 1300 jmp (oldirq2v) 1310\ 1320.readrow 1330 Lda datareg \ Mag 1340 Tay:Lda hamtab,Y 1350 Bmi badhamm 1360 And #15 \ remove 'corrected' flag 1370Sta magno 1380 Lda datareg \ Row 1390 Tay:Lda hamtab,Y 1400 Bmi badhamm 1410 And #15 1420Sta rowno 1430 Lda magno 1440 Cmp #8 1450 Rol rowno 1460 And #7 1470 Sta magno 1480 Jmp selectdest 1490\ 1500.transfer40 1510Lda rowdest+1:Cmp #endaddr DIV 256:Bne carry_on 1520RTS: Lda #bigbuff MOD 256:Sta rowdest 1530 Lda #bigbuff DIV 256:Sta rowdest+1 1540.carry_on 1550 Ldy #0 1560 Lda frame:Sta (rowdest),Y:Iny 1570 Lda frame+1:Sta (rowdest),Y:Iny 1580 Lda slot:Sta (rowdest),Y:Iny 1590 Lda magno:Sta (rowdest),Y:Iny 1600 Lda rowno:Sta (rowdest),Y:Iny 1610.read40 1620 Lda datareg 1630 Sta (rowdest),Y 1640 Iny 1650 Cpy #45 1660 Bne read40 1661Ldy #7:Lda (rowdest),Y:Tay:Lda hamtab,Y:Bmi badhamm:And #15 1662Cmp #datch:Bne badhamm 1663INC &7D00 1670\???????????????????? 1680Lda rowdest:Clc:Adc #45:Sta rowdest 1690Lda rowdest+1:Adc #0:Sta rowdest+1 1700\????????????????????? 1710.badhamm 1720 Rts 1730\ 1740.selectdest 1750 Lda rowno 1760 Cmp #31 1770 Bne notdatacast 1780 Lda #datacastbuff MOD 256 1790\Sta rowdest ????????????? 1800 Lda #datacastbuff DIV 256 1810\Sta rowdest+1 ????????????? 1820 Jsr transfer40 1830 Rts 1840.notdatacast 1850 Rts 1860\ 1870.chan EQUB 1 1880.oldirq2v 1890 NOP:NOP 1900.magno NOP 1910.rowno NOP 1920.frame BRK:EQUB &FF \REM Frig for lazy initialisation... 1930.slot BRK 1940.hamtab 1950 EQUD &4101FF41 \ 1 1960 EQUD &FF4140FF 1970 EQUD &FF4142FF 1980 EQUD &47FFFF4A 1990 EQUD &FF4140FF 2000 EQUD &40FF0040 \ 0 2010 EQUD &4BFFFF46 2020 EQUD &FF4340FF 2030 EQUD &FF414CFF 2040 EQUD &47FFFF44 2050 EQUD &47FFFF46 2060 EQUD &074747FF \ 7 2070 EQUD &45FFFF46 2080 EQUD &FF4D40FF 2090 EQUD &FF464606 \ 6 2100 EQUD &47FFFF46 2110 EQUD &FF4142FF 2120 EQUD &49FFFF44 2130 EQUD &42FF0242 \ 2 2140 EQUD &FF4342FF 2150 EQUD &45FFFF48 2160 EQUD &FF4340FF 2170 EQUD &FF4342FF 2180 EQUD &4303FF43 \ 3 2190 EQUD &45FFFF44 2200 EQUD &FF444404 \ 4 2210 EQUD &FF4F42FF 2220 EQUD &47FFFF44 2230 EQUD &054545FF \ 5 2240 EQUD &45FFFF44 2250 EQUD &45FFFF46 2260 EQUD &FF434EFF 2270 EQUD &FF414CFF 2280 EQUD &49FFFF4A 2290 EQUD &4BFFFF4A 2300 EQUD &FF4A4A0A \ 10 2310 EQUD &4BFFFF48 2320 EQUD &FF4D40FF 2330 EQUD &0B4B4BFF \ 11 2340 EQUD &4BFFFF4A 2350 EQUD &4CFF0C4C \ 12 2360 EQUD &FF4D4CFF 2370 EQUD &FF4F4CFF 2380 EQUD &47FFFF4A 2390 EQUD &FF4D4CFF 2400 EQUD &4D0DFF4D \ 13 2410 EQUD &4BFFFF46 2420 EQUD &FF4D4EFF 2430 EQUD &49FFFF48 2440 EQUD &094949FF \ 9 2450 EQUD &FF4F42FF 2460 EQUD &49FFFF4A 2470 EQUD &FF484808 \ 8 2480 EQUD &49FFFF48 2490 EQUD &4BFFFF48 2500 EQUD &FF434EFF 2510 EQUD &FF4F4CFF 2520 EQUD &49FFFF44 2530 EQUD &4F0FFF4F \ 15 2540 EQUD &FF4F4EFF 2550 EQUD &45FFFF48 2560 EQUD &FF4D4EFF 2570 EQUD &FF4F4EFF 2580 EQUD &4EFF0E4E \ 14 2590.handledata 2600 Lda datacastbuff+8 2610 Ldx #0 2620 Tay 2630 Jsr osbyte 2640 Rts 2650\.datacastbuff EQUS STRING$(40, " ") 2660.osparamblk 2670 EQUS STRING$(16," ") 2680] 2690NEXT 2700OSCLI("SAVE DC "+STR$~(Code)+" "+STR$~(O%)+" FFFF"+STR$~(RunAddr)+" FFFF"+STR$~(RunAddr)) 2720CHAIN"NEXT3" 2730END 2740DEFFNRMB(N) 2750P%=P%+N 2760O%=O%+N 2770=Pass