Home » CEEFAX disks » telesoftware14.adl » 27-03-89/GRABBER
27-03-89/GRABBER
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » CEEFAX disks » telesoftware14.adl |
Filename: | 27-03-89/GRABBER |
Read OK: | ✔ |
File size: | 29FE bytes |
Load address: | FFFF1900 |
Exec address: | FFFF8023 |
File contents
10REM> GRABBER 20MODE7 30DIM mcode &1000 :REM: space for machine code 40DIM buffer &400 :REM: page grabber buffer 50end=buffer+&3E4 60FORpass=buffer TO end STEP4 70pass!0=0 :REM: clear buffer 80NEXT 90PROCmcode :REM: assemble machine code 100INPUT"TV channel (1-4) = "answer$ 110channel?0=EVAL("&"+LEFT$(answer$,1))+&1B 120IF channel?0 < &1C THEN channel?0 = &1C 130IF channel?0 > &1F THEN channel?0 = &1F 140INPUT"Page number (3 digits) = "answer$ 150usermag?0=(EVAL("&"+LEFT$(answer$,1))AND 7) 160userpage?1=EVAL("&"+MID$(answer$,2,1)) 170?userpage=EVAL("&"+MID$(answer$,3,1)) 180VDU12,23,1,0;0;0;0; 190CALL mcode 200VDU30,23,1,1;0;0;0; 210END 220DEFPROCmcode 230packet=&70 :REM: row number of current packet 240magazine=&71 :REM: magazine number of current page 250grabflag=&72 :REM: 0=searching, &40=loading, &80=loaded 260usermag=&73 :REM: search for magazine 270userpage=&74 :REM: search for page, low byte + high byte 280workspace=&76 :REM: 2 byte workspace 290destination=&78 :REM: another 2 byte workspace 300channel=&7A :REM: TV channel 310irq2v=&206 :REM: IRQ2 vector 320ttxcontrol=&FC10 :REM: TTX control register, write only 330ttxstatus=&FC10 :REM: TTX status register, read only 340rowreg=&FC11 :REM: TTX row register, write only 350datareg=&FC12 :REM: TTX data register, read & write 360statclr=&FC13 :REM: TTX clear status register, read & write 370oswrch=&FFEE 380osbyte=&FFF4 390FOR pass=0 TO 2 STEP 2 400P%=mcode 410[OPT pass 420LDA #&00 430STA grabflag \ grabflag = searching 440LDX irq2v \ load secondary interrupt vector 450LDY irq2v+1 460STX oldirq2v \ save secondary interrupt vector 470STY oldirq2v+1 480LDX #interrupt MOD 256 \ install new interrupt routine 490LDY #interrupt DIV 256 500SEI \ disable interrupts when altering vectors 510STX irq2v 520STY irq2v+1 530CLI \ re-enable interrupts 540LDA channel \ load (channel number + #&1C) 550STA ttxcontrol \ enable TTX 560.mainloop 570LDA grabflag \ bit 7 set if read to display 580BPL continue \ branch if searching or loading 590JSR checkdouble \ check for double height characters 600JSR transfer \ transfer data to screen 610LDA #&00 620STA grabflag \ searching again 630.continue 640LDX #&00 \ screen row 650LDY #&08 \ screen column 660JSR vdu31 \ VDU 31,8,0 670.headloop 680LDA buffer,Y 690JSR oswrch \ write header on screen 700INY 710CPY #&28 \ decimal 40 720BCC headloop 730BIT &FF \ poll escape flag 740BPL mainloop \ loop if escape not pressed 750LDA #&7E \ decimal 126 760JSR osbyte \ acknowledge escape 770LDA #&00 780STA ttxcontrol \ disable TTX 790LDX oldirq2v \ load original vector 800LDY oldirq2v+1 810SEI \ disable interrupts when altering vector 820STX irq2v \ restore original vector 830STY irq2v+1 840CLI \ re-enable interrupts 850RTS \ return to BASIC 860.interrupt 870BIT ttxstatus \ poll TTX hardware 880BMI ttxinter \ branch if TTX interrupt 890JMP (oldirq2v) \ not TTX interrupt 900.ttxinter 910LDA &FC \ interrupt accumulator save register 920PHA \ push interrupt accumulator save register 930TXA 940PHA \ push X 950TYA 960PHA \ push Y 970BIT grabflag \ is a page ready for display? 980BMI clearstatus \ clear status and RTI if page grabbed 990CLD \ clear decimal flag 1000LDY #&00 \ start with row 0 1010.readttxt 1020STY rowreg \ try rows 0 to 15 1030LDA datareg \ load framing code (#&27) 1040BEQ emptyrow \ if zero try next row 1050TYA 1060PHA \ save row number 1070JSR readpacket 1080PLA 1090TAY \ restore row number 1100.emptyrow 1110INY \ increment row number 1120CPY #&10 \ try rows 0 - 15 1130BNE readttxt 1140.clearstatus 1150LDA #&00 1160LDY #&0F \ clear 16 rows in adaptor 1170.clearloop 1180STY rowreg 1190STA datareg 1200DEY 1210BPL clearloop 1220STA statclr \ clear status flags before returning 1230PLA 1240TAY \ restore Y 1250PLA 1260TAX \ restore X 1270PLA 1280STA &FC \ restore interrupt accumulator save register 1290RTI \ return from interrupt 1300.testflag 1310LDA grabflag 1320BEQ exit \ exit if searching 1330LDA #&80 \ if loading mark as loaded 1340STA grabflag \ page loaded 1350.exit 1360RTS 1370.readpacket 1380LDY datareg \ read magazine number 1390LDA hamtable,Y \ de-ham it 1400BMI testflag \ stop loading if error 1410STA magazine \ save magazine number 1420LDY datareg \ read packet number 1430LDA hamtable,Y \ de-ham it 1440BMI testflag \ stop loading if error 1450STA packet \ save packet number 1460LDA magazine \ load magazine number 1470CMP #&08 \ bit 3 of mag. number is bit 0 of packet number 1480ROL packet \ 5 bit packet number 1490AND #&07 \ use only bits 0-2 1500STA magazine \ 3 bit magazine number 1510LDA packet 1520CMP #&18 \ ignore TSDP, Datacast, etc. 1530BCS exit \ ie. use Level 1 Teletext only 1540PHA \ push packet number 1550ASL A \ packet number * 2 1560TAY 1570LDA bufftable,Y \ load buffer address, lsb 1580STA workspace \ store in zero page 1590LDA bufftable+1,Y \ load buffer address, msb 1600STA workspace+1 \ store in zero page 1610PLA \ pull packet number 1620CMP #&00 \ is it a header? 1630BNE notheader \ branch if not header 1640TAX \ init index for hammed data 1650.readheader 1660LDY datareg \ read data register 1670LDA hamtable,Y \ de-ham it 1680BMI testflag \ stop loading if error 1690STA buffer,X \ store de-hammed data 1700INX \ increment index 1710CPX #&08 \ use X = 0-7 1720BCC readheader \ continue reading hammed data 1730LDA grabflag \ are we loading or searching? 1740BEQ checkstart \ branch if searching 1750LDA magazine \ we must be loading a page 1760CMP usermag \ is it the magazine we want? 1770BNE out \ branch if not the one we want 1780LDA buffer \ low nybble of page number 1790CMP userpage \ is this the same as the one we are loading? 1800BNE endfound \ end of page when different 1810LDA buffer+1 \ high nybble of page number 1820CMP userpage+1 \ is this the same as the one we are loading? 1830BEQ out \ not end of page if the same 1840.endfound 1850LDA #&80 \ same magazine but different page numbers 1860STA grabflag \ page grabbed 1870.out 1880RTS 1890.checkstart 1900LDA buffer+5 \ check for subtitle 1910AND #&08 \ check bit 3 1920BNE out \ reject subtitles 1930LDA magazine \ load the header magazine number 1940CMP usermag \ is it the one we want? 1950BNE nextbyte \ branch if not the one 1960LDA userpage \ load lsb of wanted page number 1970CMP buffer \ the page we have 1980BNE nextbyte \ branch if not the one we want 1990LDA userpage+1 \ load msb of wanted page number 2000CMP buffer+1 \ the page we have 2010BNE nextbyte \ branch if not the one we want 2020LDA #&40 \ load this page 2030STA grabflag \ page loading 2040RTS 2050.nextbyte 2060LDA buffer+6 \ check for suppress and out of sequence 2070AND #&05 \ check bits 0 and 2 2080BNE return \ reject suppress and out of sequence 2090LSR buffer+7 \ check for serial magazine 2100BCS display \ load the rest of the header 2110LDA magazine \ current magazine number 2120CMP usermag \ load if same magazine 2130BNE return \ don't load if different magazine 2140.display 2150LDY #&08 \ header data starts at byte 8 2160BNE readmore \ go to read the header 2170.notheader 2180BIT grabflag \ is a page loading? 2190BVC return \ return if page not loading 2200LDA magazine \ is the magazine number the one we want? 2210CMP usermag 2220BNE return \ return if different magazine 2230LDY #&00 \ read bytes 0 - 39 2240.readmore 2250LDA datareg \ read data register 2260ORA #&80 \ set bit 7 2270STA (workspace),Y \ store in buffer 2280INY \ increment index 2290CPY #&28 \ decimal 40 2300BNE readmore \ more data in this packet 2310.return 2320RTS 2330.checkdouble 2340LDX #&01 \ screen row numbers 1-23 2350.nextcolumn 2360LDY #&00 \ screen column numbers 0-40 2370JSR setup \ set up workspace for indirect addressing 2380.singleloop 2390LDA (workspace),Y 2400JSR conceal \ check for concealed display 2410CMP #&8D \ TTX double height character 2420BEQ doubleheight 2430INY 2440CPY #&28 \ decimal 40 2450BCC singleloop 2460.carryset 2470INX 2480CPX #&18 \ decimal 24 2490BCC nextcolumn 2500RTS 2510.doubleheight 2520LDY #&00 2530TXA 2540PHA \ store row number 2550INX 2560TXA 2570ASL A \ (row number + 1) * 2 2580TAX 2590LDA bufftable,X 2600STA destination 2610LDA bufftable+1,X 2620STA destination+1 2630PLA 2640TAX \ restore row number 2650.doubleloop 2660LDA (workspace),Y 2670JSR conceal \ check for concealed display 2680STA (destination),Y 2690INY 2700CPY #&28 \ decimal 40 2710BCC doubleloop 2720INX 2730CPX #&17 \ decimal 23 2740BCC carryset 2750RTS 2760.conceal 2770CMP #&98 \ TTX conceal display character 2780BNE goback 2790LDA #ASC(" ") \ substitute with a space 2800STA (workspace),Y 2810.goback 2820RTS 2830.setup 2840TXA 2850PHA \ store row number 2860ASL A \ (row number) * 2 2870TAX 2880LDA bufftable,X 2890STA workspace 2900LDA bufftable+1,X 2910STA workspace+1 2920PLA 2930TAX \ restore row number 2940RTS 2950.transfer 2960LDX #&01 \ screen rows 1-23 2970.nextline 2980LDY #&00 \ columns 0-39 2990JSR vdu31 3000JSR setup \ set up workspace for indirect addressing 3010.writescreen 3020LDA (workspace),Y \ load data from buffer 3030JSR oswrch \ write to screen 3040LDA #ASC(" ") \ space character 3050STA (workspace),Y \ clear buffer 3060INY 3070CPY #&28 \ decimal 40 3080BCC writescreen 3090INX 3100CPX #&18 \ decimal 24 3110BCC nextline 3120RTS 3130.vdu31 3140LDA #&1F \ decimal 31 3150JSR oswrch 3160TYA 3170JSR oswrch 3180TXA 3190JMP oswrch \ and return 3200.oldirq2v 3210EQUW &00 3220.hamtable 3230EQUD &0101FF01 3240EQUD &FF0100FF 3250EQUD &FF0102FF 3260EQUD &07FFFF0A 3270EQUD &FF0100FF 3280EQUD &00FF0000 3290EQUD &0BFFFF06 3300EQUD &FF0300FF 3310EQUD &FF010CFF 3320EQUD &07FFFF04 3330EQUD &07FFFF06 3340EQUD &070707FF 3350EQUD &05FFFF06 3360EQUD &FF0D00FF 3370EQUD &FF060606 3380EQUD &07FFFF06 3390EQUD &FF0102FF 3400EQUD &09FFFF04 3410EQUD &02FF0202 3420EQUD &FF0302FF 3430EQUD &05FFFF08 3440EQUD &FF0300FF 3450EQUD &FF0302FF 3460EQUD &0303FF03 3470EQUD &05FFFF04 3480EQUD &FF040404 3490EQUD &FF0F02FF 3500EQUD &07FFFF04 3510EQUD &050505FF 3520EQUD &05FFFF04 3530EQUD &05FFFF06 3540EQUD &FF030EFF 3550EQUD &FF010CFF 3560EQUD &09FFFF0A 3570EQUD &0BFFFF0A 3580EQUD &FF0A0A0A 3590EQUD &0BFFFF08 3600EQUD &FF0D00FF 3610EQUD &0B0B0BFF 3620EQUD &0BFFFF0A 3630EQUD &0CFF0C0C 3640EQUD &FF0D0CFF 3650EQUD &FF0F0CFF 3660EQUD &07FFFF0A 3670EQUD &FF0D0CFF 3680EQUD &0D0DFF0D 3690EQUD &0BFFFF06 3700EQUD &FF0D0EFF 3710EQUD &09FFFF08 3720EQUD &090909FF 3730EQUD &FF0F02FF 3740EQUD &09FFFF0A 3750EQUD &FF080808 3760EQUD &09FFFF08 3770EQUD &0BFFFF08 3780EQUD &FF030EFF 3790EQUD &FF0F0CFF 3800EQUD &09FFFF04 3810EQUD &0F0FFF0F 3820EQUD &FF0F0EFF 3830EQUD &05FFFF08 3840EQUD &FF0D0EFF 3850EQUD &FF0F0EFF 3860EQUD &0EFF0E0E 3870.bufftable 3880EQUW buffer 3890EQUW buffer+40 3900EQUW buffer+(2*40) 3910EQUW buffer+(3*40) 3920EQUW buffer+(4*40) 3930EQUW buffer+(5*40) 3940EQUW buffer+(6*40) 3950EQUW buffer+(7*40) 3960EQUW buffer+(8*40) 3970EQUW buffer+(9*40) 3980EQUW buffer+(10*40) 3990EQUW buffer+(11*40) 4000EQUW buffer+(12*40) 4010EQUW buffer+(13*40) 4020EQUW buffer+(14*40) 4030EQUW buffer+(15*40) 4040EQUW buffer+(16*40) 4050EQUW buffer+(17*40) 4060EQUW buffer+(18*40) 4070EQUW buffer+(19*40) 4080EQUW buffer+(20*40) 4090EQUW buffer+(21*40) 4100EQUW buffer+(22*40) 4110EQUW buffer+(23*40) 4120EQUW buffer+(24*40) 4130] 4140NEXT 4150ENDPROC
�> GRABBER �7 ,� mcode &1000 :�: space for machine code ()� buffer &400 :�: page grabber buffer 2end=buffer+&3E4 <�pass=buffer � end �4 Fpass!0=0 :�: clear buffer P� Z$�mcode :�: assemble machine code d!�"TV channel (1-4) = "answer$ n$channel?0=�("&"+�answer$,1))+&1B x'� channel?0 < &1C � channel?0 = &1C �'� channel?0 > &1F � channel?0 = &1F �'�"Page number (3 digits) = "answer$ �%usermag?0=(�("&"+�answer$,1))� 7) �#userpage?1=�("&"+�answer$,2,1)) �"?userpage=�("&"+�answer$,3,1)) ��12,23,1,0;0;0;0; �� mcode ��30,23,1,1;0;0;0; �� ���mcode �/packet=&70 :�: row number of current packet �4magazine=&71 :�: magazine number of current page �9grabflag=&72 :�: 0=searching, &40=loading, &80=loaded 'usermag=&73 :�: search for magazine :userpage=&74 :�: search for page, low byte + high byte &workspace=&76 :�: 2 byte workspace "0destination=&78 :�: another 2 byte workspace ,channel=&7A :�: TV channel 6irq2v=&206 :�: IRQ2 vector @9ttxcontrol=&FC10 :�: TTX control register, write only J6ttxstatus=&FC10 :�: TTX status register, read only T1rowreg=&FC11 :�: TTX row register, write only ^5datareg=&FC12 :�: TTX data register, read & write h=statclr=&FC13 :�: TTX clear status register, read & write roswrch=&FFEE |osbyte=&FFF4 �� pass=0 � 2 � 2 �P%=mcode � [OPT pass �LDA #&00 �'STA grabflag \ grabflag = searching �/LDX irq2v \ load secondary interrupt vector �LDY irq2v+1 �2STX oldirq2v \ save secondary interrupt vector �STY oldirq2v+1 �8LDX #interrupt � 256 \ install new interrupt routine �LDY #interrupt � 256 �2SEI \ disable interrupts when altering vectors � STX irq2v STY irq2v+1 CLI \ re-enable interrupts .LDA channel \ load (channel number + #&1C) &STA ttxcontrol \ enable TTX 0 .mainloop :/LDA grabflag \ bit 7 set if read to display D1BPL continue \ branch if searching or loading N8JSR checkdouble \ check for double height characters X*JSR transfer \ transfer data to screen bLDA #&00 l"STA grabflag \ searching again v .continue �LDX #&00 \ screen row �LDY #&08 \ screen column �JSR vdu31 \ � 31,8,0 � .headloop �LDA buffer,Y �'JSR oswrch \ write header on screen �INY �CPY #&28 \ decimal 40 �BCC headloop �BIT &FF \ poll escape flag �-BPL mainloop \ loop if escape not pressed �LDA #&7E \ decimal 126 �#JSR osbyte \ acknowledge escape LDA #&00 STA ttxcontrol \ disable TTX 'LDX oldirq2v \ load original vector LDY oldirq2v+1 *1SEI \ disable interrupts when altering vector 4'STX irq2v \ restore original vector >STY irq2v+1 HCLI \ re-enable interrupts RRTS \ return to BASIC \.interrupt f%BIT ttxstatus \ poll TTX hardware p*BMI ttxinter \ branch if TTX interrupt z&JMP (oldirq2v) \ not TTX interrupt � .ttxinter �1LDA &FC \ interrupt accumulator save register �2PHA \ push interrupt accumulator save register �TXA �PHA \ push X �TYA �PHA \ push Y �/BIT grabflag \ is a page ready for display? �:BMI clearstatus \ clear status and RTI if page grabbed �CLD \ clear decimal flag �LDY #&00 \ start with row 0 � .readttxt �!STY rowreg \ try rows 0 to 15 *LDA datareg \ load framing code (#&27) 'BEQ emptyrow \ if zero try next row TYA $PHA \ save row number .JSR readpacket 8PLA BTAY \ restore row number L .emptyrow VINY \ increment row number `CPY #&10 \ try rows 0 - 15 jBNE readttxt t.clearstatus ~LDA #&00 �'LDY #&0F \ clear 16 rows in adaptor �.clearloop �STY rowreg �STA datareg �DEY �BPL clearloop �5STA statclr \ clear status flags before returning �PLA �TAY \ restore Y �PLA �TAX \ restore X �PLA 9STA &FC \ restore interrupt accumulator save register RTI \ return from interrupt .testflag LDA grabflag ( BEQ exit \ exit if searching 2(LDA #&80 \ if loading mark as loaded <STA grabflag \ page loaded F .exit PRTS Z.readpacket d&LDY datareg \ read magazine number nLDA hamtable,Y \ de-ham it x(BMI testflag \ stop loading if error �'STA magazine \ save magazine number �$LDY datareg \ read packet number �LDA hamtable,Y \ de-ham it �(BMI testflag \ stop loading if error �#STA packet \ save packet number �'LDA magazine \ load magazine number �=CMP #&08 \ bit 3 of mag. number is bit 0 of packet number �$ROL packet \ 5 bit packet number �� #&07 \ use only bits 0-2 �(STA magazine \ 3 bit magazine number �LDA packet �*CMP #&18 \ ignore TSDP, Datacast, etc. �,BCS exit \ ie. use Level 1 Teletext only PHA \ push packet number ASL A \ packet number * 2 TAY ".LDA bufftable,Y \ load buffer address, lsb ,&STA workspace \ store in zero page 60LDA bufftable+1,Y \ load buffer address, msb @(STA workspace+1 \ store in zero page JPLA \ pull packet number TCMP #&00 \ is it a header? ^(BNE notheader \ branch if not header h$TAX \ init index for hammed data r.readheader |$LDY datareg \ read data register �LDA hamtable,Y \ de-ham it �(BMI testflag \ stop loading if error �'STA buffer,X \ store de-hammed data �INX \ increment index �CPX #&08 \ use X = 0-7 �1BCC readheader \ continue reading hammed data �/LDA grabflag \ are we loading or searching? �(BEQ checkstart \ branch if searching �,LDA magazine \ we must be loading a page �-CMP usermag \ is it the magazine we want? �+BNE out \ branch if not the one we want �*LDA buffer \ low nybble of page number �>CMP userpage \ is this the same as the one we are loading? -BNE endfound \ end of page when different -LDA buffer+1 \ high nybble of page number @CMP userpage+1 \ is this the same as the one we are loading? &)BEQ out \ not end of page if the same 0 .endfound :7LDA #&80 \ same magazine but different page numbers DSTA grabflag \ page grabbed N.out XRTS b.checkstart l%LDA buffer+5 \ check for subtitle v� #&08 \ check bit 3 �BNE out \ reject subtitles �2LDA magazine \ load the header magazine number �(CMP usermag \ is it the one we want? �(BNE nextbyte \ branch if not the one �1LDA userpage \ load lsb of wanted page number �!CMP buffer \ the page we have �0BNE nextbyte \ branch if not the one we want �3LDA userpage+1 \ load msb of wanted page number �#CMP buffer+1 \ the page we have �0BNE nextbyte \ branch if not the one we want �LDA #&40 \ load this page �STA grabflag \ page loading �RTS .nextbyte 9LDA buffer+6 \ check for suppress and out of sequence � #&05 \ check bits 0 and 2 4BNE return \ reject suppress and out of sequence *,LSR buffer+7 \ check for serial magazine 4-BCS display \ load the rest of the header >*LDA magazine \ current magazine number H'CMP usermag \ load if same magazine R1BNE return \ don't load if different magazine \.display f+LDY #&08 \ header data starts at byte 8 p(BNE readmore \ go to read the header z.notheader �%BIT grabflag \ is a page loading? �+BVC return \ return if page not loading �:LDA magazine \ is the magazine number the one we want? �CMP usermag �-BNE return \ return if different magazine � LDY #&00 \ read bytes 0 - 39 � .readmore �$LDA datareg \ read data register ��A #&80 \ set bit 7 �'STA (workspace),Y \ store in buffer �INY \ increment index �CPY #&28 \ decimal 40 �+BNE readmore \ more data in this packet .return RTS .checkdouble $&LDX #&01 \ screen row numbers 1-23 ..nextcolumn 8)LDY #&00 \ screen column numbers 0-40 B8JSR setup \ set up workspace for indirect addressing L.singleloop VLDA (workspace),Y `-JSR conceal \ check for concealed display j*CMP #&8D \ TTX double height character tBEQ doubleheight ~INY �CPY #&28 \ decimal 40 �BCC singleloop � .carryset �INX �CPX #&18 \ decimal 24 �BCC nextcolumn �RTS �.doubleheight �LDY #&00 �TXA �PHA \ store row number �INX TXA ASL A \ (row number + 1) * 2 TAX LDA bufftable,X (STA destination 2LDA bufftable+1,X <STA destination+1 FPLA PTAX \ restore row number Z.doubleloop dLDA (workspace),Y n-JSR conceal \ check for concealed display xSTA (destination),Y �INY �CPY #&28 \ decimal 40 �BCC doubleloop �INX �CPX #&17 \ decimal 23 �BCC carryset �RTS �.conceal �,CMP #&98 \ TTX conceal display character �BNE goback �)LDA #�(" ") \ substitute with a space �STA (workspace),Y �.goback RTS .setup TXA "PHA \ store row number ,ASL A \ (row number) * 2 6TAX @LDA bufftable,X JSTA workspace TLDA bufftable+1,X ^STA workspace+1 hPLA rTAX \ restore row number |RTS � .transfer �LDX #&01 \ screen rows 1-23 � .nextline �LDY #&00 \ columns 0-39 � JSR vdu31 �8JSR setup \ set up workspace for indirect addressing �.writescreen �-LDA (workspace),Y \ load data from buffer � JSR oswrch \ write to screen �!LDA #�(" ") \ space character �$STA (workspace),Y \ clear buffer �INY �CPY #&28 \ decimal 40 BCC writescreen INX CPX #&18 \ decimal 24 &BCC nextline 0RTS : .vdu31 DLDA #&1F \ decimal 31 NJSR oswrch XTYA bJSR oswrch lTXA vJMP oswrch \ and return � .oldirq2v �EQUW &00 � .hamtable �EQUD &0101FF01 �EQUD &FF0100FF �EQUD &FF0102FF �EQUD &07FFFF0A �EQUD &FF0100FF �EQUD &00FF0000 �EQUD &0BFFFF06 �EQUD &FF0300FF �EQUD &FF010CFF �EQUD &07FFFF04 EQUD &07FFFF06 EQUD &070707FF EQUD &05FFFF06 EQUD &FF0D00FF *EQUD &FF060606 4EQUD &07FFFF06 >EQUD &FF0102FF HEQUD &09FFFF04 REQUD &02FF0202 \EQUD &FF0302FF fEQUD &05FFFF08 pEQUD &FF0300FF zEQUD &FF0302FF �EQUD &0303FF03 �EQUD &05FFFF04 �EQUD &FF040404 �EQUD &FF0F02FF �EQUD &07FFFF04 �EQUD &050505FF �EQUD &05FFFF04 �EQUD &05FFFF06 �EQUD &FF030EFF �EQUD &FF010CFF �EQUD &09FFFF0A �EQUD &0BFFFF0A �EQUD &FF0A0A0A EQUD &0BFFFF08 EQUD &FF0D00FF EQUD &0B0B0BFF $EQUD &0BFFFF0A .EQUD &0CFF0C0C 8EQUD &FF0D0CFF BEQUD &FF0F0CFF LEQUD &07FFFF0A VEQUD &FF0D0CFF `EQUD &0D0DFF0D jEQUD &0BFFFF06 tEQUD &FF0D0EFF ~EQUD &09FFFF08 �EQUD &090909FF �EQUD &FF0F02FF �EQUD &09FFFF0A �EQUD &FF080808 �EQUD &09FFFF08 �EQUD &0BFFFF08 �EQUD &FF030EFF �EQUD &FF0F0CFF �EQUD &09FFFF04 �EQUD &0F0FFF0F �EQUD &FF0F0EFF �EQUD &05FFFF08 EQUD &FF0D0EFF EQUD &FF0F0EFF EQUD &0EFF0E0E .bufftable (EQUW buffer 2EQUW buffer+40 <EQUW buffer+(2*40) FEQUW buffer+(3*40) PEQUW buffer+(4*40) ZEQUW buffer+(5*40) dEQUW buffer+(6*40) nEQUW buffer+(7*40) xEQUW buffer+(8*40) �EQUW buffer+(9*40) �EQUW buffer+(10*40) �EQUW buffer+(11*40) �EQUW buffer+(12*40) �EQUW buffer+(13*40) �EQUW buffer+(14*40) �EQUW buffer+(15*40) �EQUW buffer+(16*40) �EQUW buffer+(17*40) �EQUW buffer+(18*40) �EQUW buffer+(19*40) �EQUW buffer+(20*40) �EQUW buffer+(21*40) EQUW buffer+(22*40) EQUW buffer+(23*40) EQUW buffer+(24*40) "] ,� 6� �
00000000 0d 00 0a 0e f4 3e 20 47 52 41 42 42 45 52 0d 00 |.....> GRABBER..| 00000010 14 06 eb 37 0d 00 1e 2c de 20 6d 63 6f 64 65 20 |...7...,. mcode | 00000020 26 31 30 30 30 20 3a f4 3a 20 73 70 61 63 65 20 |&1000 :.: space | 00000030 66 6f 72 20 6d 61 63 68 69 6e 65 20 63 6f 64 65 |for machine code| 00000040 0d 00 28 29 de 20 62 75 66 66 65 72 20 26 34 30 |..(). buffer &40| 00000050 30 20 3a f4 3a 20 70 61 67 65 20 67 72 61 62 62 |0 :.: page grabb| 00000060 65 72 20 62 75 66 66 65 72 0d 00 32 13 65 6e 64 |er buffer..2.end| 00000070 3d 62 75 66 66 65 72 2b 26 33 45 34 0d 00 3c 19 |=buffer+&3E4..<.| 00000080 e3 70 61 73 73 3d 62 75 66 66 65 72 20 b8 20 65 |.pass=buffer . e| 00000090 6e 64 20 88 34 0d 00 46 1d 70 61 73 73 21 30 3d |nd .4..F.pass!0=| 000000a0 30 20 3a f4 3a 20 63 6c 65 61 72 20 62 75 66 66 |0 :.: clear buff| 000000b0 65 72 0d 00 50 05 ed 0d 00 5a 24 f2 6d 63 6f 64 |er..P....Z$.mcod| 000000c0 65 20 3a f4 3a 20 61 73 73 65 6d 62 6c 65 20 6d |e :.: assemble m| 000000d0 61 63 68 69 6e 65 20 63 6f 64 65 0d 00 64 21 e8 |achine code..d!.| 000000e0 22 54 56 20 63 68 61 6e 6e 65 6c 20 28 31 2d 34 |"TV channel (1-4| 000000f0 29 20 3d 20 22 61 6e 73 77 65 72 24 0d 00 6e 24 |) = "answer$..n$| 00000100 63 68 61 6e 6e 65 6c 3f 30 3d a0 28 22 26 22 2b |channel?0=.("&"+| 00000110 c0 61 6e 73 77 65 72 24 2c 31 29 29 2b 26 31 42 |.answer$,1))+&1B| 00000120 0d 00 78 27 e7 20 63 68 61 6e 6e 65 6c 3f 30 20 |..x'. channel?0 | 00000130 3c 20 26 31 43 20 8c 20 63 68 61 6e 6e 65 6c 3f |< &1C . channel?| 00000140 30 20 3d 20 26 31 43 0d 00 82 27 e7 20 63 68 61 |0 = &1C...'. cha| 00000150 6e 6e 65 6c 3f 30 20 3e 20 26 31 46 20 8c 20 63 |nnel?0 > &1F . c| 00000160 68 61 6e 6e 65 6c 3f 30 20 3d 20 26 31 46 0d 00 |hannel?0 = &1F..| 00000170 8c 27 e8 22 50 61 67 65 20 6e 75 6d 62 65 72 20 |.'."Page number | 00000180 28 33 20 64 69 67 69 74 73 29 20 3d 20 22 61 6e |(3 digits) = "an| 00000190 73 77 65 72 24 0d 00 96 25 75 73 65 72 6d 61 67 |swer$...%usermag| 000001a0 3f 30 3d 28 a0 28 22 26 22 2b c0 61 6e 73 77 65 |?0=(.("&"+.answe| 000001b0 72 24 2c 31 29 29 80 20 37 29 0d 00 a0 23 75 73 |r$,1)). 7)...#us| 000001c0 65 72 70 61 67 65 3f 31 3d a0 28 22 26 22 2b c1 |erpage?1=.("&"+.| 000001d0 61 6e 73 77 65 72 24 2c 32 2c 31 29 29 0d 00 aa |answer$,2,1))...| 000001e0 22 3f 75 73 65 72 70 61 67 65 3d a0 28 22 26 22 |"?userpage=.("&"| 000001f0 2b c1 61 6e 73 77 65 72 24 2c 33 2c 31 29 29 0d |+.answer$,3,1)).| 00000200 00 b4 15 ef 31 32 2c 32 33 2c 31 2c 30 3b 30 3b |....12,23,1,0;0;| 00000210 30 3b 30 3b 0d 00 be 0b d6 20 6d 63 6f 64 65 0d |0;0;..... mcode.| 00000220 00 c8 15 ef 33 30 2c 32 33 2c 31 2c 31 3b 30 3b |....30,23,1,1;0;| 00000230 30 3b 30 3b 0d 00 d2 05 e0 0d 00 dc 0b dd f2 6d |0;0;...........m| 00000240 63 6f 64 65 0d 00 e6 2f 70 61 63 6b 65 74 3d 26 |code.../packet=&| 00000250 37 30 20 3a f4 3a 20 72 6f 77 20 6e 75 6d 62 65 |70 :.: row numbe| 00000260 72 20 6f 66 20 63 75 72 72 65 6e 74 20 70 61 63 |r of current pac| 00000270 6b 65 74 0d 00 f0 34 6d 61 67 61 7a 69 6e 65 3d |ket...4magazine=| 00000280 26 37 31 20 3a f4 3a 20 6d 61 67 61 7a 69 6e 65 |&71 :.: magazine| 00000290 20 6e 75 6d 62 65 72 20 6f 66 20 63 75 72 72 65 | number of curre| 000002a0 6e 74 20 70 61 67 65 0d 00 fa 39 67 72 61 62 66 |nt page...9grabf| 000002b0 6c 61 67 3d 26 37 32 20 3a f4 3a 20 30 3d 73 65 |lag=&72 :.: 0=se| 000002c0 61 72 63 68 69 6e 67 2c 20 26 34 30 3d 6c 6f 61 |arching, &40=loa| 000002d0 64 69 6e 67 2c 20 26 38 30 3d 6c 6f 61 64 65 64 |ding, &80=loaded| 000002e0 0d 01 04 27 75 73 65 72 6d 61 67 3d 26 37 33 20 |...'usermag=&73 | 000002f0 3a f4 3a 20 73 65 61 72 63 68 20 66 6f 72 20 6d |:.: search for m| 00000300 61 67 61 7a 69 6e 65 0d 01 0e 3a 75 73 65 72 70 |agazine...:userp| 00000310 61 67 65 3d 26 37 34 20 3a f4 3a 20 73 65 61 72 |age=&74 :.: sear| 00000320 63 68 20 66 6f 72 20 70 61 67 65 2c 20 6c 6f 77 |ch for page, low| 00000330 20 62 79 74 65 20 2b 20 68 69 67 68 20 62 79 74 | byte + high byt| 00000340 65 0d 01 18 26 77 6f 72 6b 73 70 61 63 65 3d 26 |e...&workspace=&| 00000350 37 36 20 3a f4 3a 20 32 20 62 79 74 65 20 77 6f |76 :.: 2 byte wo| 00000360 72 6b 73 70 61 63 65 0d 01 22 30 64 65 73 74 69 |rkspace.."0desti| 00000370 6e 61 74 69 6f 6e 3d 26 37 38 20 3a f4 3a 20 61 |nation=&78 :.: a| 00000380 6e 6f 74 68 65 72 20 32 20 62 79 74 65 20 77 6f |nother 2 byte wo| 00000390 72 6b 73 70 61 63 65 0d 01 2c 1e 63 68 61 6e 6e |rkspace..,.chann| 000003a0 65 6c 3d 26 37 41 20 3a f4 3a 20 54 56 20 63 68 |el=&7A :.: TV ch| 000003b0 61 6e 6e 65 6c 0d 01 36 1e 69 72 71 32 76 3d 26 |annel..6.irq2v=&| 000003c0 32 30 36 20 3a f4 3a 20 49 52 51 32 20 76 65 63 |206 :.: IRQ2 vec| 000003d0 74 6f 72 0d 01 40 39 74 74 78 63 6f 6e 74 72 6f |tor..@9ttxcontro| 000003e0 6c 3d 26 46 43 31 30 20 3a f4 3a 20 54 54 58 20 |l=&FC10 :.: TTX | 000003f0 63 6f 6e 74 72 6f 6c 20 72 65 67 69 73 74 65 72 |control register| 00000400 2c 20 77 72 69 74 65 20 6f 6e 6c 79 0d 01 4a 36 |, write only..J6| 00000410 74 74 78 73 74 61 74 75 73 3d 26 46 43 31 30 20 |ttxstatus=&FC10 | 00000420 3a f4 3a 20 54 54 58 20 73 74 61 74 75 73 20 72 |:.: TTX status r| 00000430 65 67 69 73 74 65 72 2c 20 72 65 61 64 20 6f 6e |egister, read on| 00000440 6c 79 0d 01 54 31 72 6f 77 72 65 67 3d 26 46 43 |ly..T1rowreg=&FC| 00000450 31 31 20 3a f4 3a 20 54 54 58 20 72 6f 77 20 72 |11 :.: TTX row r| 00000460 65 67 69 73 74 65 72 2c 20 77 72 69 74 65 20 6f |egister, write o| 00000470 6e 6c 79 0d 01 5e 35 64 61 74 61 72 65 67 3d 26 |nly..^5datareg=&| 00000480 46 43 31 32 20 3a f4 3a 20 54 54 58 20 64 61 74 |FC12 :.: TTX dat| 00000490 61 20 72 65 67 69 73 74 65 72 2c 20 72 65 61 64 |a register, read| 000004a0 20 26 20 77 72 69 74 65 0d 01 68 3d 73 74 61 74 | & write..h=stat| 000004b0 63 6c 72 3d 26 46 43 31 33 20 3a f4 3a 20 54 54 |clr=&FC13 :.: TT| 000004c0 58 20 63 6c 65 61 72 20 73 74 61 74 75 73 20 72 |X clear status r| 000004d0 65 67 69 73 74 65 72 2c 20 72 65 61 64 20 26 20 |egister, read & | 000004e0 77 72 69 74 65 0d 01 72 10 6f 73 77 72 63 68 3d |write..r.oswrch=| 000004f0 26 46 46 45 45 0d 01 7c 10 6f 73 62 79 74 65 3d |&FFEE..|.osbyte=| 00000500 26 46 46 46 34 0d 01 86 14 e3 20 70 61 73 73 3d |&FFF4..... pass=| 00000510 30 20 b8 20 32 20 88 20 32 0d 01 90 0c 50 25 3d |0 . 2 . 2....P%=| 00000520 6d 63 6f 64 65 0d 01 9a 0d 5b 4f 50 54 20 70 61 |mcode....[OPT pa| 00000530 73 73 0d 01 a4 0c 4c 44 41 20 23 26 30 30 0d 01 |ss....LDA #&00..| 00000540 ae 27 53 54 41 20 67 72 61 62 66 6c 61 67 20 5c |.'STA grabflag \| 00000550 20 67 72 61 62 66 6c 61 67 20 3d 20 73 65 61 72 | grabflag = sear| 00000560 63 68 69 6e 67 0d 01 b8 2f 4c 44 58 20 69 72 71 |ching.../LDX irq| 00000570 32 76 20 5c 20 6c 6f 61 64 20 73 65 63 6f 6e 64 |2v \ load second| 00000580 61 72 79 20 69 6e 74 65 72 72 75 70 74 20 76 65 |ary interrupt ve| 00000590 63 74 6f 72 0d 01 c2 0f 4c 44 59 20 69 72 71 32 |ctor....LDY irq2| 000005a0 76 2b 31 0d 01 cc 32 53 54 58 20 6f 6c 64 69 72 |v+1...2STX oldir| 000005b0 71 32 76 20 5c 20 73 61 76 65 20 73 65 63 6f 6e |q2v \ save secon| 000005c0 64 61 72 79 20 69 6e 74 65 72 72 75 70 74 20 76 |dary interrupt v| 000005d0 65 63 74 6f 72 0d 01 d6 12 53 54 59 20 6f 6c 64 |ector....STY old| 000005e0 69 72 71 32 76 2b 31 0d 01 e0 38 4c 44 58 20 23 |irq2v+1...8LDX #| 000005f0 69 6e 74 65 72 72 75 70 74 20 83 20 32 35 36 20 |interrupt . 256 | 00000600 5c 20 69 6e 73 74 61 6c 6c 20 6e 65 77 20 69 6e |\ install new in| 00000610 74 65 72 72 75 70 74 20 72 6f 75 74 69 6e 65 0d |terrupt routine.| 00000620 01 ea 18 4c 44 59 20 23 69 6e 74 65 72 72 75 70 |...LDY #interrup| 00000630 74 20 81 20 32 35 36 0d 01 f4 32 53 45 49 20 5c |t . 256...2SEI \| 00000640 20 64 69 73 61 62 6c 65 20 69 6e 74 65 72 72 75 | disable interru| 00000650 70 74 73 20 77 68 65 6e 20 61 6c 74 65 72 69 6e |pts when alterin| 00000660 67 20 76 65 63 74 6f 72 73 0d 01 fe 0d 53 54 58 |g vectors....STX| 00000670 20 69 72 71 32 76 0d 02 08 0f 53 54 59 20 69 72 | irq2v....STY ir| 00000680 71 32 76 2b 31 0d 02 12 1e 43 4c 49 20 5c 20 72 |q2v+1....CLI \ r| 00000690 65 2d 65 6e 61 62 6c 65 20 69 6e 74 65 72 72 75 |e-enable interru| 000006a0 70 74 73 0d 02 1c 2e 4c 44 41 20 63 68 61 6e 6e |pts....LDA chann| 000006b0 65 6c 20 5c 20 6c 6f 61 64 20 28 63 68 61 6e 6e |el \ load (chann| 000006c0 65 6c 20 6e 75 6d 62 65 72 20 2b 20 23 26 31 43 |el number + #&1C| 000006d0 29 0d 02 26 1f 53 54 41 20 74 74 78 63 6f 6e 74 |)..&.STA ttxcont| 000006e0 72 6f 6c 20 5c 20 65 6e 61 62 6c 65 20 54 54 58 |rol \ enable TTX| 000006f0 0d 02 30 0d 2e 6d 61 69 6e 6c 6f 6f 70 0d 02 3a |..0..mainloop..:| 00000700 2f 4c 44 41 20 67 72 61 62 66 6c 61 67 20 5c 20 |/LDA grabflag \ | 00000710 62 69 74 20 37 20 73 65 74 20 69 66 20 72 65 61 |bit 7 set if rea| 00000720 64 20 74 6f 20 64 69 73 70 6c 61 79 0d 02 44 31 |d to display..D1| 00000730 42 50 4c 20 63 6f 6e 74 69 6e 75 65 20 5c 20 62 |BPL continue \ b| 00000740 72 61 6e 63 68 20 69 66 20 73 65 61 72 63 68 69 |ranch if searchi| 00000750 6e 67 20 6f 72 20 6c 6f 61 64 69 6e 67 0d 02 4e |ng or loading..N| 00000760 38 4a 53 52 20 63 68 65 63 6b 64 6f 75 62 6c 65 |8JSR checkdouble| 00000770 20 5c 20 63 68 65 63 6b 20 66 6f 72 20 64 6f 75 | \ check for dou| 00000780 62 6c 65 20 68 65 69 67 68 74 20 63 68 61 72 61 |ble height chara| 00000790 63 74 65 72 73 0d 02 58 2a 4a 53 52 20 74 72 61 |cters..X*JSR tra| 000007a0 6e 73 66 65 72 20 5c 20 74 72 61 6e 73 66 65 72 |nsfer \ transfer| 000007b0 20 64 61 74 61 20 74 6f 20 73 63 72 65 65 6e 0d | data to screen.| 000007c0 02 62 0c 4c 44 41 20 23 26 30 30 0d 02 6c 22 53 |.b.LDA #&00..l"S| 000007d0 54 41 20 67 72 61 62 66 6c 61 67 20 5c 20 73 65 |TA grabflag \ se| 000007e0 61 72 63 68 69 6e 67 20 61 67 61 69 6e 0d 02 76 |arching again..v| 000007f0 0d 2e 63 6f 6e 74 69 6e 75 65 0d 02 80 19 4c 44 |..continue....LD| 00000800 58 20 23 26 30 30 20 5c 20 73 63 72 65 65 6e 20 |X #&00 \ screen | 00000810 72 6f 77 0d 02 8a 1c 4c 44 59 20 23 26 30 38 20 |row....LDY #&08 | 00000820 5c 20 73 63 72 65 65 6e 20 63 6f 6c 75 6d 6e 0d |\ screen column.| 00000830 02 94 18 4a 53 52 20 76 64 75 33 31 20 5c 20 ef |...JSR vdu31 \ .| 00000840 20 33 31 2c 38 2c 30 0d 02 9e 0d 2e 68 65 61 64 | 31,8,0.....head| 00000850 6c 6f 6f 70 0d 02 a8 10 4c 44 41 20 62 75 66 66 |loop....LDA buff| 00000860 65 72 2c 59 0d 02 b2 27 4a 53 52 20 6f 73 77 72 |er,Y...'JSR oswr| 00000870 63 68 20 5c 20 77 72 69 74 65 20 68 65 61 64 65 |ch \ write heade| 00000880 72 20 6f 6e 20 73 63 72 65 65 6e 0d 02 bc 07 49 |r on screen....I| 00000890 4e 59 0d 02 c6 19 43 50 59 20 23 26 32 38 20 5c |NY....CPY #&28 \| 000008a0 20 64 65 63 69 6d 61 6c 20 34 30 0d 02 d0 10 42 | decimal 40....B| 000008b0 43 43 20 68 65 61 64 6c 6f 6f 70 0d 02 da 1e 42 |CC headloop....B| 000008c0 49 54 20 26 46 46 20 5c 20 70 6f 6c 6c 20 65 73 |IT &FF \ poll es| 000008d0 63 61 70 65 20 66 6c 61 67 0d 02 e4 2d 42 50 4c |cape flag...-BPL| 000008e0 20 6d 61 69 6e 6c 6f 6f 70 20 5c 20 6c 6f 6f 70 | mainloop \ loop| 000008f0 20 69 66 20 65 73 63 61 70 65 20 6e 6f 74 20 70 | if escape not p| 00000900 72 65 73 73 65 64 0d 02 ee 1a 4c 44 41 20 23 26 |ressed....LDA #&| 00000910 37 45 20 5c 20 64 65 63 69 6d 61 6c 20 31 32 36 |7E \ decimal 126| 00000920 0d 02 f8 23 4a 53 52 20 6f 73 62 79 74 65 20 5c |...#JSR osbyte \| 00000930 20 61 63 6b 6e 6f 77 6c 65 64 67 65 20 65 73 63 | acknowledge esc| 00000940 61 70 65 0d 03 02 0c 4c 44 41 20 23 26 30 30 0d |ape....LDA #&00.| 00000950 03 0c 20 53 54 41 20 74 74 78 63 6f 6e 74 72 6f |.. STA ttxcontro| 00000960 6c 20 5c 20 64 69 73 61 62 6c 65 20 54 54 58 0d |l \ disable TTX.| 00000970 03 16 27 4c 44 58 20 6f 6c 64 69 72 71 32 76 20 |..'LDX oldirq2v | 00000980 5c 20 6c 6f 61 64 20 6f 72 69 67 69 6e 61 6c 20 |\ load original | 00000990 76 65 63 74 6f 72 0d 03 20 12 4c 44 59 20 6f 6c |vector.. .LDY ol| 000009a0 64 69 72 71 32 76 2b 31 0d 03 2a 31 53 45 49 20 |dirq2v+1..*1SEI | 000009b0 5c 20 64 69 73 61 62 6c 65 20 69 6e 74 65 72 72 |\ disable interr| 000009c0 75 70 74 73 20 77 68 65 6e 20 61 6c 74 65 72 69 |upts when alteri| 000009d0 6e 67 20 76 65 63 74 6f 72 0d 03 34 27 53 54 58 |ng vector..4'STX| 000009e0 20 69 72 71 32 76 20 5c 20 72 65 73 74 6f 72 65 | irq2v \ restore| 000009f0 20 6f 72 69 67 69 6e 61 6c 20 76 65 63 74 6f 72 | original vector| 00000a00 0d 03 3e 0f 53 54 59 20 69 72 71 32 76 2b 31 0d |..>.STY irq2v+1.| 00000a10 03 48 1e 43 4c 49 20 5c 20 72 65 2d 65 6e 61 62 |.H.CLI \ re-enab| 00000a20 6c 65 20 69 6e 74 65 72 72 75 70 74 73 0d 03 52 |le interrupts..R| 00000a30 19 52 54 53 20 5c 20 72 65 74 75 72 6e 20 74 6f |.RTS \ return to| 00000a40 20 42 41 53 49 43 0d 03 5c 0e 2e 69 6e 74 65 72 | BASIC..\..inter| 00000a50 72 75 70 74 0d 03 66 25 42 49 54 20 74 74 78 73 |rupt..f%BIT ttxs| 00000a60 74 61 74 75 73 20 5c 20 70 6f 6c 6c 20 54 54 58 |tatus \ poll TTX| 00000a70 20 68 61 72 64 77 61 72 65 0d 03 70 2a 42 4d 49 | hardware..p*BMI| 00000a80 20 74 74 78 69 6e 74 65 72 20 5c 20 62 72 61 6e | ttxinter \ bran| 00000a90 63 68 20 69 66 20 54 54 58 20 69 6e 74 65 72 72 |ch if TTX interr| 00000aa0 75 70 74 0d 03 7a 26 4a 4d 50 20 28 6f 6c 64 69 |upt..z&JMP (oldi| 00000ab0 72 71 32 76 29 20 5c 20 6e 6f 74 20 54 54 58 20 |rq2v) \ not TTX | 00000ac0 69 6e 74 65 72 72 75 70 74 0d 03 84 0d 2e 74 74 |interrupt.....tt| 00000ad0 78 69 6e 74 65 72 0d 03 8e 31 4c 44 41 20 26 46 |xinter...1LDA &F| 00000ae0 43 20 5c 20 69 6e 74 65 72 72 75 70 74 20 61 63 |C \ interrupt ac| 00000af0 63 75 6d 75 6c 61 74 6f 72 20 73 61 76 65 20 72 |cumulator save r| 00000b00 65 67 69 73 74 65 72 0d 03 98 32 50 48 41 20 5c |egister...2PHA \| 00000b10 20 70 75 73 68 20 69 6e 74 65 72 72 75 70 74 20 | push interrupt | 00000b20 61 63 63 75 6d 75 6c 61 74 6f 72 20 73 61 76 65 |accumulator save| 00000b30 20 72 65 67 69 73 74 65 72 0d 03 a2 07 54 58 41 | register....TXA| 00000b40 0d 03 ac 10 50 48 41 20 5c 20 70 75 73 68 20 58 |....PHA \ push X| 00000b50 0d 03 b6 07 54 59 41 0d 03 c0 10 50 48 41 20 5c |....TYA....PHA \| 00000b60 20 70 75 73 68 20 59 0d 03 ca 2f 42 49 54 20 67 | push Y.../BIT g| 00000b70 72 61 62 66 6c 61 67 20 5c 20 69 73 20 61 20 70 |rabflag \ is a p| 00000b80 61 67 65 20 72 65 61 64 79 20 66 6f 72 20 64 69 |age ready for di| 00000b90 73 70 6c 61 79 3f 0d 03 d4 3a 42 4d 49 20 63 6c |splay?...:BMI cl| 00000ba0 65 61 72 73 74 61 74 75 73 20 5c 20 63 6c 65 61 |earstatus \ clea| 00000bb0 72 20 73 74 61 74 75 73 20 61 6e 64 20 52 54 49 |r status and RTI| 00000bc0 20 69 66 20 70 61 67 65 20 67 72 61 62 62 65 64 | if page grabbed| 00000bd0 0d 03 de 1c 43 4c 44 20 5c 20 63 6c 65 61 72 20 |....CLD \ clear | 00000be0 64 65 63 69 6d 61 6c 20 66 6c 61 67 0d 03 e8 1f |decimal flag....| 00000bf0 4c 44 59 20 23 26 30 30 20 5c 20 73 74 61 72 74 |LDY #&00 \ start| 00000c00 20 77 69 74 68 20 72 6f 77 20 30 0d 03 f2 0d 2e | with row 0.....| 00000c10 72 65 61 64 74 74 78 74 0d 03 fc 21 53 54 59 20 |readttxt...!STY | 00000c20 72 6f 77 72 65 67 20 5c 20 74 72 79 20 72 6f 77 |rowreg \ try row| 00000c30 73 20 30 20 74 6f 20 31 35 0d 04 06 2a 4c 44 41 |s 0 to 15...*LDA| 00000c40 20 64 61 74 61 72 65 67 20 5c 20 6c 6f 61 64 20 | datareg \ load | 00000c50 66 72 61 6d 69 6e 67 20 63 6f 64 65 20 28 23 26 |framing code (#&| 00000c60 32 37 29 0d 04 10 27 42 45 51 20 65 6d 70 74 79 |27)...'BEQ empty| 00000c70 72 6f 77 20 5c 20 69 66 20 7a 65 72 6f 20 74 72 |row \ if zero tr| 00000c80 79 20 6e 65 78 74 20 72 6f 77 0d 04 1a 07 54 59 |y next row....TY| 00000c90 41 0d 04 24 19 50 48 41 20 5c 20 73 61 76 65 20 |A..$.PHA \ save | 00000ca0 72 6f 77 20 6e 75 6d 62 65 72 0d 04 2e 12 4a 53 |row number....JS| 00000cb0 52 20 72 65 61 64 70 61 63 6b 65 74 0d 04 38 07 |R readpacket..8.| 00000cc0 50 4c 41 0d 04 42 1c 54 41 59 20 5c 20 72 65 73 |PLA..B.TAY \ res| 00000cd0 74 6f 72 65 20 72 6f 77 20 6e 75 6d 62 65 72 0d |tore row number.| 00000ce0 04 4c 0d 2e 65 6d 70 74 79 72 6f 77 0d 04 56 1e |.L..emptyrow..V.| 00000cf0 49 4e 59 20 5c 20 69 6e 63 72 65 6d 65 6e 74 20 |INY \ increment | 00000d00 72 6f 77 20 6e 75 6d 62 65 72 0d 04 60 1e 43 50 |row number..`.CP| 00000d10 59 20 23 26 31 30 20 5c 20 74 72 79 20 72 6f 77 |Y #&10 \ try row| 00000d20 73 20 30 20 2d 20 31 35 0d 04 6a 10 42 4e 45 20 |s 0 - 15..j.BNE | 00000d30 72 65 61 64 74 74 78 74 0d 04 74 10 2e 63 6c 65 |readttxt..t..cle| 00000d40 61 72 73 74 61 74 75 73 0d 04 7e 0c 4c 44 41 20 |arstatus..~.LDA | 00000d50 23 26 30 30 0d 04 88 27 4c 44 59 20 23 26 30 46 |#&00...'LDY #&0F| 00000d60 20 5c 20 63 6c 65 61 72 20 31 36 20 72 6f 77 73 | \ clear 16 rows| 00000d70 20 69 6e 20 61 64 61 70 74 6f 72 0d 04 92 0e 2e | in adaptor.....| 00000d80 63 6c 65 61 72 6c 6f 6f 70 0d 04 9c 0e 53 54 59 |clearloop....STY| 00000d90 20 72 6f 77 72 65 67 0d 04 a6 0f 53 54 41 20 64 | rowreg....STA d| 00000da0 61 74 61 72 65 67 0d 04 b0 07 44 45 59 0d 04 ba |atareg....DEY...| 00000db0 11 42 50 4c 20 63 6c 65 61 72 6c 6f 6f 70 0d 04 |.BPL clearloop..| 00000dc0 c4 35 53 54 41 20 73 74 61 74 63 6c 72 20 5c 20 |.5STA statclr \ | 00000dd0 63 6c 65 61 72 20 73 74 61 74 75 73 20 66 6c 61 |clear status fla| 00000de0 67 73 20 62 65 66 6f 72 65 20 72 65 74 75 72 6e |gs before return| 00000df0 69 6e 67 0d 04 ce 07 50 4c 41 0d 04 d8 13 54 41 |ing....PLA....TA| 00000e00 59 20 5c 20 72 65 73 74 6f 72 65 20 59 0d 04 e2 |Y \ restore Y...| 00000e10 07 50 4c 41 0d 04 ec 13 54 41 58 20 5c 20 72 65 |.PLA....TAX \ re| 00000e20 73 74 6f 72 65 20 58 0d 04 f6 07 50 4c 41 0d 05 |store X....PLA..| 00000e30 00 39 53 54 41 20 26 46 43 20 5c 20 72 65 73 74 |.9STA &FC \ rest| 00000e40 6f 72 65 20 69 6e 74 65 72 72 75 70 74 20 61 63 |ore interrupt ac| 00000e50 63 75 6d 75 6c 61 74 6f 72 20 73 61 76 65 20 72 |cumulator save r| 00000e60 65 67 69 73 74 65 72 0d 05 0a 1f 52 54 49 20 5c |egister....RTI \| 00000e70 20 72 65 74 75 72 6e 20 66 72 6f 6d 20 69 6e 74 | return from int| 00000e80 65 72 72 75 70 74 0d 05 14 0d 2e 74 65 73 74 66 |errupt.....testf| 00000e90 6c 61 67 0d 05 1e 10 4c 44 41 20 67 72 61 62 66 |lag....LDA grabf| 00000ea0 6c 61 67 0d 05 28 20 42 45 51 20 65 78 69 74 20 |lag..( BEQ exit | 00000eb0 5c 20 65 78 69 74 20 69 66 20 73 65 61 72 63 68 |\ exit if search| 00000ec0 69 6e 67 0d 05 32 28 4c 44 41 20 23 26 38 30 20 |ing..2(LDA #&80 | 00000ed0 5c 20 69 66 20 6c 6f 61 64 69 6e 67 20 6d 61 72 |\ if loading mar| 00000ee0 6b 20 61 73 20 6c 6f 61 64 65 64 0d 05 3c 1e 53 |k as loaded..<.S| 00000ef0 54 41 20 67 72 61 62 66 6c 61 67 20 5c 20 70 61 |TA grabflag \ pa| 00000f00 67 65 20 6c 6f 61 64 65 64 0d 05 46 09 2e 65 78 |ge loaded..F..ex| 00000f10 69 74 0d 05 50 07 52 54 53 0d 05 5a 0f 2e 72 65 |it..P.RTS..Z..re| 00000f20 61 64 70 61 63 6b 65 74 0d 05 64 26 4c 44 59 20 |adpacket..d&LDY | 00000f30 64 61 74 61 72 65 67 20 5c 20 72 65 61 64 20 6d |datareg \ read m| 00000f40 61 67 61 7a 69 6e 65 20 6e 75 6d 62 65 72 0d 05 |agazine number..| 00000f50 6e 1e 4c 44 41 20 68 61 6d 74 61 62 6c 65 2c 59 |n.LDA hamtable,Y| 00000f60 20 5c 20 64 65 2d 68 61 6d 20 69 74 0d 05 78 28 | \ de-ham it..x(| 00000f70 42 4d 49 20 74 65 73 74 66 6c 61 67 20 5c 20 73 |BMI testflag \ s| 00000f80 74 6f 70 20 6c 6f 61 64 69 6e 67 20 69 66 20 65 |top loading if e| 00000f90 72 72 6f 72 0d 05 82 27 53 54 41 20 6d 61 67 61 |rror...'STA maga| 00000fa0 7a 69 6e 65 20 5c 20 73 61 76 65 20 6d 61 67 61 |zine \ save maga| 00000fb0 7a 69 6e 65 20 6e 75 6d 62 65 72 0d 05 8c 24 4c |zine number...$L| 00000fc0 44 59 20 64 61 74 61 72 65 67 20 5c 20 72 65 61 |DY datareg \ rea| 00000fd0 64 20 70 61 63 6b 65 74 20 6e 75 6d 62 65 72 0d |d packet number.| 00000fe0 05 96 1e 4c 44 41 20 68 61 6d 74 61 62 6c 65 2c |...LDA hamtable,| 00000ff0 59 20 5c 20 64 65 2d 68 61 6d 20 69 74 0d 05 a0 |Y \ de-ham it...| 00001000 28 42 4d 49 20 74 65 73 74 66 6c 61 67 20 5c 20 |(BMI testflag \ | 00001010 73 74 6f 70 20 6c 6f 61 64 69 6e 67 20 69 66 20 |stop loading if | 00001020 65 72 72 6f 72 0d 05 aa 23 53 54 41 20 70 61 63 |error...#STA pac| 00001030 6b 65 74 20 5c 20 73 61 76 65 20 70 61 63 6b 65 |ket \ save packe| 00001040 74 20 6e 75 6d 62 65 72 0d 05 b4 27 4c 44 41 20 |t number...'LDA | 00001050 6d 61 67 61 7a 69 6e 65 20 5c 20 6c 6f 61 64 20 |magazine \ load | 00001060 6d 61 67 61 7a 69 6e 65 20 6e 75 6d 62 65 72 0d |magazine number.| 00001070 05 be 3d 43 4d 50 20 23 26 30 38 20 5c 20 62 69 |..=CMP #&08 \ bi| 00001080 74 20 33 20 6f 66 20 6d 61 67 2e 20 6e 75 6d 62 |t 3 of mag. numb| 00001090 65 72 20 69 73 20 62 69 74 20 30 20 6f 66 20 70 |er is bit 0 of p| 000010a0 61 63 6b 65 74 20 6e 75 6d 62 65 72 0d 05 c8 24 |acket number...$| 000010b0 52 4f 4c 20 70 61 63 6b 65 74 20 5c 20 35 20 62 |ROL packet \ 5 b| 000010c0 69 74 20 70 61 63 6b 65 74 20 6e 75 6d 62 65 72 |it packet number| 000010d0 0d 05 d2 1e 80 20 23 26 30 37 20 5c 20 75 73 65 |..... #&07 \ use| 000010e0 20 6f 6e 6c 79 20 62 69 74 73 20 30 2d 32 0d 05 | only bits 0-2..| 000010f0 dc 28 53 54 41 20 6d 61 67 61 7a 69 6e 65 20 5c |.(STA magazine \| 00001100 20 33 20 62 69 74 20 6d 61 67 61 7a 69 6e 65 20 | 3 bit magazine | 00001110 6e 75 6d 62 65 72 0d 05 e6 0e 4c 44 41 20 70 61 |number....LDA pa| 00001120 63 6b 65 74 0d 05 f0 2a 43 4d 50 20 23 26 31 38 |cket...*CMP #&18| 00001130 20 5c 20 69 67 6e 6f 72 65 20 54 53 44 50 2c 20 | \ ignore TSDP, | 00001140 44 61 74 61 63 61 73 74 2c 20 65 74 63 2e 0d 05 |Datacast, etc...| 00001150 fa 2c 42 43 53 20 65 78 69 74 20 5c 20 69 65 2e |.,BCS exit \ ie.| 00001160 20 75 73 65 20 4c 65 76 65 6c 20 31 20 54 65 6c | use Level 1 Tel| 00001170 65 74 65 78 74 20 6f 6e 6c 79 0d 06 04 1c 50 48 |etext only....PH| 00001180 41 20 5c 20 70 75 73 68 20 70 61 63 6b 65 74 20 |A \ push packet | 00001190 6e 75 6d 62 65 72 0d 06 0e 1d 41 53 4c 20 41 20 |number....ASL A | 000011a0 5c 20 70 61 63 6b 65 74 20 6e 75 6d 62 65 72 20 |\ packet number | 000011b0 2a 20 32 0d 06 18 07 54 41 59 0d 06 22 2e 4c 44 |* 2....TAY..".LD| 000011c0 41 20 62 75 66 66 74 61 62 6c 65 2c 59 20 5c 20 |A bufftable,Y \ | 000011d0 6c 6f 61 64 20 62 75 66 66 65 72 20 61 64 64 72 |load buffer addr| 000011e0 65 73 73 2c 20 6c 73 62 0d 06 2c 26 53 54 41 20 |ess, lsb..,&STA | 000011f0 77 6f 72 6b 73 70 61 63 65 20 5c 20 73 74 6f 72 |workspace \ stor| 00001200 65 20 69 6e 20 7a 65 72 6f 20 70 61 67 65 0d 06 |e in zero page..| 00001210 36 30 4c 44 41 20 62 75 66 66 74 61 62 6c 65 2b |60LDA bufftable+| 00001220 31 2c 59 20 5c 20 6c 6f 61 64 20 62 75 66 66 65 |1,Y \ load buffe| 00001230 72 20 61 64 64 72 65 73 73 2c 20 6d 73 62 0d 06 |r address, msb..| 00001240 40 28 53 54 41 20 77 6f 72 6b 73 70 61 63 65 2b |@(STA workspace+| 00001250 31 20 5c 20 73 74 6f 72 65 20 69 6e 20 7a 65 72 |1 \ store in zer| 00001260 6f 20 70 61 67 65 0d 06 4a 1c 50 4c 41 20 5c 20 |o page..J.PLA \ | 00001270 70 75 6c 6c 20 70 61 63 6b 65 74 20 6e 75 6d 62 |pull packet numb| 00001280 65 72 0d 06 54 1e 43 4d 50 20 23 26 30 30 20 5c |er..T.CMP #&00 \| 00001290 20 69 73 20 69 74 20 61 20 68 65 61 64 65 72 3f | is it a header?| 000012a0 0d 06 5e 28 42 4e 45 20 6e 6f 74 68 65 61 64 65 |..^(BNE notheade| 000012b0 72 20 5c 20 62 72 61 6e 63 68 20 69 66 20 6e 6f |r \ branch if no| 000012c0 74 20 68 65 61 64 65 72 0d 06 68 24 54 41 58 20 |t header..h$TAX | 000012d0 5c 20 69 6e 69 74 20 69 6e 64 65 78 20 66 6f 72 |\ init index for| 000012e0 20 68 61 6d 6d 65 64 20 64 61 74 61 0d 06 72 0f | hammed data..r.| 000012f0 2e 72 65 61 64 68 65 61 64 65 72 0d 06 7c 24 4c |.readheader..|$L| 00001300 44 59 20 64 61 74 61 72 65 67 20 5c 20 72 65 61 |DY datareg \ rea| 00001310 64 20 64 61 74 61 20 72 65 67 69 73 74 65 72 0d |d data register.| 00001320 06 86 1e 4c 44 41 20 68 61 6d 74 61 62 6c 65 2c |...LDA hamtable,| 00001330 59 20 5c 20 64 65 2d 68 61 6d 20 69 74 0d 06 90 |Y \ de-ham it...| 00001340 28 42 4d 49 20 74 65 73 74 66 6c 61 67 20 5c 20 |(BMI testflag \ | 00001350 73 74 6f 70 20 6c 6f 61 64 69 6e 67 20 69 66 20 |stop loading if | 00001360 65 72 72 6f 72 0d 06 9a 27 53 54 41 20 62 75 66 |error...'STA buf| 00001370 66 65 72 2c 58 20 5c 20 73 74 6f 72 65 20 64 65 |fer,X \ store de| 00001380 2d 68 61 6d 6d 65 64 20 64 61 74 61 0d 06 a4 19 |-hammed data....| 00001390 49 4e 58 20 5c 20 69 6e 63 72 65 6d 65 6e 74 20 |INX \ increment | 000013a0 69 6e 64 65 78 0d 06 ae 1a 43 50 58 20 23 26 30 |index....CPX #&0| 000013b0 38 20 5c 20 75 73 65 20 58 20 3d 20 30 2d 37 0d |8 \ use X = 0-7.| 000013c0 06 b8 31 42 43 43 20 72 65 61 64 68 65 61 64 65 |..1BCC readheade| 000013d0 72 20 5c 20 63 6f 6e 74 69 6e 75 65 20 72 65 61 |r \ continue rea| 000013e0 64 69 6e 67 20 68 61 6d 6d 65 64 20 64 61 74 61 |ding hammed data| 000013f0 0d 06 c2 2f 4c 44 41 20 67 72 61 62 66 6c 61 67 |.../LDA grabflag| 00001400 20 5c 20 61 72 65 20 77 65 20 6c 6f 61 64 69 6e | \ are we loadin| 00001410 67 20 6f 72 20 73 65 61 72 63 68 69 6e 67 3f 0d |g or searching?.| 00001420 06 cc 28 42 45 51 20 63 68 65 63 6b 73 74 61 72 |..(BEQ checkstar| 00001430 74 20 5c 20 62 72 61 6e 63 68 20 69 66 20 73 65 |t \ branch if se| 00001440 61 72 63 68 69 6e 67 0d 06 d6 2c 4c 44 41 20 6d |arching...,LDA m| 00001450 61 67 61 7a 69 6e 65 20 5c 20 77 65 20 6d 75 73 |agazine \ we mus| 00001460 74 20 62 65 20 6c 6f 61 64 69 6e 67 20 61 20 70 |t be loading a p| 00001470 61 67 65 0d 06 e0 2d 43 4d 50 20 75 73 65 72 6d |age...-CMP userm| 00001480 61 67 20 5c 20 69 73 20 69 74 20 74 68 65 20 6d |ag \ is it the m| 00001490 61 67 61 7a 69 6e 65 20 77 65 20 77 61 6e 74 3f |agazine we want?| 000014a0 0d 06 ea 2b 42 4e 45 20 6f 75 74 20 5c 20 62 72 |...+BNE out \ br| 000014b0 61 6e 63 68 20 69 66 20 6e 6f 74 20 74 68 65 20 |anch if not the | 000014c0 6f 6e 65 20 77 65 20 77 61 6e 74 0d 06 f4 2a 4c |one we want...*L| 000014d0 44 41 20 62 75 66 66 65 72 20 5c 20 6c 6f 77 20 |DA buffer \ low | 000014e0 6e 79 62 62 6c 65 20 6f 66 20 70 61 67 65 20 6e |nybble of page n| 000014f0 75 6d 62 65 72 0d 06 fe 3e 43 4d 50 20 75 73 65 |umber...>CMP use| 00001500 72 70 61 67 65 20 5c 20 69 73 20 74 68 69 73 20 |rpage \ is this | 00001510 74 68 65 20 73 61 6d 65 20 61 73 20 74 68 65 20 |the same as the | 00001520 6f 6e 65 20 77 65 20 61 72 65 20 6c 6f 61 64 69 |one we are loadi| 00001530 6e 67 3f 0d 07 08 2d 42 4e 45 20 65 6e 64 66 6f |ng?...-BNE endfo| 00001540 75 6e 64 20 5c 20 65 6e 64 20 6f 66 20 70 61 67 |und \ end of pag| 00001550 65 20 77 68 65 6e 20 64 69 66 66 65 72 65 6e 74 |e when different| 00001560 0d 07 12 2d 4c 44 41 20 62 75 66 66 65 72 2b 31 |...-LDA buffer+1| 00001570 20 5c 20 68 69 67 68 20 6e 79 62 62 6c 65 20 6f | \ high nybble o| 00001580 66 20 70 61 67 65 20 6e 75 6d 62 65 72 0d 07 1c |f page number...| 00001590 40 43 4d 50 20 75 73 65 72 70 61 67 65 2b 31 20 |@CMP userpage+1 | 000015a0 5c 20 69 73 20 74 68 69 73 20 74 68 65 20 73 61 |\ is this the sa| 000015b0 6d 65 20 61 73 20 74 68 65 20 6f 6e 65 20 77 65 |me as the one we| 000015c0 20 61 72 65 20 6c 6f 61 64 69 6e 67 3f 0d 07 26 | are loading?..&| 000015d0 29 42 45 51 20 6f 75 74 20 5c 20 6e 6f 74 20 65 |)BEQ out \ not e| 000015e0 6e 64 20 6f 66 20 70 61 67 65 20 69 66 20 74 68 |nd of page if th| 000015f0 65 20 73 61 6d 65 0d 07 30 0d 2e 65 6e 64 66 6f |e same..0..endfo| 00001600 75 6e 64 0d 07 3a 37 4c 44 41 20 23 26 38 30 20 |und..:7LDA #&80 | 00001610 5c 20 73 61 6d 65 20 6d 61 67 61 7a 69 6e 65 20 |\ same magazine | 00001620 62 75 74 20 64 69 66 66 65 72 65 6e 74 20 70 61 |but different pa| 00001630 67 65 20 6e 75 6d 62 65 72 73 0d 07 44 1f 53 54 |ge numbers..D.ST| 00001640 41 20 67 72 61 62 66 6c 61 67 20 5c 20 70 61 67 |A grabflag \ pag| 00001650 65 20 67 72 61 62 62 65 64 0d 07 4e 08 2e 6f 75 |e grabbed..N..ou| 00001660 74 0d 07 58 07 52 54 53 0d 07 62 0f 2e 63 68 65 |t..X.RTS..b..che| 00001670 63 6b 73 74 61 72 74 0d 07 6c 25 4c 44 41 20 62 |ckstart..l%LDA b| 00001680 75 66 66 65 72 2b 35 20 5c 20 63 68 65 63 6b 20 |uffer+5 \ check | 00001690 66 6f 72 20 73 75 62 74 69 74 6c 65 0d 07 76 18 |for subtitle..v.| 000016a0 80 20 23 26 30 38 20 5c 20 63 68 65 63 6b 20 62 |. #&08 \ check b| 000016b0 69 74 20 33 0d 07 80 1e 42 4e 45 20 6f 75 74 20 |it 3....BNE out | 000016c0 5c 20 72 65 6a 65 63 74 20 73 75 62 74 69 74 6c |\ reject subtitl| 000016d0 65 73 0d 07 8a 32 4c 44 41 20 6d 61 67 61 7a 69 |es...2LDA magazi| 000016e0 6e 65 20 5c 20 6c 6f 61 64 20 74 68 65 20 68 65 |ne \ load the he| 000016f0 61 64 65 72 20 6d 61 67 61 7a 69 6e 65 20 6e 75 |ader magazine nu| 00001700 6d 62 65 72 0d 07 94 28 43 4d 50 20 75 73 65 72 |mber...(CMP user| 00001710 6d 61 67 20 5c 20 69 73 20 69 74 20 74 68 65 20 |mag \ is it the | 00001720 6f 6e 65 20 77 65 20 77 61 6e 74 3f 0d 07 9e 28 |one we want?...(| 00001730 42 4e 45 20 6e 65 78 74 62 79 74 65 20 5c 20 62 |BNE nextbyte \ b| 00001740 72 61 6e 63 68 20 69 66 20 6e 6f 74 20 74 68 65 |ranch if not the| 00001750 20 6f 6e 65 0d 07 a8 31 4c 44 41 20 75 73 65 72 | one...1LDA user| 00001760 70 61 67 65 20 5c 20 6c 6f 61 64 20 6c 73 62 20 |page \ load lsb | 00001770 6f 66 20 77 61 6e 74 65 64 20 70 61 67 65 20 6e |of wanted page n| 00001780 75 6d 62 65 72 0d 07 b2 21 43 4d 50 20 62 75 66 |umber...!CMP buf| 00001790 66 65 72 20 5c 20 74 68 65 20 70 61 67 65 20 77 |fer \ the page w| 000017a0 65 20 68 61 76 65 0d 07 bc 30 42 4e 45 20 6e 65 |e have...0BNE ne| 000017b0 78 74 62 79 74 65 20 5c 20 62 72 61 6e 63 68 20 |xtbyte \ branch | 000017c0 69 66 20 6e 6f 74 20 74 68 65 20 6f 6e 65 20 77 |if not the one w| 000017d0 65 20 77 61 6e 74 0d 07 c6 33 4c 44 41 20 75 73 |e want...3LDA us| 000017e0 65 72 70 61 67 65 2b 31 20 5c 20 6c 6f 61 64 20 |erpage+1 \ load | 000017f0 6d 73 62 20 6f 66 20 77 61 6e 74 65 64 20 70 61 |msb of wanted pa| 00001800 67 65 20 6e 75 6d 62 65 72 0d 07 d0 23 43 4d 50 |ge number...#CMP| 00001810 20 62 75 66 66 65 72 2b 31 20 5c 20 74 68 65 20 | buffer+1 \ the | 00001820 70 61 67 65 20 77 65 20 68 61 76 65 0d 07 da 30 |page we have...0| 00001830 42 4e 45 20 6e 65 78 74 62 79 74 65 20 5c 20 62 |BNE nextbyte \ b| 00001840 72 61 6e 63 68 20 69 66 20 6e 6f 74 20 74 68 65 |ranch if not the| 00001850 20 6f 6e 65 20 77 65 20 77 61 6e 74 0d 07 e4 1d | one we want....| 00001860 4c 44 41 20 23 26 34 30 20 5c 20 6c 6f 61 64 20 |LDA #&40 \ load | 00001870 74 68 69 73 20 70 61 67 65 0d 07 ee 1f 53 54 41 |this page....STA| 00001880 20 67 72 61 62 66 6c 61 67 20 5c 20 70 61 67 65 | grabflag \ page| 00001890 20 6c 6f 61 64 69 6e 67 0d 07 f8 07 52 54 53 0d | loading....RTS.| 000018a0 08 02 0d 2e 6e 65 78 74 62 79 74 65 0d 08 0c 39 |....nextbyte...9| 000018b0 4c 44 41 20 62 75 66 66 65 72 2b 36 20 5c 20 63 |LDA buffer+6 \ c| 000018c0 68 65 63 6b 20 66 6f 72 20 73 75 70 70 72 65 73 |heck for suppres| 000018d0 73 20 61 6e 64 20 6f 75 74 20 6f 66 20 73 65 71 |s and out of seq| 000018e0 75 65 6e 63 65 0d 08 16 1f 80 20 23 26 30 35 20 |uence..... #&05 | 000018f0 5c 20 63 68 65 63 6b 20 62 69 74 73 20 30 20 61 |\ check bits 0 a| 00001900 6e 64 20 32 0d 08 20 34 42 4e 45 20 72 65 74 75 |nd 2.. 4BNE retu| 00001910 72 6e 20 5c 20 72 65 6a 65 63 74 20 73 75 70 70 |rn \ reject supp| 00001920 72 65 73 73 20 61 6e 64 20 6f 75 74 20 6f 66 20 |ress and out of | 00001930 73 65 71 75 65 6e 63 65 0d 08 2a 2c 4c 53 52 20 |sequence..*,LSR | 00001940 62 75 66 66 65 72 2b 37 20 5c 20 63 68 65 63 6b |buffer+7 \ check| 00001950 20 66 6f 72 20 73 65 72 69 61 6c 20 6d 61 67 61 | for serial maga| 00001960 7a 69 6e 65 0d 08 34 2d 42 43 53 20 64 69 73 70 |zine..4-BCS disp| 00001970 6c 61 79 20 5c 20 6c 6f 61 64 20 74 68 65 20 72 |lay \ load the r| 00001980 65 73 74 20 6f 66 20 74 68 65 20 68 65 61 64 65 |est of the heade| 00001990 72 0d 08 3e 2a 4c 44 41 20 6d 61 67 61 7a 69 6e |r..>*LDA magazin| 000019a0 65 20 5c 20 63 75 72 72 65 6e 74 20 6d 61 67 61 |e \ current maga| 000019b0 7a 69 6e 65 20 6e 75 6d 62 65 72 0d 08 48 27 43 |zine number..H'C| 000019c0 4d 50 20 75 73 65 72 6d 61 67 20 5c 20 6c 6f 61 |MP usermag \ loa| 000019d0 64 20 69 66 20 73 61 6d 65 20 6d 61 67 61 7a 69 |d if same magazi| 000019e0 6e 65 0d 08 52 31 42 4e 45 20 72 65 74 75 72 6e |ne..R1BNE return| 000019f0 20 5c 20 64 6f 6e 27 74 20 6c 6f 61 64 20 69 66 | \ don't load if| 00001a00 20 64 69 66 66 65 72 65 6e 74 20 6d 61 67 61 7a | different magaz| 00001a10 69 6e 65 0d 08 5c 0c 2e 64 69 73 70 6c 61 79 0d |ine..\..display.| 00001a20 08 66 2b 4c 44 59 20 23 26 30 38 20 5c 20 68 65 |.f+LDY #&08 \ he| 00001a30 61 64 65 72 20 64 61 74 61 20 73 74 61 72 74 73 |ader data starts| 00001a40 20 61 74 20 62 79 74 65 20 38 0d 08 70 28 42 4e | at byte 8..p(BN| 00001a50 45 20 72 65 61 64 6d 6f 72 65 20 5c 20 67 6f 20 |E readmore \ go | 00001a60 74 6f 20 72 65 61 64 20 74 68 65 20 68 65 61 64 |to read the head| 00001a70 65 72 0d 08 7a 0e 2e 6e 6f 74 68 65 61 64 65 72 |er..z..notheader| 00001a80 0d 08 84 25 42 49 54 20 67 72 61 62 66 6c 61 67 |...%BIT grabflag| 00001a90 20 5c 20 69 73 20 61 20 70 61 67 65 20 6c 6f 61 | \ is a page loa| 00001aa0 64 69 6e 67 3f 0d 08 8e 2b 42 56 43 20 72 65 74 |ding?...+BVC ret| 00001ab0 75 72 6e 20 5c 20 72 65 74 75 72 6e 20 69 66 20 |urn \ return if | 00001ac0 70 61 67 65 20 6e 6f 74 20 6c 6f 61 64 69 6e 67 |page not loading| 00001ad0 0d 08 98 3a 4c 44 41 20 6d 61 67 61 7a 69 6e 65 |...:LDA magazine| 00001ae0 20 5c 20 69 73 20 74 68 65 20 6d 61 67 61 7a 69 | \ is the magazi| 00001af0 6e 65 20 6e 75 6d 62 65 72 20 74 68 65 20 6f 6e |ne number the on| 00001b00 65 20 77 65 20 77 61 6e 74 3f 0d 08 a2 0f 43 4d |e we want?....CM| 00001b10 50 20 75 73 65 72 6d 61 67 0d 08 ac 2d 42 4e 45 |P usermag...-BNE| 00001b20 20 72 65 74 75 72 6e 20 5c 20 72 65 74 75 72 6e | return \ return| 00001b30 20 69 66 20 64 69 66 66 65 72 65 6e 74 20 6d 61 | if different ma| 00001b40 67 61 7a 69 6e 65 0d 08 b6 20 4c 44 59 20 23 26 |gazine... LDY #&| 00001b50 30 30 20 5c 20 72 65 61 64 20 62 79 74 65 73 20 |00 \ read bytes | 00001b60 30 20 2d 20 33 39 0d 08 c0 0d 2e 72 65 61 64 6d |0 - 39.....readm| 00001b70 6f 72 65 0d 08 ca 24 4c 44 41 20 64 61 74 61 72 |ore...$LDA datar| 00001b80 65 67 20 5c 20 72 65 61 64 20 64 61 74 61 20 72 |eg \ read data r| 00001b90 65 67 69 73 74 65 72 0d 08 d4 17 84 41 20 23 26 |egister.....A #&| 00001ba0 38 30 20 5c 20 73 65 74 20 62 69 74 20 37 0d 08 |80 \ set bit 7..| 00001bb0 de 27 53 54 41 20 28 77 6f 72 6b 73 70 61 63 65 |.'STA (workspace| 00001bc0 29 2c 59 20 5c 20 73 74 6f 72 65 20 69 6e 20 62 |),Y \ store in b| 00001bd0 75 66 66 65 72 0d 08 e8 19 49 4e 59 20 5c 20 69 |uffer....INY \ i| 00001be0 6e 63 72 65 6d 65 6e 74 20 69 6e 64 65 78 0d 08 |ncrement index..| 00001bf0 f2 19 43 50 59 20 23 26 32 38 20 5c 20 64 65 63 |..CPY #&28 \ dec| 00001c00 69 6d 61 6c 20 34 30 0d 08 fc 2b 42 4e 45 20 72 |imal 40...+BNE r| 00001c10 65 61 64 6d 6f 72 65 20 5c 20 6d 6f 72 65 20 64 |eadmore \ more d| 00001c20 61 74 61 20 69 6e 20 74 68 69 73 20 70 61 63 6b |ata in this pack| 00001c30 65 74 0d 09 06 0b 2e 72 65 74 75 72 6e 0d 09 10 |et.....return...| 00001c40 07 52 54 53 0d 09 1a 10 2e 63 68 65 63 6b 64 6f |.RTS.....checkdo| 00001c50 75 62 6c 65 0d 09 24 26 4c 44 58 20 23 26 30 31 |uble..$&LDX #&01| 00001c60 20 5c 20 73 63 72 65 65 6e 20 72 6f 77 20 6e 75 | \ screen row nu| 00001c70 6d 62 65 72 73 20 31 2d 32 33 0d 09 2e 0f 2e 6e |mbers 1-23.....n| 00001c80 65 78 74 63 6f 6c 75 6d 6e 0d 09 38 29 4c 44 59 |extcolumn..8)LDY| 00001c90 20 23 26 30 30 20 5c 20 73 63 72 65 65 6e 20 63 | #&00 \ screen c| 00001ca0 6f 6c 75 6d 6e 20 6e 75 6d 62 65 72 73 20 30 2d |olumn numbers 0-| 00001cb0 34 30 0d 09 42 38 4a 53 52 20 73 65 74 75 70 20 |40..B8JSR setup | 00001cc0 5c 20 73 65 74 20 75 70 20 77 6f 72 6b 73 70 61 |\ set up workspa| 00001cd0 63 65 20 66 6f 72 20 69 6e 64 69 72 65 63 74 20 |ce for indirect | 00001ce0 61 64 64 72 65 73 73 69 6e 67 0d 09 4c 0f 2e 73 |addressing..L..s| 00001cf0 69 6e 67 6c 65 6c 6f 6f 70 0d 09 56 15 4c 44 41 |ingleloop..V.LDA| 00001d00 20 28 77 6f 72 6b 73 70 61 63 65 29 2c 59 0d 09 | (workspace),Y..| 00001d10 60 2d 4a 53 52 20 63 6f 6e 63 65 61 6c 20 5c 20 |`-JSR conceal \ | 00001d20 63 68 65 63 6b 20 66 6f 72 20 63 6f 6e 63 65 61 |check for concea| 00001d30 6c 65 64 20 64 69 73 70 6c 61 79 0d 09 6a 2a 43 |led display..j*C| 00001d40 4d 50 20 23 26 38 44 20 5c 20 54 54 58 20 64 6f |MP #&8D \ TTX do| 00001d50 75 62 6c 65 20 68 65 69 67 68 74 20 63 68 61 72 |uble height char| 00001d60 61 63 74 65 72 0d 09 74 14 42 45 51 20 64 6f 75 |acter..t.BEQ dou| 00001d70 62 6c 65 68 65 69 67 68 74 0d 09 7e 07 49 4e 59 |bleheight..~.INY| 00001d80 0d 09 88 19 43 50 59 20 23 26 32 38 20 5c 20 64 |....CPY #&28 \ d| 00001d90 65 63 69 6d 61 6c 20 34 30 0d 09 92 12 42 43 43 |ecimal 40....BCC| 00001da0 20 73 69 6e 67 6c 65 6c 6f 6f 70 0d 09 9c 0d 2e | singleloop.....| 00001db0 63 61 72 72 79 73 65 74 0d 09 a6 07 49 4e 58 0d |carryset....INX.| 00001dc0 09 b0 19 43 50 58 20 23 26 31 38 20 5c 20 64 65 |...CPX #&18 \ de| 00001dd0 63 69 6d 61 6c 20 32 34 0d 09 ba 12 42 43 43 20 |cimal 24....BCC | 00001de0 6e 65 78 74 63 6f 6c 75 6d 6e 0d 09 c4 07 52 54 |nextcolumn....RT| 00001df0 53 0d 09 ce 11 2e 64 6f 75 62 6c 65 68 65 69 67 |S.....doubleheig| 00001e00 68 74 0d 09 d8 0c 4c 44 59 20 23 26 30 30 0d 09 |ht....LDY #&00..| 00001e10 e2 07 54 58 41 0d 09 ec 1a 50 48 41 20 5c 20 73 |..TXA....PHA \ s| 00001e20 74 6f 72 65 20 72 6f 77 20 6e 75 6d 62 65 72 0d |tore row number.| 00001e30 09 f6 07 49 4e 58 0d 0a 00 07 54 58 41 0d 0a 0a |...INX....TXA...| 00001e40 20 41 53 4c 20 41 20 5c 20 28 72 6f 77 20 6e 75 | ASL A \ (row nu| 00001e50 6d 62 65 72 20 2b 20 31 29 20 2a 20 32 0d 0a 14 |mber + 1) * 2...| 00001e60 07 54 41 58 0d 0a 1e 13 4c 44 41 20 62 75 66 66 |.TAX....LDA buff| 00001e70 74 61 62 6c 65 2c 58 0d 0a 28 13 53 54 41 20 64 |table,X..(.STA d| 00001e80 65 73 74 69 6e 61 74 69 6f 6e 0d 0a 32 15 4c 44 |estination..2.LD| 00001e90 41 20 62 75 66 66 74 61 62 6c 65 2b 31 2c 58 0d |A bufftable+1,X.| 00001ea0 0a 3c 15 53 54 41 20 64 65 73 74 69 6e 61 74 69 |.<.STA destinati| 00001eb0 6f 6e 2b 31 0d 0a 46 07 50 4c 41 0d 0a 50 1c 54 |on+1..F.PLA..P.T| 00001ec0 41 58 20 5c 20 72 65 73 74 6f 72 65 20 72 6f 77 |AX \ restore row| 00001ed0 20 6e 75 6d 62 65 72 0d 0a 5a 0f 2e 64 6f 75 62 | number..Z..doub| 00001ee0 6c 65 6c 6f 6f 70 0d 0a 64 15 4c 44 41 20 28 77 |leloop..d.LDA (w| 00001ef0 6f 72 6b 73 70 61 63 65 29 2c 59 0d 0a 6e 2d 4a |orkspace),Y..n-J| 00001f00 53 52 20 63 6f 6e 63 65 61 6c 20 5c 20 63 68 65 |SR conceal \ che| 00001f10 63 6b 20 66 6f 72 20 63 6f 6e 63 65 61 6c 65 64 |ck for concealed| 00001f20 20 64 69 73 70 6c 61 79 0d 0a 78 17 53 54 41 20 | display..x.STA | 00001f30 28 64 65 73 74 69 6e 61 74 69 6f 6e 29 2c 59 0d |(destination),Y.| 00001f40 0a 82 07 49 4e 59 0d 0a 8c 19 43 50 59 20 23 26 |...INY....CPY #&| 00001f50 32 38 20 5c 20 64 65 63 69 6d 61 6c 20 34 30 0d |28 \ decimal 40.| 00001f60 0a 96 12 42 43 43 20 64 6f 75 62 6c 65 6c 6f 6f |...BCC doubleloo| 00001f70 70 0d 0a a0 07 49 4e 58 0d 0a aa 19 43 50 58 20 |p....INX....CPX | 00001f80 23 26 31 37 20 5c 20 64 65 63 69 6d 61 6c 20 32 |#&17 \ decimal 2| 00001f90 33 0d 0a b4 10 42 43 43 20 63 61 72 72 79 73 65 |3....BCC carryse| 00001fa0 74 0d 0a be 07 52 54 53 0d 0a c8 0c 2e 63 6f 6e |t....RTS.....con| 00001fb0 63 65 61 6c 0d 0a d2 2c 43 4d 50 20 23 26 39 38 |ceal...,CMP #&98| 00001fc0 20 5c 20 54 54 58 20 63 6f 6e 63 65 61 6c 20 64 | \ TTX conceal d| 00001fd0 69 73 70 6c 61 79 20 63 68 61 72 61 63 74 65 72 |isplay character| 00001fe0 0d 0a dc 0e 42 4e 45 20 67 6f 62 61 63 6b 0d 0a |....BNE goback..| 00001ff0 e6 29 4c 44 41 20 23 97 28 22 20 22 29 20 5c 20 |.)LDA #.(" ") \ | 00002000 73 75 62 73 74 69 74 75 74 65 20 77 69 74 68 20 |substitute with | 00002010 61 20 73 70 61 63 65 0d 0a f0 15 53 54 41 20 28 |a space....STA (| 00002020 77 6f 72 6b 73 70 61 63 65 29 2c 59 0d 0a fa 0b |workspace),Y....| 00002030 2e 67 6f 62 61 63 6b 0d 0b 04 07 52 54 53 0d 0b |.goback....RTS..| 00002040 0e 0a 2e 73 65 74 75 70 0d 0b 18 07 54 58 41 0d |...setup....TXA.| 00002050 0b 22 1a 50 48 41 20 5c 20 73 74 6f 72 65 20 72 |.".PHA \ store r| 00002060 6f 77 20 6e 75 6d 62 65 72 0d 0b 2c 1c 41 53 4c |ow number..,.ASL| 00002070 20 41 20 5c 20 28 72 6f 77 20 6e 75 6d 62 65 72 | A \ (row number| 00002080 29 20 2a 20 32 0d 0b 36 07 54 41 58 0d 0b 40 13 |) * 2..6.TAX..@.| 00002090 4c 44 41 20 62 75 66 66 74 61 62 6c 65 2c 58 0d |LDA bufftable,X.| 000020a0 0b 4a 11 53 54 41 20 77 6f 72 6b 73 70 61 63 65 |.J.STA workspace| 000020b0 0d 0b 54 15 4c 44 41 20 62 75 66 66 74 61 62 6c |..T.LDA bufftabl| 000020c0 65 2b 31 2c 58 0d 0b 5e 13 53 54 41 20 77 6f 72 |e+1,X..^.STA wor| 000020d0 6b 73 70 61 63 65 2b 31 0d 0b 68 07 50 4c 41 0d |kspace+1..h.PLA.| 000020e0 0b 72 1c 54 41 58 20 5c 20 72 65 73 74 6f 72 65 |.r.TAX \ restore| 000020f0 20 72 6f 77 20 6e 75 6d 62 65 72 0d 0b 7c 07 52 | row number..|.R| 00002100 54 53 0d 0b 86 0d 2e 74 72 61 6e 73 66 65 72 0d |TS.....transfer.| 00002110 0b 90 1f 4c 44 58 20 23 26 30 31 20 5c 20 73 63 |...LDX #&01 \ sc| 00002120 72 65 65 6e 20 72 6f 77 73 20 31 2d 32 33 0d 0b |reen rows 1-23..| 00002130 9a 0d 2e 6e 65 78 74 6c 69 6e 65 0d 0b a4 1b 4c |...nextline....L| 00002140 44 59 20 23 26 30 30 20 5c 20 63 6f 6c 75 6d 6e |DY #&00 \ column| 00002150 73 20 30 2d 33 39 0d 0b ae 0d 4a 53 52 20 76 64 |s 0-39....JSR vd| 00002160 75 33 31 0d 0b b8 38 4a 53 52 20 73 65 74 75 70 |u31...8JSR setup| 00002170 20 5c 20 73 65 74 20 75 70 20 77 6f 72 6b 73 70 | \ set up worksp| 00002180 61 63 65 20 66 6f 72 20 69 6e 64 69 72 65 63 74 |ace for indirect| 00002190 20 61 64 64 72 65 73 73 69 6e 67 0d 0b c2 10 2e | addressing.....| 000021a0 77 72 69 74 65 73 63 72 65 65 6e 0d 0b cc 2d 4c |writescreen...-L| 000021b0 44 41 20 28 77 6f 72 6b 73 70 61 63 65 29 2c 59 |DA (workspace),Y| 000021c0 20 5c 20 6c 6f 61 64 20 64 61 74 61 20 66 72 6f | \ load data fro| 000021d0 6d 20 62 75 66 66 65 72 0d 0b d6 20 4a 53 52 20 |m buffer... JSR | 000021e0 6f 73 77 72 63 68 20 5c 20 77 72 69 74 65 20 74 |oswrch \ write t| 000021f0 6f 20 73 63 72 65 65 6e 0d 0b e0 21 4c 44 41 20 |o screen...!LDA | 00002200 23 97 28 22 20 22 29 20 5c 20 73 70 61 63 65 20 |#.(" ") \ space | 00002210 63 68 61 72 61 63 74 65 72 0d 0b ea 24 53 54 41 |character...$STA| 00002220 20 28 77 6f 72 6b 73 70 61 63 65 29 2c 59 20 5c | (workspace),Y \| 00002230 20 63 6c 65 61 72 20 62 75 66 66 65 72 0d 0b f4 | clear buffer...| 00002240 07 49 4e 59 0d 0b fe 19 43 50 59 20 23 26 32 38 |.INY....CPY #&28| 00002250 20 5c 20 64 65 63 69 6d 61 6c 20 34 30 0d 0c 08 | \ decimal 40...| 00002260 13 42 43 43 20 77 72 69 74 65 73 63 72 65 65 6e |.BCC writescreen| 00002270 0d 0c 12 07 49 4e 58 0d 0c 1c 19 43 50 58 20 23 |....INX....CPX #| 00002280 26 31 38 20 5c 20 64 65 63 69 6d 61 6c 20 32 34 |&18 \ decimal 24| 00002290 0d 0c 26 10 42 43 43 20 6e 65 78 74 6c 69 6e 65 |..&.BCC nextline| 000022a0 0d 0c 30 07 52 54 53 0d 0c 3a 0a 2e 76 64 75 33 |..0.RTS..:..vdu3| 000022b0 31 0d 0c 44 19 4c 44 41 20 23 26 31 46 20 5c 20 |1..D.LDA #&1F \ | 000022c0 64 65 63 69 6d 61 6c 20 33 31 0d 0c 4e 0e 4a 53 |decimal 31..N.JS| 000022d0 52 20 6f 73 77 72 63 68 0d 0c 58 07 54 59 41 0d |R oswrch..X.TYA.| 000022e0 0c 62 0e 4a 53 52 20 6f 73 77 72 63 68 0d 0c 6c |.b.JSR oswrch..l| 000022f0 07 54 58 41 0d 0c 76 1b 4a 4d 50 20 6f 73 77 72 |.TXA..v.JMP oswr| 00002300 63 68 20 5c 20 61 6e 64 20 72 65 74 75 72 6e 0d |ch \ and return.| 00002310 0c 80 0d 2e 6f 6c 64 69 72 71 32 76 0d 0c 8a 0c |....oldirq2v....| 00002320 45 51 55 57 20 26 30 30 0d 0c 94 0d 2e 68 61 6d |EQUW &00.....ham| 00002330 74 61 62 6c 65 0d 0c 9e 12 45 51 55 44 20 26 30 |table....EQUD &0| 00002340 31 30 31 46 46 30 31 0d 0c a8 12 45 51 55 44 20 |101FF01....EQUD | 00002350 26 46 46 30 31 30 30 46 46 0d 0c b2 12 45 51 55 |&FF0100FF....EQU| 00002360 44 20 26 46 46 30 31 30 32 46 46 0d 0c bc 12 45 |D &FF0102FF....E| 00002370 51 55 44 20 26 30 37 46 46 46 46 30 41 0d 0c c6 |QUD &07FFFF0A...| 00002380 12 45 51 55 44 20 26 46 46 30 31 30 30 46 46 0d |.EQUD &FF0100FF.| 00002390 0c d0 12 45 51 55 44 20 26 30 30 46 46 30 30 30 |...EQUD &00FF000| 000023a0 30 0d 0c da 12 45 51 55 44 20 26 30 42 46 46 46 |0....EQUD &0BFFF| 000023b0 46 30 36 0d 0c e4 12 45 51 55 44 20 26 46 46 30 |F06....EQUD &FF0| 000023c0 33 30 30 46 46 0d 0c ee 12 45 51 55 44 20 26 46 |300FF....EQUD &F| 000023d0 46 30 31 30 43 46 46 0d 0c f8 12 45 51 55 44 20 |F010CFF....EQUD | 000023e0 26 30 37 46 46 46 46 30 34 0d 0d 02 12 45 51 55 |&07FFFF04....EQU| 000023f0 44 20 26 30 37 46 46 46 46 30 36 0d 0d 0c 12 45 |D &07FFFF06....E| 00002400 51 55 44 20 26 30 37 30 37 30 37 46 46 0d 0d 16 |QUD &070707FF...| 00002410 12 45 51 55 44 20 26 30 35 46 46 46 46 30 36 0d |.EQUD &05FFFF06.| 00002420 0d 20 12 45 51 55 44 20 26 46 46 30 44 30 30 46 |. .EQUD &FF0D00F| 00002430 46 0d 0d 2a 12 45 51 55 44 20 26 46 46 30 36 30 |F..*.EQUD &FF060| 00002440 36 30 36 0d 0d 34 12 45 51 55 44 20 26 30 37 46 |606..4.EQUD &07F| 00002450 46 46 46 30 36 0d 0d 3e 12 45 51 55 44 20 26 46 |FFF06..>.EQUD &F| 00002460 46 30 31 30 32 46 46 0d 0d 48 12 45 51 55 44 20 |F0102FF..H.EQUD | 00002470 26 30 39 46 46 46 46 30 34 0d 0d 52 12 45 51 55 |&09FFFF04..R.EQU| 00002480 44 20 26 30 32 46 46 30 32 30 32 0d 0d 5c 12 45 |D &02FF0202..\.E| 00002490 51 55 44 20 26 46 46 30 33 30 32 46 46 0d 0d 66 |QUD &FF0302FF..f| 000024a0 12 45 51 55 44 20 26 30 35 46 46 46 46 30 38 0d |.EQUD &05FFFF08.| 000024b0 0d 70 12 45 51 55 44 20 26 46 46 30 33 30 30 46 |.p.EQUD &FF0300F| 000024c0 46 0d 0d 7a 12 45 51 55 44 20 26 46 46 30 33 30 |F..z.EQUD &FF030| 000024d0 32 46 46 0d 0d 84 12 45 51 55 44 20 26 30 33 30 |2FF....EQUD &030| 000024e0 33 46 46 30 33 0d 0d 8e 12 45 51 55 44 20 26 30 |3FF03....EQUD &0| 000024f0 35 46 46 46 46 30 34 0d 0d 98 12 45 51 55 44 20 |5FFFF04....EQUD | 00002500 26 46 46 30 34 30 34 30 34 0d 0d a2 12 45 51 55 |&FF040404....EQU| 00002510 44 20 26 46 46 30 46 30 32 46 46 0d 0d ac 12 45 |D &FF0F02FF....E| 00002520 51 55 44 20 26 30 37 46 46 46 46 30 34 0d 0d b6 |QUD &07FFFF04...| 00002530 12 45 51 55 44 20 26 30 35 30 35 30 35 46 46 0d |.EQUD &050505FF.| 00002540 0d c0 12 45 51 55 44 20 26 30 35 46 46 46 46 30 |...EQUD &05FFFF0| 00002550 34 0d 0d ca 12 45 51 55 44 20 26 30 35 46 46 46 |4....EQUD &05FFF| 00002560 46 30 36 0d 0d d4 12 45 51 55 44 20 26 46 46 30 |F06....EQUD &FF0| 00002570 33 30 45 46 46 0d 0d de 12 45 51 55 44 20 26 46 |30EFF....EQUD &F| 00002580 46 30 31 30 43 46 46 0d 0d e8 12 45 51 55 44 20 |F010CFF....EQUD | 00002590 26 30 39 46 46 46 46 30 41 0d 0d f2 12 45 51 55 |&09FFFF0A....EQU| 000025a0 44 20 26 30 42 46 46 46 46 30 41 0d 0d fc 12 45 |D &0BFFFF0A....E| 000025b0 51 55 44 20 26 46 46 30 41 30 41 30 41 0d 0e 06 |QUD &FF0A0A0A...| 000025c0 12 45 51 55 44 20 26 30 42 46 46 46 46 30 38 0d |.EQUD &0BFFFF08.| 000025d0 0e 10 12 45 51 55 44 20 26 46 46 30 44 30 30 46 |...EQUD &FF0D00F| 000025e0 46 0d 0e 1a 12 45 51 55 44 20 26 30 42 30 42 30 |F....EQUD &0B0B0| 000025f0 42 46 46 0d 0e 24 12 45 51 55 44 20 26 30 42 46 |BFF..$.EQUD &0BF| 00002600 46 46 46 30 41 0d 0e 2e 12 45 51 55 44 20 26 30 |FFF0A....EQUD &0| 00002610 43 46 46 30 43 30 43 0d 0e 38 12 45 51 55 44 20 |CFF0C0C..8.EQUD | 00002620 26 46 46 30 44 30 43 46 46 0d 0e 42 12 45 51 55 |&FF0D0CFF..B.EQU| 00002630 44 20 26 46 46 30 46 30 43 46 46 0d 0e 4c 12 45 |D &FF0F0CFF..L.E| 00002640 51 55 44 20 26 30 37 46 46 46 46 30 41 0d 0e 56 |QUD &07FFFF0A..V| 00002650 12 45 51 55 44 20 26 46 46 30 44 30 43 46 46 0d |.EQUD &FF0D0CFF.| 00002660 0e 60 12 45 51 55 44 20 26 30 44 30 44 46 46 30 |.`.EQUD &0D0DFF0| 00002670 44 0d 0e 6a 12 45 51 55 44 20 26 30 42 46 46 46 |D..j.EQUD &0BFFF| 00002680 46 30 36 0d 0e 74 12 45 51 55 44 20 26 46 46 30 |F06..t.EQUD &FF0| 00002690 44 30 45 46 46 0d 0e 7e 12 45 51 55 44 20 26 30 |D0EFF..~.EQUD &0| 000026a0 39 46 46 46 46 30 38 0d 0e 88 12 45 51 55 44 20 |9FFFF08....EQUD | 000026b0 26 30 39 30 39 30 39 46 46 0d 0e 92 12 45 51 55 |&090909FF....EQU| 000026c0 44 20 26 46 46 30 46 30 32 46 46 0d 0e 9c 12 45 |D &FF0F02FF....E| 000026d0 51 55 44 20 26 30 39 46 46 46 46 30 41 0d 0e a6 |QUD &09FFFF0A...| 000026e0 12 45 51 55 44 20 26 46 46 30 38 30 38 30 38 0d |.EQUD &FF080808.| 000026f0 0e b0 12 45 51 55 44 20 26 30 39 46 46 46 46 30 |...EQUD &09FFFF0| 00002700 38 0d 0e ba 12 45 51 55 44 20 26 30 42 46 46 46 |8....EQUD &0BFFF| 00002710 46 30 38 0d 0e c4 12 45 51 55 44 20 26 46 46 30 |F08....EQUD &FF0| 00002720 33 30 45 46 46 0d 0e ce 12 45 51 55 44 20 26 46 |30EFF....EQUD &F| 00002730 46 30 46 30 43 46 46 0d 0e d8 12 45 51 55 44 20 |F0F0CFF....EQUD | 00002740 26 30 39 46 46 46 46 30 34 0d 0e e2 12 45 51 55 |&09FFFF04....EQU| 00002750 44 20 26 30 46 30 46 46 46 30 46 0d 0e ec 12 45 |D &0F0FFF0F....E| 00002760 51 55 44 20 26 46 46 30 46 30 45 46 46 0d 0e f6 |QUD &FF0F0EFF...| 00002770 12 45 51 55 44 20 26 30 35 46 46 46 46 30 38 0d |.EQUD &05FFFF08.| 00002780 0f 00 12 45 51 55 44 20 26 46 46 30 44 30 45 46 |...EQUD &FF0D0EF| 00002790 46 0d 0f 0a 12 45 51 55 44 20 26 46 46 30 46 30 |F....EQUD &FF0F0| 000027a0 45 46 46 0d 0f 14 12 45 51 55 44 20 26 30 45 46 |EFF....EQUD &0EF| 000027b0 46 30 45 30 45 0d 0f 1e 0e 2e 62 75 66 66 74 61 |F0E0E.....buffta| 000027c0 62 6c 65 0d 0f 28 0f 45 51 55 57 20 62 75 66 66 |ble..(.EQUW buff| 000027d0 65 72 0d 0f 32 12 45 51 55 57 20 62 75 66 66 65 |er..2.EQUW buffe| 000027e0 72 2b 34 30 0d 0f 3c 16 45 51 55 57 20 62 75 66 |r+40..<.EQUW buf| 000027f0 66 65 72 2b 28 32 2a 34 30 29 0d 0f 46 16 45 51 |fer+(2*40)..F.EQ| 00002800 55 57 20 62 75 66 66 65 72 2b 28 33 2a 34 30 29 |UW buffer+(3*40)| 00002810 0d 0f 50 16 45 51 55 57 20 62 75 66 66 65 72 2b |..P.EQUW buffer+| 00002820 28 34 2a 34 30 29 0d 0f 5a 16 45 51 55 57 20 62 |(4*40)..Z.EQUW b| 00002830 75 66 66 65 72 2b 28 35 2a 34 30 29 0d 0f 64 16 |uffer+(5*40)..d.| 00002840 45 51 55 57 20 62 75 66 66 65 72 2b 28 36 2a 34 |EQUW buffer+(6*4| 00002850 30 29 0d 0f 6e 16 45 51 55 57 20 62 75 66 66 65 |0)..n.EQUW buffe| 00002860 72 2b 28 37 2a 34 30 29 0d 0f 78 16 45 51 55 57 |r+(7*40)..x.EQUW| 00002870 20 62 75 66 66 65 72 2b 28 38 2a 34 30 29 0d 0f | buffer+(8*40)..| 00002880 82 16 45 51 55 57 20 62 75 66 66 65 72 2b 28 39 |..EQUW buffer+(9| 00002890 2a 34 30 29 0d 0f 8c 17 45 51 55 57 20 62 75 66 |*40)....EQUW buf| 000028a0 66 65 72 2b 28 31 30 2a 34 30 29 0d 0f 96 17 45 |fer+(10*40)....E| 000028b0 51 55 57 20 62 75 66 66 65 72 2b 28 31 31 2a 34 |QUW buffer+(11*4| 000028c0 30 29 0d 0f a0 17 45 51 55 57 20 62 75 66 66 65 |0)....EQUW buffe| 000028d0 72 2b 28 31 32 2a 34 30 29 0d 0f aa 17 45 51 55 |r+(12*40)....EQU| 000028e0 57 20 62 75 66 66 65 72 2b 28 31 33 2a 34 30 29 |W buffer+(13*40)| 000028f0 0d 0f b4 17 45 51 55 57 20 62 75 66 66 65 72 2b |....EQUW buffer+| 00002900 28 31 34 2a 34 30 29 0d 0f be 17 45 51 55 57 20 |(14*40)....EQUW | 00002910 62 75 66 66 65 72 2b 28 31 35 2a 34 30 29 0d 0f |buffer+(15*40)..| 00002920 c8 17 45 51 55 57 20 62 75 66 66 65 72 2b 28 31 |..EQUW buffer+(1| 00002930 36 2a 34 30 29 0d 0f d2 17 45 51 55 57 20 62 75 |6*40)....EQUW bu| 00002940 66 66 65 72 2b 28 31 37 2a 34 30 29 0d 0f dc 17 |ffer+(17*40)....| 00002950 45 51 55 57 20 62 75 66 66 65 72 2b 28 31 38 2a |EQUW buffer+(18*| 00002960 34 30 29 0d 0f e6 17 45 51 55 57 20 62 75 66 66 |40)....EQUW buff| 00002970 65 72 2b 28 31 39 2a 34 30 29 0d 0f f0 17 45 51 |er+(19*40)....EQ| 00002980 55 57 20 62 75 66 66 65 72 2b 28 32 30 2a 34 30 |UW buffer+(20*40| 00002990 29 0d 0f fa 17 45 51 55 57 20 62 75 66 66 65 72 |)....EQUW buffer| 000029a0 2b 28 32 31 2a 34 30 29 0d 10 04 17 45 51 55 57 |+(21*40)....EQUW| 000029b0 20 62 75 66 66 65 72 2b 28 32 32 2a 34 30 29 0d | buffer+(22*40).| 000029c0 10 0e 17 45 51 55 57 20 62 75 66 66 65 72 2b 28 |...EQUW buffer+(| 000029d0 32 33 2a 34 30 29 0d 10 18 17 45 51 55 57 20 62 |23*40)....EQUW b| 000029e0 75 66 66 65 72 2b 28 32 34 2a 34 30 29 0d 10 22 |uffer+(24*40).."| 000029f0 05 5d 0d 10 2c 05 ed 0d 10 36 05 e1 0d ff |.]..,....6....| 000029fe