Home » CEEFAX disks » telesoftware14.adl » 18-03-89/Header
18-03-89/Header
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: | 18-03-89/Header |
Read OK: | ✔ |
File size: | 1B65 bytes |
Load address: | FFFF1900 |
Exec address: | FFFF8023 |
File contents
10REM> HEADER 20MODE7 30VDU14 40DIM mcode &300 :REM: space for machine code 50DIM buffer &3300 :REM: buffer for 300 headers 60PROCmcode :REM: assemble machine code 70INPUT"TV channel (1-4) = "answer$ 80channel?0=EVAL("&"+LEFT$(answer$,1))+&1B :REM: TTX enable, Int enable, AFC 90IF channel?0 < &1C THEN channel?0 = &1C 100IF channel?0 > &1F THEN channel?0 = &1F 110PRINT"Reading TTX - Please wait" 120CALL mcode :REM: read 300 headers and store in buffer 130control$=STRING$(60," ") 140end=buffer+(300*41) :REM: end of buffer 150FOR head = buffer TO end STEP 41 160control$="" 170PRINT;~head?0;~head?2;~head?1;:REM: magazine and page numbers 180PRINT;~(head?6)AND3;~head?5;~(head?4)AND7;~head?3;:REM: sub-page number 190erase=((head?4)AND8)<>0 :REM: erase page 200news=((head?6)AND4)<>0 :REM: news flash 210subtitle=((head?6)AND8)<>0 :REM: subtitle 220suppress=((head?7)AND1)<>0 :REM: suppress header 230update=((head?7)AND2)<>0 :REM: update indicator 240outofseq=((head?7)AND4)<>0 :REM: out of sequence 250inhibit=((head?7)AND8)<>0 :REM: inhibit display 260serial=((head?8)AND1)<>0 :REM: serial magazine 270IF erase control$=control$+" Erase," 280IF news control$=control$+" News," 290IF subtitle control$=control$+" Sub-T," 300IF suppress control$=control$+" Supp," 310IF update control$=control$+" Update," 320IF outofseq control$=control$+" Out-Seq," 330IF inhibit control$=control$+" Inhibit," 340IF serial control$=control$+" Serial" ELSE control$=control$+" Para." 350PRINT control$ :REM: explain the control bits 360FOR byte=9 TO 40 370VDU ((head?byte) OR &80):REM: display header 380NEXT 390PRINT 400NEXT 410VDU15 420END 430DEFPROCmcode 440grabflag=&70 :REM: header grab flag 450channel=&71 :REM: TV channel 460workspace=&72 :REM: 2 byte workspace 470magazine=&74 :REM: magazine number 480packet=&75 :REM: packet number 490irq2v=&206 :REM: IRQ2 vector 500ttxcontrol=&FC10 :REM: TTX control register, write only 510ttxstatus=&FC10 :REM: TTX status register, read only 520rowreg=&FC11 :REM: TTX row register, write only 530datareg=&FC12 :REM: TTX data register, read & write 540statclr=&FC13 :REM: TTX clear status register, read & write 550osbyte=&FFF4 560FOR pass=0 TO 2 STEP 2 570P%=mcode 580[OPT pass 590LDA #&00 600STA grabflag \ when grabflag = 0 read and store headers 610LDX #buffer MOD 256 \ address of the start of the buffer 620LDY #buffer DIV 256 630STX workspace \ into zero page for indirect addressing 640STY workspace+1 650LDX irq2v \ load secondary interrupt vector 660LDY irq2v+1 670STX oldirq2v \ save secondary interrupt vector 680STY oldirq2v+1 690LDX #interrupt MOD 256 \ install new interrupt routine 700LDY #interrupt DIV 256 710SEI \ disable interrupts when vectors are altered 720STX irq2v 730STY irq2v+1 740CLI \ re-enable interrupts 750LDA channel \ load (channel number + #&1C) 760STA ttxcontrol \ enable TTX 770.mainloop 780BIT grabflag \ grabflag = &80 when buffer full 790BMI allover \ branch if buffer full 800BIT &FF \ poll escape flag 810BPL mainloop \ loop if escape not pressed 820LDA #&7E \ decimal 126 830JSR osbyte \ acknowledge escape 840.allover 850LDA #&00 860STA ttxcontrol \ disable TTX 870LDX oldirq2v \ load original vector 880LDY oldirq2v+1 890SEI \ disable interrupts when vectors are altered 900STX irq2v \ restore original vector 910STY irq2v+1 920CLI \ re-enable interrupts 930RTS \ return to BASIC 940.interrupt 950BIT ttxstatus \ poll TTX hardware 960BMI ttxinter \ branch if TTX interrupt 970JMP (oldirq2v) \ not TTX interrupt 980.ttxinter 990LDA &FC \ interrupt accumulator save register 1000PHA \ push interrupt accumulator save register 1010TXA 1020PHA \ push X 1030TYA 1040PHA \ push Y 1050BIT grabflag \ are headers still being collected? 1060BMI clearstatus \ clear status and RTI if finished 1070CLD \ clear decimal flag 1080LDY #&00 \ start with row 0 1090.readttxt 1100STY rowreg \ try rows 0 to 15 1110LDA datareg \ load framing code (#&27) 1120BEQ emptyrow \ if zero try next row 1130TYA 1140PHA \ save row number 1150JSR readpacket \ look for headers and load if found 1160PLA 1170TAY \ restore row number 1180.emptyrow 1190INY \ increment row number 1200CPY #&10 \ try rows 0 - 15 1210BNE readttxt 1220.clearstatus 1230LDA #&00 1240LDY #&0F \ clear 16 rows in adaptor 1250.clearloop 1260STY rowreg 1270STA datareg 1280DEY 1290BPL clearloop 1300STA statclr \ clear status flags before returning 1310PLA 1320TAY \ restore Y 1330PLA 1340TAX \ restore X 1350PLA 1360STA &FC \ restore interrupt accumulator save register 1370RTI \ return from interrupt 1380.readpacket 1390LDY datareg \ read magazine number 1400LDA hamtable,Y \ de-ham it 1410BMI return \ stop loading if error 1420STA magazine \ save magazine number 1430LDY datareg \ read packet number 1440LDA hamtable,Y \ de-ham it 1450BMI return \ stop loading if error 1460STA packet \ save packet number 1470LDA magazine \ load magazine number 1480CMP #&08 \ bit 3 of mag. number is bit 0 of packet number 1490ROL packet \ 5 bit packet number 1500AND #&07 \ use only bits 0-2 1510LDY #&00 1520STA (workspace),Y \ store magazine number 1530LDA packet \ header packet number is zero 1540BNE return \ return if not header 1550.readheader 1560INY \ Y = 1-40 1570LDX datareg \ read data register 1580LDA hamtable,X \ de-ham it 1590BMI return \ stop loading if error 1600STA (workspace),Y \ store de-hammed data 1610CPY #&08 \ use Y = 1-8 for 8 bytes of hammed data 1620BCC readheader \ continue reading hammed data 1630.readmore 1640INY 1650LDA datareg \ read data register, not hammed 1660ORA #&80 \ set bit 7 1670STA (workspace),Y \ store in buffer 1680CPY #&28 \ decimal 40 1690BNE readmore \ go back for more 1700CLC \ clear carry for addition 1710LDA workspace 1720ADC #&29 \ add 41 to point to next part of the buffer 1730STA workspace 1740LDA workspace+1 1750ADC #&00 1760STA workspace+1 1770CMP #(buffer+&3300) DIV 256 \ is there room for more data? 1780BCC return \ branch if there is more room 1790LDA #&80 1800STA grabflag \ mark buffer as full 1810.return 1820RTS \ return to look at next TTX row 1830.oldirq2v 1840EQUW &00 1850.hamtable 1860EQUD &0101FF01 1870EQUD &FF0100FF 1880EQUD &FF0102FF 1890EQUD &07FFFF0A 1900EQUD &FF0100FF 1910EQUD &00FF0000 1920EQUD &0BFFFF06 1930EQUD &FF0300FF 1940EQUD &FF010CFF 1950EQUD &07FFFF04 1960EQUD &07FFFF06 1970EQUD &070707FF 1980EQUD &05FFFF06 1990EQUD &FF0D00FF 2000EQUD &FF060606 2010EQUD &07FFFF06 2020EQUD &FF0102FF 2030EQUD &09FFFF04 2040EQUD &02FF0202 2050EQUD &FF0302FF 2060EQUD &05FFFF08 2070EQUD &FF0300FF 2080EQUD &FF0302FF 2090EQUD &0303FF03 2100EQUD &05FFFF04 2110EQUD &FF040404 2120EQUD &FF0F02FF 2130EQUD &07FFFF04 2140EQUD &050505FF 2150EQUD &05FFFF04 2160EQUD &05FFFF06 2170EQUD &FF030EFF 2180EQUD &FF010CFF 2190EQUD &09FFFF0A 2200EQUD &0BFFFF0A 2210EQUD &FF0A0A0A 2220EQUD &0BFFFF08 2230EQUD &FF0D00FF 2240EQUD &0B0B0BFF 2250EQUD &0BFFFF0A 2260EQUD &0CFF0C0C 2270EQUD &FF0D0CFF 2280EQUD &FF0F0CFF 2290EQUD &07FFFF0A 2300EQUD &FF0D0CFF 2310EQUD &0D0DFF0D 2320EQUD &0BFFFF06 2330EQUD &FF0D0EFF 2340EQUD &09FFFF08 2350EQUD &090909FF 2360EQUD &FF0F02FF 2370EQUD &09FFFF0A 2380EQUD &FF080808 2390EQUD &09FFFF08 2400EQUD &0BFFFF08 2410EQUD &FF030EFF 2420EQUD &FF0F0CFF 2430EQUD &09FFFF04 2440EQUD &0F0FFF0F 2450EQUD &FF0F0EFF 2460EQUD &05FFFF08 2470EQUD &FF0D0EFF 2480EQUD &FF0F0EFF 2490EQUD &0EFF0E0E 2500] 2510NEXT 2520ENDPROC
�> HEADER �7 �14 (+� mcode &300 :�: space for machine code 2-� buffer &3300 :�: buffer for 300 headers <$�mcode :�: assemble machine code F!�"TV channel (1-4) = "answer$ PDchannel?0=�("&"+�answer$,1))+&1B :�: TTX enable, Int enable, AFC Z'� channel?0 < &1C � channel?0 = &1C d'� channel?0 > &1F � channel?0 = &1F n �"Reading TTX - Please wait" x4� mcode :�: read 300 headers and store in buffer �control$=�60," ") �)end=buffer+(300*41) :�: end of buffer �� head = buffer � end � 41 �control$="" �;�;~head?0;~head?2;~head?1;:�: magazine and page numbers �A�;~(head?6)�3;~head?5;~(head?4)�7;~head?3;:�: sub-page number �(erase=((head?4)�8)<>0 :�: erase page �'news=((head?6)�4)<>0 :�: news flash �)subtitle=((head?6)�8)<>0 :�: subtitle �0suppress=((head?7)�1)<>0 :�: suppress header �/update=((head?7)�2)<>0 :�: update indicator �0outofseq=((head?7)�4)<>0 :�: out of sequence �/inhibit=((head?7)�8)<>0 :�: inhibit display .serial=((head?8)�1)<>0 :�: serial magazine '� erase control$=control$+" Erase," %� news control$=control$+" News," "*� subtitle control$=control$+" Sub-T," ,)� suppress control$=control$+" Supp," 6)� update control$=control$+" Update," @,� outofseq control$=control$+" Out-Seq," J+� inhibit control$=control$+" Inhibit," TE� serial control$=control$+" Serial" � control$=control$+" Para." ^+� control$ :�: explain the control bits h� byte=9 � 40 r+� ((head?byte) � &80):�: display header |� �� �� ��15 �� ���mcode �%grabflag=&70 :�: header grab flag �channel=&71 :�: TV channel �&workspace=&72 :�: 2 byte workspace �$magazine=&74 :�: magazine number � packet=&75 :�: packet number �irq2v=&206 :�: IRQ2 vector �9ttxcontrol=&FC10 :�: TTX control register, write only �6ttxstatus=&FC10 :�: TTX status register, read only 1rowreg=&FC11 :�: TTX row register, write only 5datareg=&FC12 :�: TTX data register, read & write =statclr=&FC13 :�: TTX clear status register, read & write &osbyte=&FFF4 0� pass=0 � 2 � 2 :P%=mcode D [OPT pass NLDA #&00 X;STA grabflag \ when grabflag = 0 read and store headers b:LDX #buffer � 256 \ address of the start of the buffer lLDY #buffer � 256 v:STX workspace \ into zero page for indirect addressing �STY workspace+1 �/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 �5SEI \ disable interrupts when vectors are altered � STX irq2v �STY irq2v+1 �CLI \ re-enable interrupts �.LDA channel \ load (channel number + #&1C) �STA ttxcontrol \ enable TTX .mainloop 2BIT grabflag \ grabflag = &80 when buffer full 'BMI allover \ branch if buffer full BIT &FF \ poll escape flag *-BPL mainloop \ loop if escape not pressed 4LDA #&7E \ decimal 126 >#JSR osbyte \ acknowledge escape H.allover RLDA #&00 \ STA ttxcontrol \ disable TTX f'LDX oldirq2v \ load original vector pLDY oldirq2v+1 z5SEI \ disable interrupts when vectors are altered �'STX irq2v \ restore original vector �STY irq2v+1 �CLI \ re-enable interrupts �RTS \ return to BASIC �.interrupt �%BIT ttxstatus \ poll TTX hardware �*BMI ttxinter \ branch if TTX interrupt �&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 5BIT grabflag \ are headers still being collected? $6BMI clearstatus \ clear status and RTI if finished .CLD \ clear decimal flag 8LDY #&00 \ start with row 0 B .readttxt L!STY rowreg \ try rows 0 to 15 V*LDA datareg \ load framing code (#&27) `'BEQ emptyrow \ if zero try next row jTYA tPHA \ save row number ~7JSR readpacket \ look for headers and load if found �PLA �TAY \ restore row number � .emptyrow �INY \ increment row number �CPY #&10 \ try rows 0 - 15 �BNE readttxt �.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 2PLA <TAX \ restore X FPLA P9STA &FC \ restore interrupt accumulator save register ZRTI \ return from interrupt d.readpacket n&LDY datareg \ read magazine number xLDA hamtable,Y \ de-ham it �&BMI return \ stop loading if error �'STA magazine \ save magazine number �$LDY datareg \ read packet number �LDA hamtable,Y \ de-ham it �&BMI return \ 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 �LDY #&00 �-STA (workspace),Y \ store magazine number �-LDA packet \ header packet number is zero %BNE return \ return if not header .readheader INY \ Y = 1-40 "$LDX datareg \ read data register ,LDA hamtable,X \ de-ham it 6&BMI return \ stop loading if error @,STA (workspace),Y \ store de-hammed data J5CPY #&08 \ use Y = 1-8 for 8 bytes of hammed data T1BCC readheader \ continue reading hammed data ^ .readmore hINY r0LDA datareg \ read data register, not hammed |�A #&80 \ set bit 7 �'STA (workspace),Y \ store in buffer �CPY #&28 \ decimal 40 �#BNE readmore \ go back for more �"CLC \ clear carry for addition �LDA workspace �9ADC #&29 \ add 41 to point to next part of the buffer �STA workspace �LDA workspace+1 �ADC #&00 �STA workspace+1 �<CMP #(buffer+&3300) � 256 \ is there room for more data? �-BCC return \ branch if there is more room �LDA #&80 &STA grabflag \ mark buffer as full .return (RTS \ return to look at next TTX row & .oldirq2v 0EQUW &00 : .hamtable DEQUD &0101FF01 NEQUD &FF0100FF XEQUD &FF0102FF bEQUD &07FFFF0A lEQUD &FF0100FF vEQUD &00FF0000 �EQUD &0BFFFF06 �EQUD &FF0300FF �EQUD &FF010CFF �EQUD &07FFFF04 �EQUD &07FFFF06 �EQUD &070707FF �EQUD &05FFFF06 �EQUD &FF0D00FF �EQUD &FF060606 �EQUD &07FFFF06 �EQUD &FF0102FF �EQUD &09FFFF04 �EQUD &02FF0202 EQUD &FF0302FF EQUD &05FFFF08 EQUD &FF0300FF EQUD &FF0302FF *EQUD &0303FF03 4EQUD &05FFFF04 >EQUD &FF040404 HEQUD &FF0F02FF REQUD &07FFFF04 \EQUD &050505FF fEQUD &05FFFF04 pEQUD &05FFFF06 zEQUD &FF030EFF �EQUD &FF010CFF �EQUD &09FFFF0A �EQUD &0BFFFF0A �EQUD &FF0A0A0A �EQUD &0BFFFF08 �EQUD &FF0D00FF �EQUD &0B0B0BFF �EQUD &0BFFFF0A �EQUD &0CFF0C0C �EQUD &FF0D0CFF �EQUD &FF0F0CFF �EQUD &07FFFF0A �EQUD &FF0D0CFF EQUD &0D0DFF0D EQUD &0BFFFF06 EQUD &FF0D0EFF $EQUD &09FFFF08 .EQUD &090909FF 8EQUD &FF0F02FF BEQUD &09FFFF0A LEQUD &FF080808 VEQUD &09FFFF08 `EQUD &0BFFFF08 jEQUD &FF030EFF tEQUD &FF0F0CFF ~EQUD &09FFFF04 �EQUD &0F0FFF0F �EQUD &FF0F0EFF �EQUD &05FFFF08 �EQUD &FF0D0EFF �EQUD &FF0F0EFF �EQUD &0EFF0E0E �] �� �� �
00000000 0d 00 0a 0d f4 3e 20 48 45 41 44 45 52 0d 00 14 |.....> HEADER...| 00000010 06 eb 37 0d 00 1e 07 ef 31 34 0d 00 28 2b de 20 |..7.....14..(+. | 00000020 6d 63 6f 64 65 20 26 33 30 30 20 3a f4 3a 20 73 |mcode &300 :.: s| 00000030 70 61 63 65 20 66 6f 72 20 6d 61 63 68 69 6e 65 |pace for machine| 00000040 20 63 6f 64 65 0d 00 32 2d de 20 62 75 66 66 65 | code..2-. buffe| 00000050 72 20 26 33 33 30 30 20 3a f4 3a 20 62 75 66 66 |r &3300 :.: buff| 00000060 65 72 20 66 6f 72 20 33 30 30 20 68 65 61 64 65 |er for 300 heade| 00000070 72 73 0d 00 3c 24 f2 6d 63 6f 64 65 20 3a f4 3a |rs..<$.mcode :.:| 00000080 20 61 73 73 65 6d 62 6c 65 20 6d 61 63 68 69 6e | assemble machin| 00000090 65 20 63 6f 64 65 0d 00 46 21 e8 22 54 56 20 63 |e code..F!."TV c| 000000a0 68 61 6e 6e 65 6c 20 28 31 2d 34 29 20 3d 20 22 |hannel (1-4) = "| 000000b0 61 6e 73 77 65 72 24 0d 00 50 44 63 68 61 6e 6e |answer$..PDchann| 000000c0 65 6c 3f 30 3d a0 28 22 26 22 2b c0 61 6e 73 77 |el?0=.("&"+.answ| 000000d0 65 72 24 2c 31 29 29 2b 26 31 42 20 3a f4 3a 20 |er$,1))+&1B :.: | 000000e0 54 54 58 20 65 6e 61 62 6c 65 2c 20 49 6e 74 20 |TTX enable, Int | 000000f0 65 6e 61 62 6c 65 2c 20 41 46 43 0d 00 5a 27 e7 |enable, AFC..Z'.| 00000100 20 63 68 61 6e 6e 65 6c 3f 30 20 3c 20 26 31 43 | channel?0 < &1C| 00000110 20 8c 20 63 68 61 6e 6e 65 6c 3f 30 20 3d 20 26 | . channel?0 = &| 00000120 31 43 0d 00 64 27 e7 20 63 68 61 6e 6e 65 6c 3f |1C..d'. channel?| 00000130 30 20 3e 20 26 31 46 20 8c 20 63 68 61 6e 6e 65 |0 > &1F . channe| 00000140 6c 3f 30 20 3d 20 26 31 46 0d 00 6e 20 f1 22 52 |l?0 = &1F..n ."R| 00000150 65 61 64 69 6e 67 20 54 54 58 20 2d 20 50 6c 65 |eading TTX - Ple| 00000160 61 73 65 20 77 61 69 74 22 0d 00 78 34 d6 20 6d |ase wait"..x4. m| 00000170 63 6f 64 65 20 3a f4 3a 20 72 65 61 64 20 33 30 |code :.: read 30| 00000180 30 20 68 65 61 64 65 72 73 20 61 6e 64 20 73 74 |0 headers and st| 00000190 6f 72 65 20 69 6e 20 62 75 66 66 65 72 0d 00 82 |ore in buffer...| 000001a0 15 63 6f 6e 74 72 6f 6c 24 3d c4 36 30 2c 22 20 |.control$=.60," | 000001b0 22 29 0d 00 8c 29 65 6e 64 3d 62 75 66 66 65 72 |")...)end=buffer| 000001c0 2b 28 33 30 30 2a 34 31 29 20 3a f4 3a 20 65 6e |+(300*41) :.: en| 000001d0 64 20 6f 66 20 62 75 66 66 65 72 0d 00 96 1e e3 |d of buffer.....| 000001e0 20 68 65 61 64 20 3d 20 62 75 66 66 65 72 20 b8 | head = buffer .| 000001f0 20 65 6e 64 20 88 20 34 31 0d 00 a0 0f 63 6f 6e | end . 41....con| 00000200 74 72 6f 6c 24 3d 22 22 0d 00 aa 3b f1 3b 7e 68 |trol$=""...;.;~h| 00000210 65 61 64 3f 30 3b 7e 68 65 61 64 3f 32 3b 7e 68 |ead?0;~head?2;~h| 00000220 65 61 64 3f 31 3b 3a f4 3a 20 6d 61 67 61 7a 69 |ead?1;:.: magazi| 00000230 6e 65 20 61 6e 64 20 70 61 67 65 20 6e 75 6d 62 |ne and page numb| 00000240 65 72 73 0d 00 b4 41 f1 3b 7e 28 68 65 61 64 3f |ers...A.;~(head?| 00000250 36 29 80 33 3b 7e 68 65 61 64 3f 35 3b 7e 28 68 |6).3;~head?5;~(h| 00000260 65 61 64 3f 34 29 80 37 3b 7e 68 65 61 64 3f 33 |ead?4).7;~head?3| 00000270 3b 3a f4 3a 20 73 75 62 2d 70 61 67 65 20 6e 75 |;:.: sub-page nu| 00000280 6d 62 65 72 0d 00 be 28 65 72 61 73 65 3d 28 28 |mber...(erase=((| 00000290 68 65 61 64 3f 34 29 80 38 29 3c 3e 30 20 3a f4 |head?4).8)<>0 :.| 000002a0 3a 20 65 72 61 73 65 20 70 61 67 65 0d 00 c8 27 |: erase page...'| 000002b0 6e 65 77 73 3d 28 28 68 65 61 64 3f 36 29 80 34 |news=((head?6).4| 000002c0 29 3c 3e 30 20 3a f4 3a 20 6e 65 77 73 20 66 6c |)<>0 :.: news fl| 000002d0 61 73 68 0d 00 d2 29 73 75 62 74 69 74 6c 65 3d |ash...)subtitle=| 000002e0 28 28 68 65 61 64 3f 36 29 80 38 29 3c 3e 30 20 |((head?6).8)<>0 | 000002f0 3a f4 3a 20 73 75 62 74 69 74 6c 65 0d 00 dc 30 |:.: subtitle...0| 00000300 73 75 70 70 72 65 73 73 3d 28 28 68 65 61 64 3f |suppress=((head?| 00000310 37 29 80 31 29 3c 3e 30 20 3a f4 3a 20 73 75 70 |7).1)<>0 :.: sup| 00000320 70 72 65 73 73 20 68 65 61 64 65 72 0d 00 e6 2f |press header.../| 00000330 75 70 64 61 74 65 3d 28 28 68 65 61 64 3f 37 29 |update=((head?7)| 00000340 80 32 29 3c 3e 30 20 3a f4 3a 20 75 70 64 61 74 |.2)<>0 :.: updat| 00000350 65 20 69 6e 64 69 63 61 74 6f 72 0d 00 f0 30 6f |e indicator...0o| 00000360 75 74 6f 66 73 65 71 3d 28 28 68 65 61 64 3f 37 |utofseq=((head?7| 00000370 29 80 34 29 3c 3e 30 20 3a f4 3a 20 6f 75 74 20 |).4)<>0 :.: out | 00000380 6f 66 20 73 65 71 75 65 6e 63 65 0d 00 fa 2f 69 |of sequence.../i| 00000390 6e 68 69 62 69 74 3d 28 28 68 65 61 64 3f 37 29 |nhibit=((head?7)| 000003a0 80 38 29 3c 3e 30 20 3a f4 3a 20 69 6e 68 69 62 |.8)<>0 :.: inhib| 000003b0 69 74 20 64 69 73 70 6c 61 79 0d 01 04 2e 73 65 |it display....se| 000003c0 72 69 61 6c 3d 28 28 68 65 61 64 3f 38 29 80 31 |rial=((head?8).1| 000003d0 29 3c 3e 30 20 3a f4 3a 20 73 65 72 69 61 6c 20 |)<>0 :.: serial | 000003e0 6d 61 67 61 7a 69 6e 65 0d 01 0e 27 e7 20 65 72 |magazine...'. er| 000003f0 61 73 65 20 63 6f 6e 74 72 6f 6c 24 3d 63 6f 6e |ase control$=con| 00000400 74 72 6f 6c 24 2b 22 20 45 72 61 73 65 2c 22 0d |trol$+" Erase,".| 00000410 01 18 25 e7 20 6e 65 77 73 20 63 6f 6e 74 72 6f |..%. news contro| 00000420 6c 24 3d 63 6f 6e 74 72 6f 6c 24 2b 22 20 4e 65 |l$=control$+" Ne| 00000430 77 73 2c 22 0d 01 22 2a e7 20 73 75 62 74 69 74 |ws,".."*. subtit| 00000440 6c 65 20 63 6f 6e 74 72 6f 6c 24 3d 63 6f 6e 74 |le control$=cont| 00000450 72 6f 6c 24 2b 22 20 53 75 62 2d 54 2c 22 0d 01 |rol$+" Sub-T,"..| 00000460 2c 29 e7 20 73 75 70 70 72 65 73 73 20 63 6f 6e |,). suppress con| 00000470 74 72 6f 6c 24 3d 63 6f 6e 74 72 6f 6c 24 2b 22 |trol$=control$+"| 00000480 20 53 75 70 70 2c 22 0d 01 36 29 e7 20 75 70 64 | Supp,"..6). upd| 00000490 61 74 65 20 63 6f 6e 74 72 6f 6c 24 3d 63 6f 6e |ate control$=con| 000004a0 74 72 6f 6c 24 2b 22 20 55 70 64 61 74 65 2c 22 |trol$+" Update,"| 000004b0 0d 01 40 2c e7 20 6f 75 74 6f 66 73 65 71 20 63 |..@,. outofseq c| 000004c0 6f 6e 74 72 6f 6c 24 3d 63 6f 6e 74 72 6f 6c 24 |ontrol$=control$| 000004d0 2b 22 20 4f 75 74 2d 53 65 71 2c 22 0d 01 4a 2b |+" Out-Seq,"..J+| 000004e0 e7 20 69 6e 68 69 62 69 74 20 63 6f 6e 74 72 6f |. inhibit contro| 000004f0 6c 24 3d 63 6f 6e 74 72 6f 6c 24 2b 22 20 49 6e |l$=control$+" In| 00000500 68 69 62 69 74 2c 22 0d 01 54 45 e7 20 73 65 72 |hibit,"..TE. ser| 00000510 69 61 6c 20 63 6f 6e 74 72 6f 6c 24 3d 63 6f 6e |ial control$=con| 00000520 74 72 6f 6c 24 2b 22 20 53 65 72 69 61 6c 22 20 |trol$+" Serial" | 00000530 8b 20 63 6f 6e 74 72 6f 6c 24 3d 63 6f 6e 74 72 |. control$=contr| 00000540 6f 6c 24 2b 22 20 50 61 72 61 2e 22 0d 01 5e 2b |ol$+" Para."..^+| 00000550 f1 20 63 6f 6e 74 72 6f 6c 24 20 3a f4 3a 20 65 |. control$ :.: e| 00000560 78 70 6c 61 69 6e 20 74 68 65 20 63 6f 6e 74 72 |xplain the contr| 00000570 6f 6c 20 62 69 74 73 0d 01 68 11 e3 20 62 79 74 |ol bits..h.. byt| 00000580 65 3d 39 20 b8 20 34 30 0d 01 72 2b ef 20 28 28 |e=9 . 40..r+. ((| 00000590 68 65 61 64 3f 62 79 74 65 29 20 84 20 26 38 30 |head?byte) . &80| 000005a0 29 3a f4 3a 20 64 69 73 70 6c 61 79 20 68 65 61 |):.: display hea| 000005b0 64 65 72 0d 01 7c 05 ed 0d 01 86 05 f1 0d 01 90 |der..|..........| 000005c0 05 ed 0d 01 9a 07 ef 31 35 0d 01 a4 05 e0 0d 01 |.......15.......| 000005d0 ae 0b dd f2 6d 63 6f 64 65 0d 01 b8 25 67 72 61 |....mcode...%gra| 000005e0 62 66 6c 61 67 3d 26 37 30 20 3a f4 3a 20 68 65 |bflag=&70 :.: he| 000005f0 61 64 65 72 20 67 72 61 62 20 66 6c 61 67 0d 01 |ader grab flag..| 00000600 c2 1e 63 68 61 6e 6e 65 6c 3d 26 37 31 20 3a f4 |..channel=&71 :.| 00000610 3a 20 54 56 20 63 68 61 6e 6e 65 6c 0d 01 cc 26 |: TV channel...&| 00000620 77 6f 72 6b 73 70 61 63 65 3d 26 37 32 20 3a f4 |workspace=&72 :.| 00000630 3a 20 32 20 62 79 74 65 20 77 6f 72 6b 73 70 61 |: 2 byte workspa| 00000640 63 65 0d 01 d6 24 6d 61 67 61 7a 69 6e 65 3d 26 |ce...$magazine=&| 00000650 37 34 20 3a f4 3a 20 6d 61 67 61 7a 69 6e 65 20 |74 :.: magazine | 00000660 6e 75 6d 62 65 72 0d 01 e0 20 70 61 63 6b 65 74 |number... packet| 00000670 3d 26 37 35 20 3a f4 3a 20 70 61 63 6b 65 74 20 |=&75 :.: packet | 00000680 6e 75 6d 62 65 72 0d 01 ea 1e 69 72 71 32 76 3d |number....irq2v=| 00000690 26 32 30 36 20 3a f4 3a 20 49 52 51 32 20 76 65 |&206 :.: IRQ2 ve| 000006a0 63 74 6f 72 0d 01 f4 39 74 74 78 63 6f 6e 74 72 |ctor...9ttxcontr| 000006b0 6f 6c 3d 26 46 43 31 30 20 3a f4 3a 20 54 54 58 |ol=&FC10 :.: TTX| 000006c0 20 63 6f 6e 74 72 6f 6c 20 72 65 67 69 73 74 65 | control registe| 000006d0 72 2c 20 77 72 69 74 65 20 6f 6e 6c 79 0d 01 fe |r, write only...| 000006e0 36 74 74 78 73 74 61 74 75 73 3d 26 46 43 31 30 |6ttxstatus=&FC10| 000006f0 20 3a f4 3a 20 54 54 58 20 73 74 61 74 75 73 20 | :.: TTX status | 00000700 72 65 67 69 73 74 65 72 2c 20 72 65 61 64 20 6f |register, read o| 00000710 6e 6c 79 0d 02 08 31 72 6f 77 72 65 67 3d 26 46 |nly...1rowreg=&F| 00000720 43 31 31 20 3a f4 3a 20 54 54 58 20 72 6f 77 20 |C11 :.: TTX row | 00000730 72 65 67 69 73 74 65 72 2c 20 77 72 69 74 65 20 |register, write | 00000740 6f 6e 6c 79 0d 02 12 35 64 61 74 61 72 65 67 3d |only...5datareg=| 00000750 26 46 43 31 32 20 3a f4 3a 20 54 54 58 20 64 61 |&FC12 :.: TTX da| 00000760 74 61 20 72 65 67 69 73 74 65 72 2c 20 72 65 61 |ta register, rea| 00000770 64 20 26 20 77 72 69 74 65 0d 02 1c 3d 73 74 61 |d & write...=sta| 00000780 74 63 6c 72 3d 26 46 43 31 33 20 3a f4 3a 20 54 |tclr=&FC13 :.: T| 00000790 54 58 20 63 6c 65 61 72 20 73 74 61 74 75 73 20 |TX clear status | 000007a0 72 65 67 69 73 74 65 72 2c 20 72 65 61 64 20 26 |register, read &| 000007b0 20 77 72 69 74 65 0d 02 26 10 6f 73 62 79 74 65 | write..&.osbyte| 000007c0 3d 26 46 46 46 34 0d 02 30 14 e3 20 70 61 73 73 |=&FFF4..0.. pass| 000007d0 3d 30 20 b8 20 32 20 88 20 32 0d 02 3a 0c 50 25 |=0 . 2 . 2..:.P%| 000007e0 3d 6d 63 6f 64 65 0d 02 44 0d 5b 4f 50 54 20 70 |=mcode..D.[OPT p| 000007f0 61 73 73 0d 02 4e 0c 4c 44 41 20 23 26 30 30 0d |ass..N.LDA #&00.| 00000800 02 58 3b 53 54 41 20 67 72 61 62 66 6c 61 67 20 |.X;STA grabflag | 00000810 5c 20 77 68 65 6e 20 67 72 61 62 66 6c 61 67 20 |\ when grabflag | 00000820 3d 20 30 20 72 65 61 64 20 61 6e 64 20 73 74 6f |= 0 read and sto| 00000830 72 65 20 68 65 61 64 65 72 73 0d 02 62 3a 4c 44 |re headers..b:LD| 00000840 58 20 23 62 75 66 66 65 72 20 83 20 32 35 36 20 |X #buffer . 256 | 00000850 5c 20 61 64 64 72 65 73 73 20 6f 66 20 74 68 65 |\ address of the| 00000860 20 73 74 61 72 74 20 6f 66 20 74 68 65 20 62 75 | start of the bu| 00000870 66 66 65 72 0d 02 6c 15 4c 44 59 20 23 62 75 66 |ffer..l.LDY #buf| 00000880 66 65 72 20 81 20 32 35 36 0d 02 76 3a 53 54 58 |fer . 256..v:STX| 00000890 20 77 6f 72 6b 73 70 61 63 65 20 5c 20 69 6e 74 | workspace \ int| 000008a0 6f 20 7a 65 72 6f 20 70 61 67 65 20 66 6f 72 20 |o zero page for | 000008b0 69 6e 64 69 72 65 63 74 20 61 64 64 72 65 73 73 |indirect address| 000008c0 69 6e 67 0d 02 80 13 53 54 59 20 77 6f 72 6b 73 |ing....STY works| 000008d0 70 61 63 65 2b 31 0d 02 8a 2f 4c 44 58 20 69 72 |pace+1.../LDX ir| 000008e0 71 32 76 20 5c 20 6c 6f 61 64 20 73 65 63 6f 6e |q2v \ load secon| 000008f0 64 61 72 79 20 69 6e 74 65 72 72 75 70 74 20 76 |dary interrupt v| 00000900 65 63 74 6f 72 0d 02 94 0f 4c 44 59 20 69 72 71 |ector....LDY irq| 00000910 32 76 2b 31 0d 02 9e 32 53 54 58 20 6f 6c 64 69 |2v+1...2STX oldi| 00000920 72 71 32 76 20 5c 20 73 61 76 65 20 73 65 63 6f |rq2v \ save seco| 00000930 6e 64 61 72 79 20 69 6e 74 65 72 72 75 70 74 20 |ndary interrupt | 00000940 76 65 63 74 6f 72 0d 02 a8 12 53 54 59 20 6f 6c |vector....STY ol| 00000950 64 69 72 71 32 76 2b 31 0d 02 b2 38 4c 44 58 20 |dirq2v+1...8LDX | 00000960 23 69 6e 74 65 72 72 75 70 74 20 83 20 32 35 36 |#interrupt . 256| 00000970 20 5c 20 69 6e 73 74 61 6c 6c 20 6e 65 77 20 69 | \ install new i| 00000980 6e 74 65 72 72 75 70 74 20 72 6f 75 74 69 6e 65 |nterrupt routine| 00000990 0d 02 bc 18 4c 44 59 20 23 69 6e 74 65 72 72 75 |....LDY #interru| 000009a0 70 74 20 81 20 32 35 36 0d 02 c6 35 53 45 49 20 |pt . 256...5SEI | 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 76 65 63 74 6f 72 |upts when vector| 000009d0 73 20 61 72 65 20 61 6c 74 65 72 65 64 0d 02 d0 |s are altered...| 000009e0 0d 53 54 58 20 69 72 71 32 76 0d 02 da 0f 53 54 |.STX irq2v....ST| 000009f0 59 20 69 72 71 32 76 2b 31 0d 02 e4 1e 43 4c 49 |Y irq2v+1....CLI| 00000a00 20 5c 20 72 65 2d 65 6e 61 62 6c 65 20 69 6e 74 | \ re-enable int| 00000a10 65 72 72 75 70 74 73 0d 02 ee 2e 4c 44 41 20 63 |errupts....LDA c| 00000a20 68 61 6e 6e 65 6c 20 5c 20 6c 6f 61 64 20 28 63 |hannel \ load (c| 00000a30 68 61 6e 6e 65 6c 20 6e 75 6d 62 65 72 20 2b 20 |hannel number + | 00000a40 23 26 31 43 29 0d 02 f8 1f 53 54 41 20 74 74 78 |#&1C)....STA ttx| 00000a50 63 6f 6e 74 72 6f 6c 20 5c 20 65 6e 61 62 6c 65 |control \ enable| 00000a60 20 54 54 58 0d 03 02 0d 2e 6d 61 69 6e 6c 6f 6f | TTX.....mainloo| 00000a70 70 0d 03 0c 32 42 49 54 20 67 72 61 62 66 6c 61 |p...2BIT grabfla| 00000a80 67 20 5c 20 67 72 61 62 66 6c 61 67 20 3d 20 26 |g \ grabflag = &| 00000a90 38 30 20 77 68 65 6e 20 62 75 66 66 65 72 20 66 |80 when buffer f| 00000aa0 75 6c 6c 0d 03 16 27 42 4d 49 20 61 6c 6c 6f 76 |ull...'BMI allov| 00000ab0 65 72 20 5c 20 62 72 61 6e 63 68 20 69 66 20 62 |er \ branch if b| 00000ac0 75 66 66 65 72 20 66 75 6c 6c 0d 03 20 1e 42 49 |uffer full.. .BI| 00000ad0 54 20 26 46 46 20 5c 20 70 6f 6c 6c 20 65 73 63 |T &FF \ poll esc| 00000ae0 61 70 65 20 66 6c 61 67 0d 03 2a 2d 42 50 4c 20 |ape flag..*-BPL | 00000af0 6d 61 69 6e 6c 6f 6f 70 20 5c 20 6c 6f 6f 70 20 |mainloop \ loop | 00000b00 69 66 20 65 73 63 61 70 65 20 6e 6f 74 20 70 72 |if escape not pr| 00000b10 65 73 73 65 64 0d 03 34 1a 4c 44 41 20 23 26 37 |essed..4.LDA #&7| 00000b20 45 20 5c 20 64 65 63 69 6d 61 6c 20 31 32 36 0d |E \ decimal 126.| 00000b30 03 3e 23 4a 53 52 20 6f 73 62 79 74 65 20 5c 20 |.>#JSR osbyte \ | 00000b40 61 63 6b 6e 6f 77 6c 65 64 67 65 20 65 73 63 61 |acknowledge esca| 00000b50 70 65 0d 03 48 0c 2e 61 6c 6c 6f 76 65 72 0d 03 |pe..H..allover..| 00000b60 52 0c 4c 44 41 20 23 26 30 30 0d 03 5c 20 53 54 |R.LDA #&00..\ ST| 00000b70 41 20 74 74 78 63 6f 6e 74 72 6f 6c 20 5c 20 64 |A ttxcontrol \ d| 00000b80 69 73 61 62 6c 65 20 54 54 58 0d 03 66 27 4c 44 |isable TTX..f'LD| 00000b90 58 20 6f 6c 64 69 72 71 32 76 20 5c 20 6c 6f 61 |X oldirq2v \ loa| 00000ba0 64 20 6f 72 69 67 69 6e 61 6c 20 76 65 63 74 6f |d original vecto| 00000bb0 72 0d 03 70 12 4c 44 59 20 6f 6c 64 69 72 71 32 |r..p.LDY oldirq2| 00000bc0 76 2b 31 0d 03 7a 35 53 45 49 20 5c 20 64 69 73 |v+1..z5SEI \ dis| 00000bd0 61 62 6c 65 20 69 6e 74 65 72 72 75 70 74 73 20 |able interrupts | 00000be0 77 68 65 6e 20 76 65 63 74 6f 72 73 20 61 72 65 |when vectors are| 00000bf0 20 61 6c 74 65 72 65 64 0d 03 84 27 53 54 58 20 | altered...'STX | 00000c00 69 72 71 32 76 20 5c 20 72 65 73 74 6f 72 65 20 |irq2v \ restore | 00000c10 6f 72 69 67 69 6e 61 6c 20 76 65 63 74 6f 72 0d |original vector.| 00000c20 03 8e 0f 53 54 59 20 69 72 71 32 76 2b 31 0d 03 |...STY irq2v+1..| 00000c30 98 1e 43 4c 49 20 5c 20 72 65 2d 65 6e 61 62 6c |..CLI \ re-enabl| 00000c40 65 20 69 6e 74 65 72 72 75 70 74 73 0d 03 a2 19 |e interrupts....| 00000c50 52 54 53 20 5c 20 72 65 74 75 72 6e 20 74 6f 20 |RTS \ return to | 00000c60 42 41 53 49 43 0d 03 ac 0e 2e 69 6e 74 65 72 72 |BASIC.....interr| 00000c70 75 70 74 0d 03 b6 25 42 49 54 20 74 74 78 73 74 |upt...%BIT ttxst| 00000c80 61 74 75 73 20 5c 20 70 6f 6c 6c 20 54 54 58 20 |atus \ poll TTX | 00000c90 68 61 72 64 77 61 72 65 0d 03 c0 2a 42 4d 49 20 |hardware...*BMI | 00000ca0 74 74 78 69 6e 74 65 72 20 5c 20 62 72 61 6e 63 |ttxinter \ branc| 00000cb0 68 20 69 66 20 54 54 58 20 69 6e 74 65 72 72 75 |h if TTX interru| 00000cc0 70 74 0d 03 ca 26 4a 4d 50 20 28 6f 6c 64 69 72 |pt...&JMP (oldir| 00000cd0 71 32 76 29 20 5c 20 6e 6f 74 20 54 54 58 20 69 |q2v) \ not TTX i| 00000ce0 6e 74 65 72 72 75 70 74 0d 03 d4 0d 2e 74 74 78 |nterrupt.....ttx| 00000cf0 69 6e 74 65 72 0d 03 de 31 4c 44 41 20 26 46 43 |inter...1LDA &FC| 00000d00 20 5c 20 69 6e 74 65 72 72 75 70 74 20 61 63 63 | \ interrupt acc| 00000d10 75 6d 75 6c 61 74 6f 72 20 73 61 76 65 20 72 65 |umulator save re| 00000d20 67 69 73 74 65 72 0d 03 e8 32 50 48 41 20 5c 20 |gister...2PHA \ | 00000d30 70 75 73 68 20 69 6e 74 65 72 72 75 70 74 20 61 |push interrupt a| 00000d40 63 63 75 6d 75 6c 61 74 6f 72 20 73 61 76 65 20 |ccumulator save | 00000d50 72 65 67 69 73 74 65 72 0d 03 f2 07 54 58 41 0d |register....TXA.| 00000d60 03 fc 10 50 48 41 20 5c 20 70 75 73 68 20 58 0d |...PHA \ push X.| 00000d70 04 06 07 54 59 41 0d 04 10 10 50 48 41 20 5c 20 |...TYA....PHA \ | 00000d80 70 75 73 68 20 59 0d 04 1a 35 42 49 54 20 67 72 |push Y...5BIT gr| 00000d90 61 62 66 6c 61 67 20 5c 20 61 72 65 20 68 65 61 |abflag \ are hea| 00000da0 64 65 72 73 20 73 74 69 6c 6c 20 62 65 69 6e 67 |ders still being| 00000db0 20 63 6f 6c 6c 65 63 74 65 64 3f 0d 04 24 36 42 | collected?..$6B| 00000dc0 4d 49 20 63 6c 65 61 72 73 74 61 74 75 73 20 5c |MI clearstatus \| 00000dd0 20 63 6c 65 61 72 20 73 74 61 74 75 73 20 61 6e | clear status an| 00000de0 64 20 52 54 49 20 69 66 20 66 69 6e 69 73 68 65 |d RTI if finishe| 00000df0 64 0d 04 2e 1c 43 4c 44 20 5c 20 63 6c 65 61 72 |d....CLD \ clear| 00000e00 20 64 65 63 69 6d 61 6c 20 66 6c 61 67 0d 04 38 | decimal flag..8| 00000e10 1f 4c 44 59 20 23 26 30 30 20 5c 20 73 74 61 72 |.LDY #&00 \ star| 00000e20 74 20 77 69 74 68 20 72 6f 77 20 30 0d 04 42 0d |t with row 0..B.| 00000e30 2e 72 65 61 64 74 74 78 74 0d 04 4c 21 53 54 59 |.readttxt..L!STY| 00000e40 20 72 6f 77 72 65 67 20 5c 20 74 72 79 20 72 6f | rowreg \ try ro| 00000e50 77 73 20 30 20 74 6f 20 31 35 0d 04 56 2a 4c 44 |ws 0 to 15..V*LD| 00000e60 41 20 64 61 74 61 72 65 67 20 5c 20 6c 6f 61 64 |A datareg \ load| 00000e70 20 66 72 61 6d 69 6e 67 20 63 6f 64 65 20 28 23 | framing code (#| 00000e80 26 32 37 29 0d 04 60 27 42 45 51 20 65 6d 70 74 |&27)..`'BEQ empt| 00000e90 79 72 6f 77 20 5c 20 69 66 20 7a 65 72 6f 20 74 |yrow \ if zero t| 00000ea0 72 79 20 6e 65 78 74 20 72 6f 77 0d 04 6a 07 54 |ry next row..j.T| 00000eb0 59 41 0d 04 74 19 50 48 41 20 5c 20 73 61 76 65 |YA..t.PHA \ save| 00000ec0 20 72 6f 77 20 6e 75 6d 62 65 72 0d 04 7e 37 4a | row number..~7J| 00000ed0 53 52 20 72 65 61 64 70 61 63 6b 65 74 20 5c 20 |SR readpacket \ | 00000ee0 6c 6f 6f 6b 20 66 6f 72 20 68 65 61 64 65 72 73 |look for headers| 00000ef0 20 61 6e 64 20 6c 6f 61 64 20 69 66 20 66 6f 75 | and load if fou| 00000f00 6e 64 0d 04 88 07 50 4c 41 0d 04 92 1c 54 41 59 |nd....PLA....TAY| 00000f10 20 5c 20 72 65 73 74 6f 72 65 20 72 6f 77 20 6e | \ restore row n| 00000f20 75 6d 62 65 72 0d 04 9c 0d 2e 65 6d 70 74 79 72 |umber.....emptyr| 00000f30 6f 77 0d 04 a6 1e 49 4e 59 20 5c 20 69 6e 63 72 |ow....INY \ incr| 00000f40 65 6d 65 6e 74 20 72 6f 77 20 6e 75 6d 62 65 72 |ement row number| 00000f50 0d 04 b0 1e 43 50 59 20 23 26 31 30 20 5c 20 74 |....CPY #&10 \ t| 00000f60 72 79 20 72 6f 77 73 20 30 20 2d 20 31 35 0d 04 |ry rows 0 - 15..| 00000f70 ba 10 42 4e 45 20 72 65 61 64 74 74 78 74 0d 04 |..BNE readttxt..| 00000f80 c4 10 2e 63 6c 65 61 72 73 74 61 74 75 73 0d 04 |...clearstatus..| 00000f90 ce 0c 4c 44 41 20 23 26 30 30 0d 04 d8 27 4c 44 |..LDA #&00...'LD| 00000fa0 59 20 23 26 30 46 20 5c 20 63 6c 65 61 72 20 31 |Y #&0F \ clear 1| 00000fb0 36 20 72 6f 77 73 20 69 6e 20 61 64 61 70 74 6f |6 rows in adapto| 00000fc0 72 0d 04 e2 0e 2e 63 6c 65 61 72 6c 6f 6f 70 0d |r.....clearloop.| 00000fd0 04 ec 0e 53 54 59 20 72 6f 77 72 65 67 0d 04 f6 |...STY rowreg...| 00000fe0 0f 53 54 41 20 64 61 74 61 72 65 67 0d 05 00 07 |.STA datareg....| 00000ff0 44 45 59 0d 05 0a 11 42 50 4c 20 63 6c 65 61 72 |DEY....BPL clear| 00001000 6c 6f 6f 70 0d 05 14 35 53 54 41 20 73 74 61 74 |loop...5STA stat| 00001010 63 6c 72 20 5c 20 63 6c 65 61 72 20 73 74 61 74 |clr \ clear stat| 00001020 75 73 20 66 6c 61 67 73 20 62 65 66 6f 72 65 20 |us flags before | 00001030 72 65 74 75 72 6e 69 6e 67 0d 05 1e 07 50 4c 41 |returning....PLA| 00001040 0d 05 28 13 54 41 59 20 5c 20 72 65 73 74 6f 72 |..(.TAY \ restor| 00001050 65 20 59 0d 05 32 07 50 4c 41 0d 05 3c 13 54 41 |e Y..2.PLA..<.TA| 00001060 58 20 5c 20 72 65 73 74 6f 72 65 20 58 0d 05 46 |X \ restore X..F| 00001070 07 50 4c 41 0d 05 50 39 53 54 41 20 26 46 43 20 |.PLA..P9STA &FC | 00001080 5c 20 72 65 73 74 6f 72 65 20 69 6e 74 65 72 72 |\ restore interr| 00001090 75 70 74 20 61 63 63 75 6d 75 6c 61 74 6f 72 20 |upt accumulator | 000010a0 73 61 76 65 20 72 65 67 69 73 74 65 72 0d 05 5a |save register..Z| 000010b0 1f 52 54 49 20 5c 20 72 65 74 75 72 6e 20 66 72 |.RTI \ return fr| 000010c0 6f 6d 20 69 6e 74 65 72 72 75 70 74 0d 05 64 0f |om interrupt..d.| 000010d0 2e 72 65 61 64 70 61 63 6b 65 74 0d 05 6e 26 4c |.readpacket..n&L| 000010e0 44 59 20 64 61 74 61 72 65 67 20 5c 20 72 65 61 |DY datareg \ rea| 000010f0 64 20 6d 61 67 61 7a 69 6e 65 20 6e 75 6d 62 65 |d magazine numbe| 00001100 72 0d 05 78 1e 4c 44 41 20 68 61 6d 74 61 62 6c |r..x.LDA hamtabl| 00001110 65 2c 59 20 5c 20 64 65 2d 68 61 6d 20 69 74 0d |e,Y \ de-ham it.| 00001120 05 82 26 42 4d 49 20 72 65 74 75 72 6e 20 5c 20 |..&BMI return \ | 00001130 73 74 6f 70 20 6c 6f 61 64 69 6e 67 20 69 66 20 |stop loading if | 00001140 65 72 72 6f 72 0d 05 8c 27 53 54 41 20 6d 61 67 |error...'STA mag| 00001150 61 7a 69 6e 65 20 5c 20 73 61 76 65 20 6d 61 67 |azine \ save mag| 00001160 61 7a 69 6e 65 20 6e 75 6d 62 65 72 0d 05 96 24 |azine number...$| 00001170 4c 44 59 20 64 61 74 61 72 65 67 20 5c 20 72 65 |LDY datareg \ re| 00001180 61 64 20 70 61 63 6b 65 74 20 6e 75 6d 62 65 72 |ad packet number| 00001190 0d 05 a0 1e 4c 44 41 20 68 61 6d 74 61 62 6c 65 |....LDA hamtable| 000011a0 2c 59 20 5c 20 64 65 2d 68 61 6d 20 69 74 0d 05 |,Y \ de-ham it..| 000011b0 aa 26 42 4d 49 20 72 65 74 75 72 6e 20 5c 20 73 |.&BMI return \ s| 000011c0 74 6f 70 20 6c 6f 61 64 69 6e 67 20 69 66 20 65 |top loading if e| 000011d0 72 72 6f 72 0d 05 b4 23 53 54 41 20 70 61 63 6b |rror...#STA pack| 000011e0 65 74 20 5c 20 73 61 76 65 20 70 61 63 6b 65 74 |et \ save packet| 000011f0 20 6e 75 6d 62 65 72 0d 05 be 27 4c 44 41 20 6d | number...'LDA m| 00001200 61 67 61 7a 69 6e 65 20 5c 20 6c 6f 61 64 20 6d |agazine \ load m| 00001210 61 67 61 7a 69 6e 65 20 6e 75 6d 62 65 72 0d 05 |agazine number..| 00001220 c8 3d 43 4d 50 20 23 26 30 38 20 5c 20 62 69 74 |.=CMP #&08 \ bit| 00001230 20 33 20 6f 66 20 6d 61 67 2e 20 6e 75 6d 62 65 | 3 of mag. numbe| 00001240 72 20 69 73 20 62 69 74 20 30 20 6f 66 20 70 61 |r is bit 0 of pa| 00001250 63 6b 65 74 20 6e 75 6d 62 65 72 0d 05 d2 24 52 |cket number...$R| 00001260 4f 4c 20 70 61 63 6b 65 74 20 5c 20 35 20 62 69 |OL packet \ 5 bi| 00001270 74 20 70 61 63 6b 65 74 20 6e 75 6d 62 65 72 0d |t packet number.| 00001280 05 dc 1e 80 20 23 26 30 37 20 5c 20 75 73 65 20 |.... #&07 \ use | 00001290 6f 6e 6c 79 20 62 69 74 73 20 30 2d 32 0d 05 e6 |only bits 0-2...| 000012a0 0c 4c 44 59 20 23 26 30 30 0d 05 f0 2d 53 54 41 |.LDY #&00...-STA| 000012b0 20 28 77 6f 72 6b 73 70 61 63 65 29 2c 59 20 5c | (workspace),Y \| 000012c0 20 73 74 6f 72 65 20 6d 61 67 61 7a 69 6e 65 20 | store magazine | 000012d0 6e 75 6d 62 65 72 0d 05 fa 2d 4c 44 41 20 70 61 |number...-LDA pa| 000012e0 63 6b 65 74 20 5c 20 68 65 61 64 65 72 20 70 61 |cket \ header pa| 000012f0 63 6b 65 74 20 6e 75 6d 62 65 72 20 69 73 20 7a |cket number is z| 00001300 65 72 6f 0d 06 04 25 42 4e 45 20 72 65 74 75 72 |ero...%BNE retur| 00001310 6e 20 5c 20 72 65 74 75 72 6e 20 69 66 20 6e 6f |n \ return if no| 00001320 74 20 68 65 61 64 65 72 0d 06 0e 0f 2e 72 65 61 |t header.....rea| 00001330 64 68 65 61 64 65 72 0d 06 18 12 49 4e 59 20 5c |dheader....INY \| 00001340 20 59 20 3d 20 31 2d 34 30 0d 06 22 24 4c 44 58 | Y = 1-40.."$LDX| 00001350 20 64 61 74 61 72 65 67 20 5c 20 72 65 61 64 20 | datareg \ read | 00001360 64 61 74 61 20 72 65 67 69 73 74 65 72 0d 06 2c |data register..,| 00001370 1e 4c 44 41 20 68 61 6d 74 61 62 6c 65 2c 58 20 |.LDA hamtable,X | 00001380 5c 20 64 65 2d 68 61 6d 20 69 74 0d 06 36 26 42 |\ de-ham it..6&B| 00001390 4d 49 20 72 65 74 75 72 6e 20 5c 20 73 74 6f 70 |MI return \ stop| 000013a0 20 6c 6f 61 64 69 6e 67 20 69 66 20 65 72 72 6f | loading if erro| 000013b0 72 0d 06 40 2c 53 54 41 20 28 77 6f 72 6b 73 70 |r..@,STA (worksp| 000013c0 61 63 65 29 2c 59 20 5c 20 73 74 6f 72 65 20 64 |ace),Y \ store d| 000013d0 65 2d 68 61 6d 6d 65 64 20 64 61 74 61 0d 06 4a |e-hammed data..J| 000013e0 35 43 50 59 20 23 26 30 38 20 5c 20 75 73 65 20 |5CPY #&08 \ use | 000013f0 59 20 3d 20 31 2d 38 20 66 6f 72 20 38 20 62 79 |Y = 1-8 for 8 by| 00001400 74 65 73 20 6f 66 20 68 61 6d 6d 65 64 20 64 61 |tes of hammed da| 00001410 74 61 0d 06 54 31 42 43 43 20 72 65 61 64 68 65 |ta..T1BCC readhe| 00001420 61 64 65 72 20 5c 20 63 6f 6e 74 69 6e 75 65 20 |ader \ continue | 00001430 72 65 61 64 69 6e 67 20 68 61 6d 6d 65 64 20 64 |reading hammed d| 00001440 61 74 61 0d 06 5e 0d 2e 72 65 61 64 6d 6f 72 65 |ata..^..readmore| 00001450 0d 06 68 07 49 4e 59 0d 06 72 30 4c 44 41 20 64 |..h.INY..r0LDA d| 00001460 61 74 61 72 65 67 20 5c 20 72 65 61 64 20 64 61 |atareg \ read da| 00001470 74 61 20 72 65 67 69 73 74 65 72 2c 20 6e 6f 74 |ta register, not| 00001480 20 68 61 6d 6d 65 64 0d 06 7c 17 84 41 20 23 26 | hammed..|..A #&| 00001490 38 30 20 5c 20 73 65 74 20 62 69 74 20 37 0d 06 |80 \ set bit 7..| 000014a0 86 27 53 54 41 20 28 77 6f 72 6b 73 70 61 63 65 |.'STA (workspace| 000014b0 29 2c 59 20 5c 20 73 74 6f 72 65 20 69 6e 20 62 |),Y \ store in b| 000014c0 75 66 66 65 72 0d 06 90 19 43 50 59 20 23 26 32 |uffer....CPY #&2| 000014d0 38 20 5c 20 64 65 63 69 6d 61 6c 20 34 30 0d 06 |8 \ decimal 40..| 000014e0 9a 23 42 4e 45 20 72 65 61 64 6d 6f 72 65 20 5c |.#BNE readmore \| 000014f0 20 67 6f 20 62 61 63 6b 20 66 6f 72 20 6d 6f 72 | go back for mor| 00001500 65 0d 06 a4 22 43 4c 43 20 5c 20 63 6c 65 61 72 |e..."CLC \ clear| 00001510 20 63 61 72 72 79 20 66 6f 72 20 61 64 64 69 74 | carry for addit| 00001520 69 6f 6e 0d 06 ae 11 4c 44 41 20 77 6f 72 6b 73 |ion....LDA works| 00001530 70 61 63 65 0d 06 b8 39 41 44 43 20 23 26 32 39 |pace...9ADC #&29| 00001540 20 5c 20 61 64 64 20 34 31 20 74 6f 20 70 6f 69 | \ add 41 to poi| 00001550 6e 74 20 74 6f 20 6e 65 78 74 20 70 61 72 74 20 |nt to next part | 00001560 6f 66 20 74 68 65 20 62 75 66 66 65 72 0d 06 c2 |of the buffer...| 00001570 11 53 54 41 20 77 6f 72 6b 73 70 61 63 65 0d 06 |.STA workspace..| 00001580 cc 13 4c 44 41 20 77 6f 72 6b 73 70 61 63 65 2b |..LDA workspace+| 00001590 31 0d 06 d6 0c 41 44 43 20 23 26 30 30 0d 06 e0 |1....ADC #&00...| 000015a0 13 53 54 41 20 77 6f 72 6b 73 70 61 63 65 2b 31 |.STA workspace+1| 000015b0 0d 06 ea 3c 43 4d 50 20 23 28 62 75 66 66 65 72 |...<CMP #(buffer| 000015c0 2b 26 33 33 30 30 29 20 81 20 32 35 36 20 5c 20 |+&3300) . 256 \ | 000015d0 69 73 20 74 68 65 72 65 20 72 6f 6f 6d 20 66 6f |is there room fo| 000015e0 72 20 6d 6f 72 65 20 64 61 74 61 3f 0d 06 f4 2d |r more data?...-| 000015f0 42 43 43 20 72 65 74 75 72 6e 20 5c 20 62 72 61 |BCC return \ bra| 00001600 6e 63 68 20 69 66 20 74 68 65 72 65 20 69 73 20 |nch if there is | 00001610 6d 6f 72 65 20 72 6f 6f 6d 0d 06 fe 0c 4c 44 41 |more room....LDA| 00001620 20 23 26 38 30 0d 07 08 26 53 54 41 20 67 72 61 | #&80...&STA gra| 00001630 62 66 6c 61 67 20 5c 20 6d 61 72 6b 20 62 75 66 |bflag \ mark buf| 00001640 66 65 72 20 61 73 20 66 75 6c 6c 0d 07 12 0b 2e |fer as full.....| 00001650 72 65 74 75 72 6e 0d 07 1c 28 52 54 53 20 5c 20 |return...(RTS \ | 00001660 72 65 74 75 72 6e 20 74 6f 20 6c 6f 6f 6b 20 61 |return to look a| 00001670 74 20 6e 65 78 74 20 54 54 58 20 72 6f 77 0d 07 |t next TTX row..| 00001680 26 0d 2e 6f 6c 64 69 72 71 32 76 0d 07 30 0c 45 |&..oldirq2v..0.E| 00001690 51 55 57 20 26 30 30 0d 07 3a 0d 2e 68 61 6d 74 |QUW &00..:..hamt| 000016a0 61 62 6c 65 0d 07 44 13 45 51 55 44 20 26 30 31 |able..D.EQUD &01| 000016b0 30 31 46 46 30 31 20 0d 07 4e 13 45 51 55 44 20 |01FF01 ..N.EQUD | 000016c0 26 46 46 30 31 30 30 46 46 20 0d 07 58 13 45 51 |&FF0100FF ..X.EQ| 000016d0 55 44 20 26 46 46 30 31 30 32 46 46 20 0d 07 62 |UD &FF0102FF ..b| 000016e0 12 45 51 55 44 20 26 30 37 46 46 46 46 30 41 0d |.EQUD &07FFFF0A.| 000016f0 07 6c 13 45 51 55 44 20 26 46 46 30 31 30 30 46 |.l.EQUD &FF0100F| 00001700 46 20 0d 07 76 13 45 51 55 44 20 26 30 30 46 46 |F ..v.EQUD &00FF| 00001710 30 30 30 30 20 0d 07 80 13 45 51 55 44 20 26 30 |0000 ....EQUD &0| 00001720 42 46 46 46 46 30 36 20 0d 07 8a 12 45 51 55 44 |BFFFF06 ....EQUD| 00001730 20 26 46 46 30 33 30 30 46 46 0d 07 94 13 45 51 | &FF0300FF....EQ| 00001740 55 44 20 26 46 46 30 31 30 43 46 46 20 0d 07 9e |UD &FF010CFF ...| 00001750 13 45 51 55 44 20 26 30 37 46 46 46 46 30 34 20 |.EQUD &07FFFF04 | 00001760 0d 07 a8 13 45 51 55 44 20 26 30 37 46 46 46 46 |....EQUD &07FFFF| 00001770 30 36 20 0d 07 b2 12 45 51 55 44 20 26 30 37 30 |06 ....EQUD &070| 00001780 37 30 37 46 46 0d 07 bc 13 45 51 55 44 20 26 30 |707FF....EQUD &0| 00001790 35 46 46 46 46 30 36 20 0d 07 c6 13 45 51 55 44 |5FFFF06 ....EQUD| 000017a0 20 26 46 46 30 44 30 30 46 46 20 0d 07 d0 13 45 | &FF0D00FF ....E| 000017b0 51 55 44 20 26 46 46 30 36 30 36 30 36 20 0d 07 |QUD &FF060606 ..| 000017c0 da 12 45 51 55 44 20 26 30 37 46 46 46 46 30 36 |..EQUD &07FFFF06| 000017d0 0d 07 e4 13 45 51 55 44 20 26 46 46 30 31 30 32 |....EQUD &FF0102| 000017e0 46 46 20 0d 07 ee 13 45 51 55 44 20 26 30 39 46 |FF ....EQUD &09F| 000017f0 46 46 46 30 34 20 0d 07 f8 13 45 51 55 44 20 26 |FFF04 ....EQUD &| 00001800 30 32 46 46 30 32 30 32 20 0d 08 02 12 45 51 55 |02FF0202 ....EQU| 00001810 44 20 26 46 46 30 33 30 32 46 46 0d 08 0c 13 45 |D &FF0302FF....E| 00001820 51 55 44 20 26 30 35 46 46 46 46 30 38 20 0d 08 |QUD &05FFFF08 ..| 00001830 16 13 45 51 55 44 20 26 46 46 30 33 30 30 46 46 |..EQUD &FF0300FF| 00001840 20 0d 08 20 13 45 51 55 44 20 26 46 46 30 33 30 | .. .EQUD &FF030| 00001850 32 46 46 20 0d 08 2a 12 45 51 55 44 20 26 30 33 |2FF ..*.EQUD &03| 00001860 30 33 46 46 30 33 0d 08 34 13 45 51 55 44 20 26 |03FF03..4.EQUD &| 00001870 30 35 46 46 46 46 30 34 20 0d 08 3e 13 45 51 55 |05FFFF04 ..>.EQU| 00001880 44 20 26 46 46 30 34 30 34 30 34 20 0d 08 48 13 |D &FF040404 ..H.| 00001890 45 51 55 44 20 26 46 46 30 46 30 32 46 46 20 0d |EQUD &FF0F02FF .| 000018a0 08 52 12 45 51 55 44 20 26 30 37 46 46 46 46 30 |.R.EQUD &07FFFF0| 000018b0 34 0d 08 5c 13 45 51 55 44 20 26 30 35 30 35 30 |4..\.EQUD &05050| 000018c0 35 46 46 20 0d 08 66 13 45 51 55 44 20 26 30 35 |5FF ..f.EQUD &05| 000018d0 46 46 46 46 30 34 20 0d 08 70 13 45 51 55 44 20 |FFFF04 ..p.EQUD | 000018e0 26 30 35 46 46 46 46 30 36 20 0d 08 7a 12 45 51 |&05FFFF06 ..z.EQ| 000018f0 55 44 20 26 46 46 30 33 30 45 46 46 0d 08 84 13 |UD &FF030EFF....| 00001900 45 51 55 44 20 26 46 46 30 31 30 43 46 46 20 0d |EQUD &FF010CFF .| 00001910 08 8e 13 45 51 55 44 20 26 30 39 46 46 46 46 30 |...EQUD &09FFFF0| 00001920 41 20 0d 08 98 13 45 51 55 44 20 26 30 42 46 46 |A ....EQUD &0BFF| 00001930 46 46 30 41 20 0d 08 a2 12 45 51 55 44 20 26 46 |FF0A ....EQUD &F| 00001940 46 30 41 30 41 30 41 0d 08 ac 13 45 51 55 44 20 |F0A0A0A....EQUD | 00001950 26 30 42 46 46 46 46 30 38 20 0d 08 b6 13 45 51 |&0BFFFF08 ....EQ| 00001960 55 44 20 26 46 46 30 44 30 30 46 46 20 0d 08 c0 |UD &FF0D00FF ...| 00001970 13 45 51 55 44 20 26 30 42 30 42 30 42 46 46 20 |.EQUD &0B0B0BFF | 00001980 0d 08 ca 12 45 51 55 44 20 26 30 42 46 46 46 46 |....EQUD &0BFFFF| 00001990 30 41 0d 08 d4 13 45 51 55 44 20 26 30 43 46 46 |0A....EQUD &0CFF| 000019a0 30 43 30 43 20 0d 08 de 13 45 51 55 44 20 26 46 |0C0C ....EQUD &F| 000019b0 46 30 44 30 43 46 46 20 0d 08 e8 13 45 51 55 44 |F0D0CFF ....EQUD| 000019c0 20 26 46 46 30 46 30 43 46 46 20 0d 08 f2 12 45 | &FF0F0CFF ....E| 000019d0 51 55 44 20 26 30 37 46 46 46 46 30 41 0d 08 fc |QUD &07FFFF0A...| 000019e0 13 45 51 55 44 20 26 46 46 30 44 30 43 46 46 20 |.EQUD &FF0D0CFF | 000019f0 0d 09 06 13 45 51 55 44 20 26 30 44 30 44 46 46 |....EQUD &0D0DFF| 00001a00 30 44 20 0d 09 10 13 45 51 55 44 20 26 30 42 46 |0D ....EQUD &0BF| 00001a10 46 46 46 30 36 20 0d 09 1a 12 45 51 55 44 20 26 |FFF06 ....EQUD &| 00001a20 46 46 30 44 30 45 46 46 0d 09 24 13 45 51 55 44 |FF0D0EFF..$.EQUD| 00001a30 20 26 30 39 46 46 46 46 30 38 20 0d 09 2e 13 45 | &09FFFF08 ....E| 00001a40 51 55 44 20 26 30 39 30 39 30 39 46 46 20 0d 09 |QUD &090909FF ..| 00001a50 38 13 45 51 55 44 20 26 46 46 30 46 30 32 46 46 |8.EQUD &FF0F02FF| 00001a60 20 0d 09 42 12 45 51 55 44 20 26 30 39 46 46 46 | ..B.EQUD &09FFF| 00001a70 46 30 41 0d 09 4c 13 45 51 55 44 20 26 46 46 30 |F0A..L.EQUD &FF0| 00001a80 38 30 38 30 38 20 0d 09 56 13 45 51 55 44 20 26 |80808 ..V.EQUD &| 00001a90 30 39 46 46 46 46 30 38 20 0d 09 60 13 45 51 55 |09FFFF08 ..`.EQU| 00001aa0 44 20 26 30 42 46 46 46 46 30 38 20 0d 09 6a 12 |D &0BFFFF08 ..j.| 00001ab0 45 51 55 44 20 26 46 46 30 33 30 45 46 46 0d 09 |EQUD &FF030EFF..| 00001ac0 74 13 45 51 55 44 20 26 46 46 30 46 30 43 46 46 |t.EQUD &FF0F0CFF| 00001ad0 20 0d 09 7e 13 45 51 55 44 20 26 30 39 46 46 46 | ..~.EQUD &09FFF| 00001ae0 46 30 34 20 0d 09 88 13 45 51 55 44 20 26 30 46 |F04 ....EQUD &0F| 00001af0 30 46 46 46 30 46 20 0d 09 92 12 45 51 55 44 20 |0FFF0F ....EQUD | 00001b00 26 46 46 30 46 30 45 46 46 0d 09 9c 13 45 51 55 |&FF0F0EFF....EQU| 00001b10 44 20 26 30 35 46 46 46 46 30 38 20 0d 09 a6 13 |D &05FFFF08 ....| 00001b20 45 51 55 44 20 26 46 46 30 44 30 45 46 46 20 0d |EQUD &FF0D0EFF .| 00001b30 09 b0 13 45 51 55 44 20 26 46 46 30 46 30 45 46 |...EQUD &FF0F0EF| 00001b40 46 20 0d 09 ba 12 45 51 55 44 20 26 30 45 46 46 |F ....EQUD &0EFF| 00001b50 30 45 30 45 0d 09 c4 05 5d 0d 09 ce 05 ed 0d 09 |0E0E....].......| 00001b60 d8 05 e1 0d ff |.....| 00001b65