Home » CEEFAX disks » telesoftware14.adl » 01-04-89/T\TTX04

01-04-89/T\TTX04

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: 01-04-89/T\TTX04
Read OK:
File size: 5F89 bytes
Load address: 0000
Exec address: FFFFFFFF
File contents
Interfacing with the Acorn Teletext Adaptor  - by -  Gordon Horsington
----------------------------------------------------------------------

Module 4. Searching for keywords
--------------------------------

The frame grabber used to illustrate Module 3 can be modified to search
for keywords in the Teletext data. There are surprisingly few
modifications needed to produce a simple keyword search for the serial
magazines broadcast on BBC 1, BBC 2 and Channel 4.

Neither CEEFAX nor ORACLE broadcast a keyword directory which can be used
to identify the pages associated with with a particular word and so the
best that can be done is to search for ASCII strings in the Teletext data
downloaded from the adaptor.

Essentially all that a keyword search needs to do is to load every page,
search every packet associated with the current page, and print every page
which contains the required ASCII string. The demonstration program
KEYWORD uses this serial magazine keyword search technique but it also
works with the parallel magazines broadcast on the ITV network, although
it does not search parallel magazines very effectively.

The reason why this simple idea does not work very well with parallel
magazines is because it only loads and searches one page at a time. The
ITV network currently broadcast up to four magazines in parallel and so up
to three magazines will be ignored when a page is being loaded. The four
magazines currently used by the ITV network are numbered 1, 2, 7 and 8.
The program KEYWORD ignores magazine 8, which only contains subtitles, and
can be made to ignore the ITV magazine 7, which only contains encrypted
Air Call pages, but even then magazines 1 and 2 are still broadcast in
parallel and so at least two pages need to be searched at the same time if
the program is to work efficiently. Ideally the program should be capable
of loading and searching up to 8 pages at the same time to cope with the
worst possible case when all the available magazines are used in parallel.
Modifying the program to cope with 8 buffers is not as difficult as it
sounds and this has been left for you to do as an exercise.

I have used a maximum keyword length of 8 characters in the demonstration
program. I did this because very long text strings could take too long to
find and the program could crash. Eight characters seems to be sufficient
to identify most ASCII strings. I have stored the keyword in zero page to
make the program run as fast as possible. Every byte of the keyword has
bit 7 set (line 160) because bit seven of the every data byte is set ready
for display after downloading (line 2260). The required word might be in
lower case, upper case, or perhaps have just a capital first letter. To
ensure the word is recognised whichever form it takes, each byte is
converted to a capital before comparison (line 3620). The required keyword
should, therefore, be entered in upper case.

In the previous module, the program GRABBER loaded only the header packets
into the computer's memory until the header of the required page was
found. It then loaded packets 1 to 23 and displayed the page when the
terminating header was found. As long as the page buffer was clear when
the program started, and was cleared after printing the page, GRABBER
could simply print out the entire contents of the buffer because it only
ever loaded packets 1 to 23 of the required page. The keyword search
program associated with this module does not have enough time to clear the
buffer after searching every page and so it flags every packet as unused
at the beginning of every page search and flags every packet it downloads
as used when it is received. This is done using the array markers (line
50). The number &80 is used to mark a packet as unused and the packet
number is stored to mark the packet as used.

The flag byte grabflag is used again in the program KEYWORD. In this
program it can have one of 4 values. &00 means that it is searching for
any start-of-page header, ie. not a subtitle and not page xFF. &40 means
that it has found a start-of-page header and it is loading that page into
the buffer but it has yet not identified the keyword. &80 means that it is
still loading the page into the buffer but the keyword has been found. &C0
means that the keyword has been found and an end-of-page header has been
identified so that the required page has been loaded into the buffer. When
grabflag stores &C0 the page can be printed and the search will continue
for another page with the same keyword. The program will continue to
search for the same keyword until the Escape key is pressed. If you
modify the program to search parallel magazines more effectively you will
need the equivalent of one grabflag for each buffer.

When a page has been displayed on the screen the page number is taken from
the ASCII text in the page header and displayed in the top left hand
corner of the frame. This is a short cut method of displaying the page
number and if you want to modify the program to include the sub-page
number you will have to extract this number from the header data using the
information provided in module 2.

If you decide to take up the challenge of designing a frame grabber you
might like to include some or all of the following features:


1) Page selection by page number and sub-page number.

2) Page selection by keyword.

3) Correct display of subtitles.

4) Detect and display newsflashes.

5) Use the alarm clock on BBC1 page 196.

6) Hold and release page.

7) Switch between reveal and conceal hidden characters.

8) Page dump to printer.

9) Save page in user memory, second processor or on disc, and re-load page
   when required.


If you can create a program with these and any other useful features that
improve on the facilities offered by the ATS frame grabber or the
Edinburgh Software Products Keyword Frame Grabber (broadcast by BBC
Telesoftware) then you might like to consider sending a copy of your
program to BBC Telesoftware so that the best program can be transmitted.


   10 REM> KEYWORD
   20 MODE7
   30 DIM mcode &1000 :REM: space for machine code
   40 DIM buffer &400 :REM: page grabber buffer
   50 DIM markers &20 :REM: packet markers
   60 $buffer=STRING$(40," ") :REM: clear the header
   70 PROCmcode :REM: assemble machine code
   80 INPUT"TV channel (1-4) = "answer$
   90 channel?0=EVAL("&"+LEFT$(answer$,1))+&1B
  100 IF channel?0 < &1C THEN channel?0 = &1C
  110 IF channel?0 > &1F THEN channel?0 = &1F
  120 INPUT"Search keyword (UPPER CASE) = "answer$
  130 answer$=LEFT$(answer$,8)
  140 len=LEN(answer$)-1
  150 FOR pass=0 TO len
  160 searchtext?pass = (ASC(MID$(answer$,pass+1,1)) OR &80)
  170 NEXT
  180 searchtext?(len+1)=0
  190 wordlength?0=len
  200 VDU12,23,1,0;0;0;0;
  210 CALL mcode
  220 VDU30,23,1,1;0;0;0;
  230 END
  240 DEFPROCmcode
  250 packet=&70 :REM: row number of current packet
  260 magazine=&71 :REM: magazine number of current page
  270 grabflag=&72 :REM: 0=searching, &40=loading, &80=found,
      &C0=loaded & found
  280 usermag=&73 :REM: last magazine number
  290 userpage=&74 :REM: last page number, low byte + high byte
  300 channel=&76 :REM: TV channel
  310 workspace=&77 :REM: 2 byte workspace
  320 destination=&79 :REM: another 2 byte workspace
  330 wordlength=&7B :REM: length of keyword
  340 tempy=&7C :REM: temporary store for Y register
  350 searchfor=&7D :REM: temporary store for character in search string
  360 searchtext=&80 :REM: store for keyword
  370 irq2v=&206 :REM: irq2 vector
  380 ttxcontrol=&FC10 :REM: TTX control register, write only
  390 ttxstatus=&FC10 :REM: TTX status register, read only
  400 rowreg=&FC11 :REM: TTX row register, write only
  410 datareg=&FC12 :REM: TTX data register, read & write
  420 statclr=&FC13 :REM: TTX clear status register, read & write
  430 oswrch=&FFEE
  440 osbyte=&FFF4
  450 FOR pass=0 TO 2 STEP 2
  460 P%=mcode
  470 [       OPT pass
  480         JSR clearmark \ set up for searching
  490         LDX irq2v     \ load secondary interrupt vector
  500         LDY irq2v+1
  510         STX oldirq2v  \ save secondary interrupt vector
  520         STY oldirq2v+1
  530         LDX #interrupt MOD 256 \ install new interrupt routine
  540         LDY #interrupt DIV 256
  550         SEI           \ disable interrupts when altering vectors
  560         STX irq2v
  570         STY irq2v+1
  580         CLI           \ re-enable interrupts
  590         LDA channel   \ load (channel number + #&1C)
  600         STA ttxcontrol \ enable TTX
  610 .mainloop
  620         LDA grabflag  \ test to see if page grabbed
  630         CMP #&C0      \ &C0 = page grabbed and ready to print
  640         BNE continue  \ branch if not ready
  650         JSR checkdouble \ look for double height lines
  660         JSR transfer  \ transfer data to screen
  670         JSR clearmark \ start searching again
  680 .continue
  690         LDX #&00      \ screen row
  700         LDY #&08      \ screen column
  710         JSR vdu31     \ VDU 31,8,0
  720 .headloop
  730         LDA buffer,Y
  740         JSR oswrch    \ write header on screen
  750         INY
  760         CPY #&28      \ decimal 40
  770         BCC headloop
  780         BIT &FF       \ poll escape flag
  790         BPL mainloop  \ loop if escape not pressed
  800         LDA #&7E      \ decimal 126
  810         JSR osbyte    \ acknowledge escape
  820         LDA #&00
  830         STA ttxcontrol \ disable TTX
  840         LDX oldirq2v  \ load original vector
  850         LDY oldirq2v+1
  860         SEI           \ disable interrupts when altering vectors
  870         STX irq2v     \ restore original vector
  880         STY irq2v+1
  890         CLI           \ re-enable interrupts
  900         RTS           \ return to BASIC
  910 .interrupt
  920         BIT ttxstatus \ poll TTX hardware
  930         BMI ttxinter  \ branch if TTX interrupt
  940         JMP (oldirq2v) \ not TTX interrupt
  950 .ttxinter
  960         LDA &FC       \ interrupt accumulator save register
  970         PHA           \ push interrupt accumulator save register
  980         TXA
  990         PHA           \ push X
 1000         TYA
 1010         PHA           \ push Y
 1020         LDA grabflag  \ is a page waiting to be displayed?
 1030         CMP #&C0      \ &C0 = page grabbed
 1040         BEQ clearstatus \ clear status and RTI if page grabbed
 1050         CLD           \ clear decimal flag
 1060 .startrow
 1070         LDY #&00      \ start with row 0
 1080 .readttxt
 1090         STY rowreg    \ try rows 0 to 15
 1100         LDA datareg   \ load framing code (#&27)
 1110         BEQ emptyrow  \ if zero try next row
 1120         TYA
 1130         PHA           \ save row number
 1140         JSR readpacket
 1150         PLA
 1160         TAY           \ restore row number
 1170 .emptyrow
 1180         INY           \ increment row number
 1190         CPY #&10      \ try rows 0 - 15
 1200         BNE readttxt
 1210 .clearstatus
 1220         LDA #&00
 1230         LDY #&0F      \ clear 16 rows in adaptor
 1240 .clearloop
 1250         STY rowreg
 1260         STA datareg
 1270         DEY
 1280         BPL clearloop
 1290         STA statclr   \ clear status flags before returning
 1300         PLA
 1310         TAY           \ restore Y
 1320         PLA
 1330         TAX           \ restore X
 1340         PLA
 1350         STA &FC       \ restore interrupt accumulator save register
 1360         RTI           \ return from interrupt
 1370 .readpacket
 1380         LDY datareg   \ read magazine number
 1390         LDA hamtable,Y \ de-ham it
 1400         BMI cleargrab \ stop loading if error
 1410         STA magazine  \ save magazine number
 1420         LDY datareg   \ read packet number
 1430         LDA hamtable,Y \ de-ham it
 1440         BMI cleargrab \ stop loading if error
 1450         STA packet    \ save packet number
 1460         LDA magazine  \ load magazine number
 1470         CMP #&08      \ bit 3 of mag. number is bit 0 of packet
                            \ number
 1480         ROL packet    \ 5 bit packet number
 1490         AND #&07      \ use only bits 0-2
 1500         STA magazine  \ 3 bit magazine number
 1510         LDA packet
 1520         CMP #&18      \ ignore TSDP, Datacast, etc.
 1530         BCS exit      \ ie. use Level 1 Teletext only
 1540         PHA           \ push packet number
 1550         ASL A         \ packet number * 2
 1560         TAY
 1570         LDA bufftable,Y \ load buffer address, lsb
 1580         STA workspace \ store in zero page
 1590         LDA bufftable+1,Y \ load buffer address, msb
 1600         STA workspace+1 \ store in zero page
 1610         PLA           \ pull packet number
 1620         CMP #&00      \ is it a header?
 1630         BNE notheader
 1640         TAX           \ init index for hammed data
 1650 .readheader
 1660         LDY datareg   \ read data register
 1670         LDA hamtable,Y \ de-ham it
 1680         BMI cleargrab \ stop loading if error
 1690         STA buffer,X  \ store de-hammed data
 1700         INX           \ increment index
 1710         CPX #&08      \ use X = 0-7
 1720         BCC readheader \ continue reading hammed data
 1730         LDA grabflag  \ are we loading or searching?
 1740         BEQ checkstart \ branch if searching
 1750         LDA magazine  \ we must be loading a page
 1760         CMP usermag   \ is it the magazine we want?
 1770         BNE exit      \ branch if not the one we want
 1780         LDA buffer    \ low byte of page number
 1790         CMP userpage  \ is this the same as the one we are loading?
 1800         BNE endfound  \ end of page when different
 1810         LDA buffer+1
 1820         CMP userpage+1 \ is this the same as the one we are loading?
 1830         BEQ exit      \ not end of page if the same
 1840 .endfound
 1850         LDA grabflag  \ grabflag = either #&40 or #&80
 1860         ORA #&40      \ grabflag = #&C0 if keyword found
 1870         STA grabflag  \ update grabflag
 1880         BMI exit      \ branch if grabflag = #&C0
 1890 .cleargrab
 1900         JSR clearmark \ start searching again
 1910 .exit
 1920         RTS
 1930 .checkstart
 1940         LDA buffer+5  \ check for subtitle
 1950         AND #&08      \ check bit 3
 1960         BNE display   \ don't load subtitle
 1970         LDA buffer    \ low nybble of current page
 1980         CMP userpage  \ are we loading it?
 1990         BNE loadit    \ if not then load it
 2000         LDA buffer+1  \ high nybble of current page
 2010         CMP userpage+1 \ are we loading it?
 2020         BEQ display   \ if loading display header, if not load page
 2030 .loadit
 2040         LDA #&40      \ page loading flag
 2050         STA grabflag  \ load this page
 2060         LDA magazine  \ current magazine number
 2070         STA usermag   \ load this magazine
 2080         LDA buffer    \ current page, low nybble
 2090         STA userpage  \ load this page
 2100         LDA buffer+1  \ current page, high nybble
 2110         STA userpage+1 \ load this page
 2120 .display
 2130 \       LSR buffer+6  \ check for suppress header
 2140 \       BCS exit      \ don't bother with suppressed headers
 2150         LDY #&08      \ header data starts at byte 8
 2160         BNE readmore  \ go to read the header
 2170 .notheader
 2180         LDA grabflag  \ is a page loading?
 2190         BEQ return    \ return if page not loading
 2200         LDA magazine  \ is the magazine number the one we want?
 2210         CMP usermag   \ compare with the one we are loading
 2220         BNE return    \ return if different magazine
 2230         LDY #&00      \ read bytes 0 - 39
 2240 .readmore
 2250         LDA datareg   \ read data register
 2260         ORA #&80      \ set bit 7 for display
 2270         STA (workspace),Y \ store in buffer
 2280         INY           \ increment index
 2290         CPY #&28      \ decimal 40
 2300         BNE readmore  \ more data in this packet
 2310         LDA packet    \ load current packet number
 2320         BEQ return    \ return if header
 2330         TAX           \ A is greater than 0 and less than 24
 2340         STA markers,X \ mark this as a valid packet
 2350         BIT grabflag  \ have we found the keyword yet?
 2360         BMI return    \ return if word found
 2370         JSR wordsearch
 2380 .return
 2390         RTS
 2400 .checkdouble
 2410         LDX #&01      \ screen row numbers 1-23
 2420 .nextcolumn
 2430         LDA markers,X
 2440         BMI carryset
 2450         LDY #&00      \ screen column numbers 0-40
 2460         JSR setup     \ set up workspace for indirect addressing
 2470 .singleloop
 2480         LDA (workspace),Y
 2490         JSR conceal   \ check for concealed display
 2500         CMP #&8D      \ TTX double height character
 2510         BEQ doubleheight
 2520         INY
 2530         CPY #&28      \ decimal 40
 2540         BCC singleloop
 2550 .carryset
 2560         INX
 2570         CPX #&17      \ decimal 23
 2580         BCC nextcolumn
 2590         RTS
 2600 .doubleheight
 2610         LDY #&00
 2620         TXA
 2630         PHA           \ store row number
 2640         INX
 2650         TXA
 2660         STA markers,X
 2670         ASL A         \ (row number + 1) * 2
 2680         TAX
 2690         LDA bufftable,X
 2700         STA destination
 2710         INX
 2720         LDA bufftable,X
 2730         STA destination+1
 2740         PLA
 2750         TAX           \ restore row number
 2760 .doubleloop
 2770         LDA (workspace),Y
 2780         JSR conceal   \ check for concealed display
 2790         STA (destination),Y
 2800         INY
 2810         CPY #&28      \ decimal 40
 2820         BCC doubleloop
 2830         INX
 2840         CPX #&17      \ decimal 23
 2850         BCC carryset
 2860         RTS
 2870 .conceal
 2880         CMP #&98      \ TTX conceal display character
 2890         BNE goback
 2900         LDA #ASC(" ") \ substitute with a space
 2910         STA (workspace),Y
 2920 .goback
 2930         RTS
 2940 .setup
 2950         TXA
 2960         PHA           \ store row number
 2970         ASL A         \ (row number) * 2
 2980         TAX
 2990         LDA bufftable,X
 3000         STA workspace
 3010         INX
 3020         LDA bufftable,X
 3030         STA workspace+1
 3040         PLA
 3050         TAX           \ restore row number
 3060         RTS
 3070 .transfer
 3080         LDA #&00
 3090         TAX
 3100         LDY #&02
 3110         JSR vdu31     \ VDU 31,2,0
 3120         LDA #ASC("P")
 3130         JSR oswrch    \ start printing page number
 3140         LDX #&0F      \ decimal 15
 3150 .numberloop
 3160         LDA buffer,X  \ cheat by getting page number from header
 3170         JSR oswrch
 3180         INX
 3190         CPX #&12
 3200         BCC numberloop \ print 3 page bytes from header
 3210         LDX #&01      \ screen rows 1-23
 3220 .nextline
 3230         LDY #&00      \ columns 0-39
 3240         JSR vdu31     \ VDU 31,0,1-23
 3250         LDA markers,X \ look for valid packet
 3260         BPL markfound \ display valid packets only
 3270         LDA #blanks MOD 256 \ else display 40 spaces
 3280         STA workspace
 3290         LDA #blanks DIV 256
 3300         STA workspace+1
 3310         JMP writescreen
 3320 .markfound
 3330         JSR setup     \ set up workspace for indirect addressing
 3340 .writescreen
 3350         LDA (workspace),Y \ load data from buffer
 3360         JSR oswrch    \ write to screen
 3370         INY
 3380         CPY #&28      \ decimal 40
 3390         BCC writescreen
 3400         INX
 3410         CPX #&18      \ decimal 24
 3420         BCC nextline  \ last packet number = 23
 3430         RTS
 3440 .vdu31
 3450         LDA #&1F      \ decimal 31
 3460         JSR oswrch
 3470         TYA
 3480         JSR oswrch
 3490         TXA
 3500         JMP oswrch    \ and return
 3510 .wordsearch
 3520         LDX #&00      \ index for search string
 3530         LDY #&00      \ index for packet
 3540         STY tempy     \ temporary store for Y
 3550 .wordloop
 3560         LDA searchtext,X
 3570         BEQ found
 3580         PHA           \ save character from keyword
 3590         LDA (workspace),Y
 3600         CMP #&E1      \ lower case 'a'
 3610         BCC uppercase \ branch if upper case
 3620         AND #&DF      \ force lower to upper case
 3630 .uppercase
 3640         STA searchfor \ store character from TTX
 3650         PLA           \ restore character from keyword
 3660         CMP searchfor
 3670         BNE notfound  \ branch if keyword does not match
 3680         INX           \ if matched look at next character
 3690         INY
 3700         CPY #&29      \ decimal 41
 3710         BCC wordloop
 3720 .notfound
 3730         LDX #&00      \ reset index on keyword
 3740         INC tempy     \ increment index on TTX
 3750         LDY tempy
 3760         CPY #&29      \ decimal 41
 3770         BCC wordloop  \ branch if more data to test
 3780         RTS
 3790 .found
 3800         LDA #&80      \ flag keyword found
 3810         STA grabflag  \ keyword found
 3820         RTS
 3830 .clearmark
 3840         LDA #&80
 3850         LDX #&17      \ decimal 23
 3860 .loopmark
 3870         STA markers,X
 3880         DEX
 3890         BNE loopmark
 3900         STX grabflag  \ grabflag = searching
 3910         LDA #&0F      \ end of page marker
 3920         STA userpage
 3930         STA userpage+1
 3940         RTS
 3950 .oldirq2v
 3960         EQUW &00
 3970 .hamtable
 3980         EQUD &0101FF01
 3990         EQUD &FF0100FF
 4000         EQUD &FF0102FF
 4010         EQUD &07FFFF0A
 4020         EQUD &FF0100FF
 4030         EQUD &00FF0000
 4040         EQUD &0BFFFF06
 4050         EQUD &FF0300FF
 4060         EQUD &FF010CFF
 4070         EQUD &07FFFF04
 4080         EQUD &07FFFF06
 4090         EQUD &070707FF
 4100         EQUD &05FFFF06
 4110         EQUD &FF0D00FF
 4120         EQUD &FF060606
 4130         EQUD &07FFFF06
 4140         EQUD &FF0102FF
 4150         EQUD &09FFFF04
 4160         EQUD &02FF0202
 4170         EQUD &FF0302FF
 4180         EQUD &05FFFF08
 4190         EQUD &FF0300FF
 4200         EQUD &FF0302FF
 4210         EQUD &0303FF03
 4220         EQUD &05FFFF04
 4230         EQUD &FF040404
 4240         EQUD &FF0F02FF
 4250         EQUD &07FFFF04
 4260         EQUD &050505FF
 4270         EQUD &05FFFF04
 4280         EQUD &05FFFF06
 4290         EQUD &FF030EFF
 4300         EQUD &FF010CFF
 4310         EQUD &09FFFF0A
 4320         EQUD &0BFFFF0A
 4330         EQUD &FF0A0A0A
 4340         EQUD &0BFFFF08
 4350         EQUD &FF0D00FF
 4360         EQUD &0B0B0BFF
 4370         EQUD &0BFFFF0A
 4380         EQUD &0CFF0C0C
 4390         EQUD &FF0D0CFF
 4400         EQUD &FF0F0CFF
 4410         EQUD &07FFFF0A
 4420         EQUD &FF0D0CFF
 4430         EQUD &0D0DFF0D
 4440         EQUD &0BFFFF06
 4450         EQUD &FF0D0EFF
 4460         EQUD &09FFFF08
 4470         EQUD &090909FF
 4480         EQUD &FF0F02FF
 4490         EQUD &09FFFF0A
 4500         EQUD &FF080808
 4510         EQUD &09FFFF08
 4520         EQUD &0BFFFF08
 4530         EQUD &FF030EFF
 4540         EQUD &FF0F0CFF
 4550         EQUD &09FFFF04
 4560         EQUD &0F0FFF0F
 4570         EQUD &FF0F0EFF
 4580         EQUD &05FFFF08
 4590         EQUD &FF0D0EFF
 4600         EQUD &FF0F0EFF
 4610         EQUD &0EFF0E0E
 4620 .bufftable
 4630         EQUW buffer
 4640         EQUW buffer+40
 4650         EQUW buffer+(2*40)
 4660         EQUW buffer+(3*40)
 4670         EQUW buffer+(4*40)
 4680         EQUW buffer+(5*40)
 4690         EQUW buffer+(6*40)
 4700         EQUW buffer+(7*40)
 4710         EQUW buffer+(8*40)
 4720         EQUW buffer+(9*40)
 4730         EQUW buffer+(10*40)
 4740         EQUW buffer+(11*40)
 4750         EQUW buffer+(12*40)
 4760         EQUW buffer+(13*40)
 4770         EQUW buffer+(14*40)
 4780         EQUW buffer+(15*40)
 4790         EQUW buffer+(16*40)
 4800         EQUW buffer+(17*40)
 4810         EQUW buffer+(18*40)
 4820         EQUW buffer+(19*40)
 4830         EQUW buffer+(20*40)
 4840         EQUW buffer+(21*40)
 4850         EQUW buffer+(22*40)
 4860         EQUW buffer+(23*40)
 4870         EQUW buffer+(24*40)
 4880 .blanks
 4890         EQUS STRING$(40," ")
 4900 ]
 4910 NEXT
 4920 ENDPROC
00000000  49 6e 74 65 72 66 61 63  69 6e 67 20 77 69 74 68  |Interfacing with|
00000010  20 74 68 65 20 41 63 6f  72 6e 20 54 65 6c 65 74  | the Acorn Telet|
00000020  65 78 74 20 41 64 61 70  74 6f 72 20 20 2d 20 62  |ext Adaptor  - b|
00000030  79 20 2d 20 20 47 6f 72  64 6f 6e 20 48 6f 72 73  |y -  Gordon Hors|
00000040  69 6e 67 74 6f 6e 0d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |ington.---------|
00000050  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00000080  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 0d 0d 4d  |-------------..M|
00000090  6f 64 75 6c 65 20 34 2e  20 53 65 61 72 63 68 69  |odule 4. Searchi|
000000a0  6e 67 20 66 6f 72 20 6b  65 79 77 6f 72 64 73 0d  |ng for keywords.|
000000b0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000000d0  0d 0d 54 68 65 20 66 72  61 6d 65 20 67 72 61 62  |..The frame grab|
000000e0  62 65 72 20 75 73 65 64  20 74 6f 20 69 6c 6c 75  |ber used to illu|
000000f0  73 74 72 61 74 65 20 4d  6f 64 75 6c 65 20 33 20  |strate Module 3 |
00000100  63 61 6e 20 62 65 20 6d  6f 64 69 66 69 65 64 20  |can be modified |
00000110  74 6f 20 73 65 61 72 63  68 0d 66 6f 72 20 6b 65  |to search.for ke|
00000120  79 77 6f 72 64 73 20 69  6e 20 74 68 65 20 54 65  |ywords in the Te|
00000130  6c 65 74 65 78 74 20 64  61 74 61 2e 20 54 68 65  |letext data. The|
00000140  72 65 20 61 72 65 20 73  75 72 70 72 69 73 69 6e  |re are surprisin|
00000150  67 6c 79 20 66 65 77 0d  6d 6f 64 69 66 69 63 61  |gly few.modifica|
00000160  74 69 6f 6e 73 20 6e 65  65 64 65 64 20 74 6f 20  |tions needed to |
00000170  70 72 6f 64 75 63 65 20  61 20 73 69 6d 70 6c 65  |produce a simple|
00000180  20 6b 65 79 77 6f 72 64  20 73 65 61 72 63 68 20  | keyword search |
00000190  66 6f 72 20 74 68 65 20  73 65 72 69 61 6c 0d 6d  |for the serial.m|
000001a0  61 67 61 7a 69 6e 65 73  20 62 72 6f 61 64 63 61  |agazines broadca|
000001b0  73 74 20 6f 6e 20 42 42  43 20 31 2c 20 42 42 43  |st on BBC 1, BBC|
000001c0  20 32 20 61 6e 64 20 43  68 61 6e 6e 65 6c 20 34  | 2 and Channel 4|
000001d0  2e 0d 0d 4e 65 69 74 68  65 72 20 43 45 45 46 41  |...Neither CEEFA|
000001e0  58 20 6e 6f 72 20 4f 52  41 43 4c 45 20 62 72 6f  |X nor ORACLE bro|
000001f0  61 64 63 61 73 74 20 61  20 6b 65 79 77 6f 72 64  |adcast a keyword|
00000200  20 64 69 72 65 63 74 6f  72 79 20 77 68 69 63 68  | directory which|
00000210  20 63 61 6e 20 62 65 20  75 73 65 64 0d 74 6f 20  | can be used.to |
00000220  69 64 65 6e 74 69 66 79  20 74 68 65 20 70 61 67  |identify the pag|
00000230  65 73 20 61 73 73 6f 63  69 61 74 65 64 20 77 69  |es associated wi|
00000240  74 68 20 77 69 74 68 20  61 20 70 61 72 74 69 63  |th with a partic|
00000250  75 6c 61 72 20 77 6f 72  64 20 61 6e 64 20 73 6f  |ular word and so|
00000260  20 74 68 65 0d 62 65 73  74 20 74 68 61 74 20 63  | the.best that c|
00000270  61 6e 20 62 65 20 64 6f  6e 65 20 69 73 20 74 6f  |an be done is to|
00000280  20 73 65 61 72 63 68 20  66 6f 72 20 41 53 43 49  | search for ASCI|
00000290  49 20 73 74 72 69 6e 67  73 20 69 6e 20 74 68 65  |I strings in the|
000002a0  20 54 65 6c 65 74 65 78  74 20 64 61 74 61 0d 64  | Teletext data.d|
000002b0  6f 77 6e 6c 6f 61 64 65  64 20 66 72 6f 6d 20 74  |ownloaded from t|
000002c0  68 65 20 61 64 61 70 74  6f 72 2e 0d 0d 45 73 73  |he adaptor...Ess|
000002d0  65 6e 74 69 61 6c 6c 79  20 61 6c 6c 20 74 68 61  |entially all tha|
000002e0  74 20 61 20 6b 65 79 77  6f 72 64 20 73 65 61 72  |t a keyword sear|
000002f0  63 68 20 6e 65 65 64 73  20 74 6f 20 64 6f 20 69  |ch needs to do i|
00000300  73 20 74 6f 20 6c 6f 61  64 20 65 76 65 72 79 20  |s to load every |
00000310  70 61 67 65 2c 0d 73 65  61 72 63 68 20 65 76 65  |page,.search eve|
00000320  72 79 20 70 61 63 6b 65  74 20 61 73 73 6f 63 69  |ry packet associ|
00000330  61 74 65 64 20 77 69 74  68 20 74 68 65 20 63 75  |ated with the cu|
00000340  72 72 65 6e 74 20 70 61  67 65 2c 20 61 6e 64 20  |rrent page, and |
00000350  70 72 69 6e 74 20 65 76  65 72 79 20 70 61 67 65  |print every page|
00000360  0d 77 68 69 63 68 20 63  6f 6e 74 61 69 6e 73 20  |.which contains |
00000370  74 68 65 20 72 65 71 75  69 72 65 64 20 41 53 43  |the required ASC|
00000380  49 49 20 73 74 72 69 6e  67 2e 20 54 68 65 20 64  |II string. The d|
00000390  65 6d 6f 6e 73 74 72 61  74 69 6f 6e 20 70 72 6f  |emonstration pro|
000003a0  67 72 61 6d 0d 4b 45 59  57 4f 52 44 20 75 73 65  |gram.KEYWORD use|
000003b0  73 20 74 68 69 73 20 73  65 72 69 61 6c 20 6d 61  |s this serial ma|
000003c0  67 61 7a 69 6e 65 20 6b  65 79 77 6f 72 64 20 73  |gazine keyword s|
000003d0  65 61 72 63 68 20 74 65  63 68 6e 69 71 75 65 20  |earch technique |
000003e0  62 75 74 20 69 74 20 61  6c 73 6f 0d 77 6f 72 6b  |but it also.work|
000003f0  73 20 77 69 74 68 20 74  68 65 20 70 61 72 61 6c  |s with the paral|
00000400  6c 65 6c 20 6d 61 67 61  7a 69 6e 65 73 20 62 72  |lel magazines br|
00000410  6f 61 64 63 61 73 74 20  6f 6e 20 74 68 65 20 49  |oadcast on the I|
00000420  54 56 20 6e 65 74 77 6f  72 6b 2c 20 61 6c 74 68  |TV network, alth|
00000430  6f 75 67 68 0d 69 74 20  64 6f 65 73 20 6e 6f 74  |ough.it does not|
00000440  20 73 65 61 72 63 68 20  70 61 72 61 6c 6c 65 6c  | search parallel|
00000450  20 6d 61 67 61 7a 69 6e  65 73 20 76 65 72 79 20  | magazines very |
00000460  65 66 66 65 63 74 69 76  65 6c 79 2e 0d 0d 54 68  |effectively...Th|
00000470  65 20 72 65 61 73 6f 6e  20 77 68 79 20 74 68 69  |e reason why thi|
00000480  73 20 73 69 6d 70 6c 65  20 69 64 65 61 20 64 6f  |s simple idea do|
00000490  65 73 20 6e 6f 74 20 77  6f 72 6b 20 76 65 72 79  |es not work very|
000004a0  20 77 65 6c 6c 20 77 69  74 68 20 70 61 72 61 6c  | well with paral|
000004b0  6c 65 6c 0d 6d 61 67 61  7a 69 6e 65 73 20 69 73  |lel.magazines is|
000004c0  20 62 65 63 61 75 73 65  20 69 74 20 6f 6e 6c 79  | because it only|
000004d0  20 6c 6f 61 64 73 20 61  6e 64 20 73 65 61 72 63  | loads and searc|
000004e0  68 65 73 20 6f 6e 65 20  70 61 67 65 20 61 74 20  |hes one page at |
000004f0  61 20 74 69 6d 65 2e 20  54 68 65 0d 49 54 56 20  |a time. The.ITV |
00000500  6e 65 74 77 6f 72 6b 20  63 75 72 72 65 6e 74 6c  |network currentl|
00000510  79 20 62 72 6f 61 64 63  61 73 74 20 75 70 20 74  |y broadcast up t|
00000520  6f 20 66 6f 75 72 20 6d  61 67 61 7a 69 6e 65 73  |o four magazines|
00000530  20 69 6e 20 70 61 72 61  6c 6c 65 6c 20 61 6e 64  | in parallel and|
00000540  20 73 6f 20 75 70 0d 74  6f 20 74 68 72 65 65 20  | so up.to three |
00000550  6d 61 67 61 7a 69 6e 65  73 20 77 69 6c 6c 20 62  |magazines will b|
00000560  65 20 69 67 6e 6f 72 65  64 20 77 68 65 6e 20 61  |e ignored when a|
00000570  20 70 61 67 65 20 69 73  20 62 65 69 6e 67 20 6c  | page is being l|
00000580  6f 61 64 65 64 2e 20 54  68 65 20 66 6f 75 72 0d  |oaded. The four.|
00000590  6d 61 67 61 7a 69 6e 65  73 20 63 75 72 72 65 6e  |magazines curren|
000005a0  74 6c 79 20 75 73 65 64  20 62 79 20 74 68 65 20  |tly used by the |
000005b0  49 54 56 20 6e 65 74 77  6f 72 6b 20 61 72 65 20  |ITV network are |
000005c0  6e 75 6d 62 65 72 65 64  20 31 2c 20 32 2c 20 37  |numbered 1, 2, 7|
000005d0  20 61 6e 64 20 38 2e 0d  54 68 65 20 70 72 6f 67  | and 8..The prog|
000005e0  72 61 6d 20 4b 45 59 57  4f 52 44 20 69 67 6e 6f  |ram KEYWORD igno|
000005f0  72 65 73 20 6d 61 67 61  7a 69 6e 65 20 38 2c 20  |res magazine 8, |
00000600  77 68 69 63 68 20 6f 6e  6c 79 20 63 6f 6e 74 61  |which only conta|
00000610  69 6e 73 20 73 75 62 74  69 74 6c 65 73 2c 20 61  |ins subtitles, a|
00000620  6e 64 0d 63 61 6e 20 62  65 20 6d 61 64 65 20 74  |nd.can be made t|
00000630  6f 20 69 67 6e 6f 72 65  20 74 68 65 20 49 54 56  |o ignore the ITV|
00000640  20 6d 61 67 61 7a 69 6e  65 20 37 2c 20 77 68 69  | magazine 7, whi|
00000650  63 68 20 6f 6e 6c 79 20  63 6f 6e 74 61 69 6e 73  |ch only contains|
00000660  20 65 6e 63 72 79 70 74  65 64 0d 41 69 72 20 43  | encrypted.Air C|
00000670  61 6c 6c 20 70 61 67 65  73 2c 20 62 75 74 20 65  |all pages, but e|
00000680  76 65 6e 20 74 68 65 6e  20 6d 61 67 61 7a 69 6e  |ven then magazin|
00000690  65 73 20 31 20 61 6e 64  20 32 20 61 72 65 20 73  |es 1 and 2 are s|
000006a0  74 69 6c 6c 20 62 72 6f  61 64 63 61 73 74 20 69  |till broadcast i|
000006b0  6e 0d 70 61 72 61 6c 6c  65 6c 20 61 6e 64 20 73  |n.parallel and s|
000006c0  6f 20 61 74 20 6c 65 61  73 74 20 74 77 6f 20 70  |o at least two p|
000006d0  61 67 65 73 20 6e 65 65  64 20 74 6f 20 62 65 20  |ages need to be |
000006e0  73 65 61 72 63 68 65 64  20 61 74 20 74 68 65 20  |searched at the |
000006f0  73 61 6d 65 20 74 69 6d  65 20 69 66 0d 74 68 65  |same time if.the|
00000700  20 70 72 6f 67 72 61 6d  20 69 73 20 74 6f 20 77  | program is to w|
00000710  6f 72 6b 20 65 66 66 69  63 69 65 6e 74 6c 79 2e  |ork efficiently.|
00000720  20 49 64 65 61 6c 6c 79  20 74 68 65 20 70 72 6f  | Ideally the pro|
00000730  67 72 61 6d 20 73 68 6f  75 6c 64 20 62 65 20 63  |gram should be c|
00000740  61 70 61 62 6c 65 0d 6f  66 20 6c 6f 61 64 69 6e  |apable.of loadin|
00000750  67 20 61 6e 64 20 73 65  61 72 63 68 69 6e 67 20  |g and searching |
00000760  75 70 20 74 6f 20 38 20  70 61 67 65 73 20 61 74  |up to 8 pages at|
00000770  20 74 68 65 20 73 61 6d  65 20 74 69 6d 65 20 74  | the same time t|
00000780  6f 20 63 6f 70 65 20 77  69 74 68 20 74 68 65 0d  |o cope with the.|
00000790  77 6f 72 73 74 20 70 6f  73 73 69 62 6c 65 20 63  |worst possible c|
000007a0  61 73 65 20 77 68 65 6e  20 61 6c 6c 20 74 68 65  |ase when all the|
000007b0  20 61 76 61 69 6c 61 62  6c 65 20 6d 61 67 61 7a  | available magaz|
000007c0  69 6e 65 73 20 61 72 65  20 75 73 65 64 20 69 6e  |ines are used in|
000007d0  20 70 61 72 61 6c 6c 65  6c 2e 0d 4d 6f 64 69 66  | parallel..Modif|
000007e0  79 69 6e 67 20 74 68 65  20 70 72 6f 67 72 61 6d  |ying the program|
000007f0  20 74 6f 20 63 6f 70 65  20 77 69 74 68 20 38 20  | to cope with 8 |
00000800  62 75 66 66 65 72 73 20  69 73 20 6e 6f 74 20 61  |buffers is not a|
00000810  73 20 64 69 66 66 69 63  75 6c 74 20 61 73 20 69  |s difficult as i|
00000820  74 0d 73 6f 75 6e 64 73  20 61 6e 64 20 74 68 69  |t.sounds and thi|
00000830  73 20 68 61 73 20 62 65  65 6e 20 6c 65 66 74 20  |s has been left |
00000840  66 6f 72 20 79 6f 75 20  74 6f 20 64 6f 20 61 73  |for you to do as|
00000850  20 61 6e 20 65 78 65 72  63 69 73 65 2e 0d 0d 49  | an exercise...I|
00000860  20 68 61 76 65 20 75 73  65 64 20 61 20 6d 61 78  | have used a max|
00000870  69 6d 75 6d 20 6b 65 79  77 6f 72 64 20 6c 65 6e  |imum keyword len|
00000880  67 74 68 20 6f 66 20 38  20 63 68 61 72 61 63 74  |gth of 8 charact|
00000890  65 72 73 20 69 6e 20 74  68 65 20 64 65 6d 6f 6e  |ers in the demon|
000008a0  73 74 72 61 74 69 6f 6e  0d 70 72 6f 67 72 61 6d  |stration.program|
000008b0  2e 20 49 20 64 69 64 20  74 68 69 73 20 62 65 63  |. I did this bec|
000008c0  61 75 73 65 20 76 65 72  79 20 6c 6f 6e 67 20 74  |ause very long t|
000008d0  65 78 74 20 73 74 72 69  6e 67 73 20 63 6f 75 6c  |ext strings coul|
000008e0  64 20 74 61 6b 65 20 74  6f 6f 20 6c 6f 6e 67 20  |d take too long |
000008f0  74 6f 0d 66 69 6e 64 20  61 6e 64 20 74 68 65 20  |to.find and the |
00000900  70 72 6f 67 72 61 6d 20  63 6f 75 6c 64 20 63 72  |program could cr|
00000910  61 73 68 2e 20 45 69 67  68 74 20 63 68 61 72 61  |ash. Eight chara|
00000920  63 74 65 72 73 20 73 65  65 6d 73 20 74 6f 20 62  |cters seems to b|
00000930  65 20 73 75 66 66 69 63  69 65 6e 74 0d 74 6f 20  |e sufficient.to |
00000940  69 64 65 6e 74 69 66 79  20 6d 6f 73 74 20 41 53  |identify most AS|
00000950  43 49 49 20 73 74 72 69  6e 67 73 2e 20 49 20 68  |CII strings. I h|
00000960  61 76 65 20 73 74 6f 72  65 64 20 74 68 65 20 6b  |ave stored the k|
00000970  65 79 77 6f 72 64 20 69  6e 20 7a 65 72 6f 20 70  |eyword in zero p|
00000980  61 67 65 20 74 6f 0d 6d  61 6b 65 20 74 68 65 20  |age to.make the |
00000990  70 72 6f 67 72 61 6d 20  72 75 6e 20 61 73 20 66  |program run as f|
000009a0  61 73 74 20 61 73 20 70  6f 73 73 69 62 6c 65 2e  |ast as possible.|
000009b0  20 45 76 65 72 79 20 62  79 74 65 20 6f 66 20 74  | Every byte of t|
000009c0  68 65 20 6b 65 79 77 6f  72 64 20 68 61 73 0d 62  |he keyword has.b|
000009d0  69 74 20 37 20 73 65 74  20 28 6c 69 6e 65 20 31  |it 7 set (line 1|
000009e0  36 30 29 20 62 65 63 61  75 73 65 20 62 69 74 20  |60) because bit |
000009f0  73 65 76 65 6e 20 6f 66  20 74 68 65 20 65 76 65  |seven of the eve|
00000a00  72 79 20 64 61 74 61 20  62 79 74 65 20 69 73 20  |ry data byte is |
00000a10  73 65 74 20 72 65 61 64  79 0d 66 6f 72 20 64 69  |set ready.for di|
00000a20  73 70 6c 61 79 20 61 66  74 65 72 20 64 6f 77 6e  |splay after down|
00000a30  6c 6f 61 64 69 6e 67 20  28 6c 69 6e 65 20 32 32  |loading (line 22|
00000a40  36 30 29 2e 20 54 68 65  20 72 65 71 75 69 72 65  |60). The require|
00000a50  64 20 77 6f 72 64 20 6d  69 67 68 74 20 62 65 20  |d word might be |
00000a60  69 6e 0d 6c 6f 77 65 72  20 63 61 73 65 2c 20 75  |in.lower case, u|
00000a70  70 70 65 72 20 63 61 73  65 2c 20 6f 72 20 70 65  |pper case, or pe|
00000a80  72 68 61 70 73 20 68 61  76 65 20 6a 75 73 74 20  |rhaps have just |
00000a90  61 20 63 61 70 69 74 61  6c 20 66 69 72 73 74 20  |a capital first |
00000aa0  6c 65 74 74 65 72 2e 20  54 6f 0d 65 6e 73 75 72  |letter. To.ensur|
00000ab0  65 20 74 68 65 20 77 6f  72 64 20 69 73 20 72 65  |e the word is re|
00000ac0  63 6f 67 6e 69 73 65 64  20 77 68 69 63 68 65 76  |cognised whichev|
00000ad0  65 72 20 66 6f 72 6d 20  69 74 20 74 61 6b 65 73  |er form it takes|
00000ae0  2c 20 65 61 63 68 20 62  79 74 65 20 69 73 0d 63  |, each byte is.c|
00000af0  6f 6e 76 65 72 74 65 64  20 74 6f 20 61 20 63 61  |onverted to a ca|
00000b00  70 69 74 61 6c 20 62 65  66 6f 72 65 20 63 6f 6d  |pital before com|
00000b10  70 61 72 69 73 6f 6e 20  28 6c 69 6e 65 20 33 36  |parison (line 36|
00000b20  32 30 29 2e 20 54 68 65  20 72 65 71 75 69 72 65  |20). The require|
00000b30  64 20 6b 65 79 77 6f 72  64 0d 73 68 6f 75 6c 64  |d keyword.should|
00000b40  2c 20 74 68 65 72 65 66  6f 72 65 2c 20 62 65 20  |, therefore, be |
00000b50  65 6e 74 65 72 65 64 20  69 6e 20 75 70 70 65 72  |entered in upper|
00000b60  20 63 61 73 65 2e 0d 0d  49 6e 20 74 68 65 20 70  | case...In the p|
00000b70  72 65 76 69 6f 75 73 20  6d 6f 64 75 6c 65 2c 20  |revious module, |
00000b80  74 68 65 20 70 72 6f 67  72 61 6d 20 47 52 41 42  |the program GRAB|
00000b90  42 45 52 20 6c 6f 61 64  65 64 20 6f 6e 6c 79 20  |BER loaded only |
00000ba0  74 68 65 20 68 65 61 64  65 72 20 70 61 63 6b 65  |the header packe|
00000bb0  74 73 0d 69 6e 74 6f 20  74 68 65 20 63 6f 6d 70  |ts.into the comp|
00000bc0  75 74 65 72 27 73 20 6d  65 6d 6f 72 79 20 75 6e  |uter's memory un|
00000bd0  74 69 6c 20 74 68 65 20  68 65 61 64 65 72 20 6f  |til the header o|
00000be0  66 20 74 68 65 20 72 65  71 75 69 72 65 64 20 70  |f the required p|
00000bf0  61 67 65 20 77 61 73 0d  66 6f 75 6e 64 2e 20 49  |age was.found. I|
00000c00  74 20 74 68 65 6e 20 6c  6f 61 64 65 64 20 70 61  |t then loaded pa|
00000c10  63 6b 65 74 73 20 31 20  74 6f 20 32 33 20 61 6e  |ckets 1 to 23 an|
00000c20  64 20 64 69 73 70 6c 61  79 65 64 20 74 68 65 20  |d displayed the |
00000c30  70 61 67 65 20 77 68 65  6e 20 74 68 65 0d 74 65  |page when the.te|
00000c40  72 6d 69 6e 61 74 69 6e  67 20 68 65 61 64 65 72  |rminating header|
00000c50  20 77 61 73 20 66 6f 75  6e 64 2e 20 41 73 20 6c  | was found. As l|
00000c60  6f 6e 67 20 61 73 20 74  68 65 20 70 61 67 65 20  |ong as the page |
00000c70  62 75 66 66 65 72 20 77  61 73 20 63 6c 65 61 72  |buffer was clear|
00000c80  20 77 68 65 6e 0d 74 68  65 20 70 72 6f 67 72 61  | when.the progra|
00000c90  6d 20 73 74 61 72 74 65  64 2c 20 61 6e 64 20 77  |m started, and w|
00000ca0  61 73 20 63 6c 65 61 72  65 64 20 61 66 74 65 72  |as cleared after|
00000cb0  20 70 72 69 6e 74 69 6e  67 20 74 68 65 20 70 61  | printing the pa|
00000cc0  67 65 2c 20 47 52 41 42  42 45 52 0d 63 6f 75 6c  |ge, GRABBER.coul|
00000cd0  64 20 73 69 6d 70 6c 79  20 70 72 69 6e 74 20 6f  |d simply print o|
00000ce0  75 74 20 74 68 65 20 65  6e 74 69 72 65 20 63 6f  |ut the entire co|
00000cf0  6e 74 65 6e 74 73 20 6f  66 20 74 68 65 20 62 75  |ntents of the bu|
00000d00  66 66 65 72 20 62 65 63  61 75 73 65 20 69 74 20  |ffer because it |
00000d10  6f 6e 6c 79 0d 65 76 65  72 20 6c 6f 61 64 65 64  |only.ever loaded|
00000d20  20 70 61 63 6b 65 74 73  20 31 20 74 6f 20 32 33  | packets 1 to 23|
00000d30  20 6f 66 20 74 68 65 20  72 65 71 75 69 72 65 64  | of the required|
00000d40  20 70 61 67 65 2e 20 54  68 65 20 6b 65 79 77 6f  | page. The keywo|
00000d50  72 64 20 73 65 61 72 63  68 0d 70 72 6f 67 72 61  |rd search.progra|
00000d60  6d 20 61 73 73 6f 63 69  61 74 65 64 20 77 69 74  |m associated wit|
00000d70  68 20 74 68 69 73 20 6d  6f 64 75 6c 65 20 64 6f  |h this module do|
00000d80  65 73 20 6e 6f 74 20 68  61 76 65 20 65 6e 6f 75  |es not have enou|
00000d90  67 68 20 74 69 6d 65 20  74 6f 20 63 6c 65 61 72  |gh time to clear|
00000da0  20 74 68 65 0d 62 75 66  66 65 72 20 61 66 74 65  | the.buffer afte|
00000db0  72 20 73 65 61 72 63 68  69 6e 67 20 65 76 65 72  |r searching ever|
00000dc0  79 20 70 61 67 65 20 61  6e 64 20 73 6f 20 69 74  |y page and so it|
00000dd0  20 66 6c 61 67 73 20 65  76 65 72 79 20 70 61 63  | flags every pac|
00000de0  6b 65 74 20 61 73 20 75  6e 75 73 65 64 0d 61 74  |ket as unused.at|
00000df0  20 74 68 65 20 62 65 67  69 6e 6e 69 6e 67 20 6f  | the beginning o|
00000e00  66 20 65 76 65 72 79 20  70 61 67 65 20 73 65 61  |f every page sea|
00000e10  72 63 68 20 61 6e 64 20  66 6c 61 67 73 20 65 76  |rch and flags ev|
00000e20  65 72 79 20 70 61 63 6b  65 74 20 69 74 20 64 6f  |ery packet it do|
00000e30  77 6e 6c 6f 61 64 73 0d  61 73 20 75 73 65 64 20  |wnloads.as used |
00000e40  77 68 65 6e 20 69 74 20  69 73 20 72 65 63 65 69  |when it is recei|
00000e50  76 65 64 2e 20 54 68 69  73 20 69 73 20 64 6f 6e  |ved. This is don|
00000e60  65 20 75 73 69 6e 67 20  74 68 65 20 61 72 72 61  |e using the arra|
00000e70  79 20 6d 61 72 6b 65 72  73 20 28 6c 69 6e 65 0d  |y markers (line.|
00000e80  35 30 29 2e 20 54 68 65  20 6e 75 6d 62 65 72 20  |50). The number |
00000e90  26 38 30 20 69 73 20 75  73 65 64 20 74 6f 20 6d  |&80 is used to m|
00000ea0  61 72 6b 20 61 20 70 61  63 6b 65 74 20 61 73 20  |ark a packet as |
00000eb0  75 6e 75 73 65 64 20 61  6e 64 20 74 68 65 20 70  |unused and the p|
00000ec0  61 63 6b 65 74 0d 6e 75  6d 62 65 72 20 69 73 20  |acket.number is |
00000ed0  73 74 6f 72 65 64 20 74  6f 20 6d 61 72 6b 20 74  |stored to mark t|
00000ee0  68 65 20 70 61 63 6b 65  74 20 61 73 20 75 73 65  |he packet as use|
00000ef0  64 2e 0d 0d 54 68 65 20  66 6c 61 67 20 62 79 74  |d...The flag byt|
00000f00  65 20 67 72 61 62 66 6c  61 67 20 69 73 20 75 73  |e grabflag is us|
00000f10  65 64 20 61 67 61 69 6e  20 69 6e 20 74 68 65 20  |ed again in the |
00000f20  70 72 6f 67 72 61 6d 20  4b 45 59 57 4f 52 44 2e  |program KEYWORD.|
00000f30  20 49 6e 20 74 68 69 73  0d 70 72 6f 67 72 61 6d  | In this.program|
00000f40  20 69 74 20 63 61 6e 20  68 61 76 65 20 6f 6e 65  | it can have one|
00000f50  20 6f 66 20 34 20 76 61  6c 75 65 73 2e 20 26 30  | of 4 values. &0|
00000f60  30 20 6d 65 61 6e 73 20  74 68 61 74 20 69 74 20  |0 means that it |
00000f70  69 73 20 73 65 61 72 63  68 69 6e 67 20 66 6f 72  |is searching for|
00000f80  0d 61 6e 79 20 73 74 61  72 74 2d 6f 66 2d 70 61  |.any start-of-pa|
00000f90  67 65 20 68 65 61 64 65  72 2c 20 69 65 2e 20 6e  |ge header, ie. n|
00000fa0  6f 74 20 61 20 73 75 62  74 69 74 6c 65 20 61 6e  |ot a subtitle an|
00000fb0  64 20 6e 6f 74 20 70 61  67 65 20 78 46 46 2e 20  |d not page xFF. |
00000fc0  26 34 30 20 6d 65 61 6e  73 0d 74 68 61 74 20 69  |&40 means.that i|
00000fd0  74 20 68 61 73 20 66 6f  75 6e 64 20 61 20 73 74  |t has found a st|
00000fe0  61 72 74 2d 6f 66 2d 70  61 67 65 20 68 65 61 64  |art-of-page head|
00000ff0  65 72 20 61 6e 64 20 69  74 20 69 73 20 6c 6f 61  |er and it is loa|
00001000  64 69 6e 67 20 74 68 61  74 20 70 61 67 65 20 69  |ding that page i|
00001010  6e 74 6f 0d 74 68 65 20  62 75 66 66 65 72 20 62  |nto.the buffer b|
00001020  75 74 20 69 74 20 68 61  73 20 79 65 74 20 6e 6f  |ut it has yet no|
00001030  74 20 69 64 65 6e 74 69  66 69 65 64 20 74 68 65  |t identified the|
00001040  20 6b 65 79 77 6f 72 64  2e 20 26 38 30 20 6d 65  | keyword. &80 me|
00001050  61 6e 73 20 74 68 61 74  20 69 74 20 69 73 0d 73  |ans that it is.s|
00001060  74 69 6c 6c 20 6c 6f 61  64 69 6e 67 20 74 68 65  |till loading the|
00001070  20 70 61 67 65 20 69 6e  74 6f 20 74 68 65 20 62  | page into the b|
00001080  75 66 66 65 72 20 62 75  74 20 74 68 65 20 6b 65  |uffer but the ke|
00001090  79 77 6f 72 64 20 68 61  73 20 62 65 65 6e 20 66  |yword has been f|
000010a0  6f 75 6e 64 2e 20 26 43  30 0d 6d 65 61 6e 73 20  |ound. &C0.means |
000010b0  74 68 61 74 20 74 68 65  20 6b 65 79 77 6f 72 64  |that the keyword|
000010c0  20 68 61 73 20 62 65 65  6e 20 66 6f 75 6e 64 20  | has been found |
000010d0  61 6e 64 20 61 6e 20 65  6e 64 2d 6f 66 2d 70 61  |and an end-of-pa|
000010e0  67 65 20 68 65 61 64 65  72 20 68 61 73 20 62 65  |ge header has be|
000010f0  65 6e 0d 69 64 65 6e 74  69 66 69 65 64 20 73 6f  |en.identified so|
00001100  20 74 68 61 74 20 74 68  65 20 72 65 71 75 69 72  | that the requir|
00001110  65 64 20 70 61 67 65 20  68 61 73 20 62 65 65 6e  |ed page has been|
00001120  20 6c 6f 61 64 65 64 20  69 6e 74 6f 20 74 68 65  | loaded into the|
00001130  20 62 75 66 66 65 72 2e  20 57 68 65 6e 0d 67 72  | buffer. When.gr|
00001140  61 62 66 6c 61 67 20 73  74 6f 72 65 73 20 26 43  |abflag stores &C|
00001150  30 20 74 68 65 20 70 61  67 65 20 63 61 6e 20 62  |0 the page can b|
00001160  65 20 70 72 69 6e 74 65  64 20 61 6e 64 20 74 68  |e printed and th|
00001170  65 20 73 65 61 72 63 68  20 77 69 6c 6c 20 63 6f  |e search will co|
00001180  6e 74 69 6e 75 65 0d 66  6f 72 20 61 6e 6f 74 68  |ntinue.for anoth|
00001190  65 72 20 70 61 67 65 20  77 69 74 68 20 74 68 65  |er page with the|
000011a0  20 73 61 6d 65 20 6b 65  79 77 6f 72 64 2e 20 54  | same keyword. T|
000011b0  68 65 20 70 72 6f 67 72  61 6d 20 77 69 6c 6c 20  |he program will |
000011c0  63 6f 6e 74 69 6e 75 65  20 74 6f 0d 73 65 61 72  |continue to.sear|
000011d0  63 68 20 66 6f 72 20 74  68 65 20 73 61 6d 65 20  |ch for the same |
000011e0  6b 65 79 77 6f 72 64 20  75 6e 74 69 6c 20 74 68  |keyword until th|
000011f0  65 20 45 73 63 61 70 65  20 6b 65 79 20 69 73 20  |e Escape key is |
00001200  70 72 65 73 73 65 64 2e  20 49 66 20 79 6f 75 0d  |pressed. If you.|
00001210  6d 6f 64 69 66 79 20 74  68 65 20 70 72 6f 67 72  |modify the progr|
00001220  61 6d 20 74 6f 20 73 65  61 72 63 68 20 70 61 72  |am to search par|
00001230  61 6c 6c 65 6c 20 6d 61  67 61 7a 69 6e 65 73 20  |allel magazines |
00001240  6d 6f 72 65 20 65 66 66  65 63 74 69 76 65 6c 79  |more effectively|
00001250  20 79 6f 75 20 77 69 6c  6c 0d 6e 65 65 64 20 74  | you will.need t|
00001260  68 65 20 65 71 75 69 76  61 6c 65 6e 74 20 6f 66  |he equivalent of|
00001270  20 6f 6e 65 20 67 72 61  62 66 6c 61 67 20 66 6f  | one grabflag fo|
00001280  72 20 65 61 63 68 20 62  75 66 66 65 72 2e 0d 0d  |r each buffer...|
00001290  57 68 65 6e 20 61 20 70  61 67 65 20 68 61 73 20  |When a page has |
000012a0  62 65 65 6e 20 64 69 73  70 6c 61 79 65 64 20 6f  |been displayed o|
000012b0  6e 20 74 68 65 20 73 63  72 65 65 6e 20 74 68 65  |n the screen the|
000012c0  20 70 61 67 65 20 6e 75  6d 62 65 72 20 69 73 20  | page number is |
000012d0  74 61 6b 65 6e 20 66 72  6f 6d 0d 74 68 65 20 41  |taken from.the A|
000012e0  53 43 49 49 20 74 65 78  74 20 69 6e 20 74 68 65  |SCII text in the|
000012f0  20 70 61 67 65 20 68 65  61 64 65 72 20 61 6e 64  | page header and|
00001300  20 64 69 73 70 6c 61 79  65 64 20 69 6e 20 74 68  | displayed in th|
00001310  65 20 74 6f 70 20 6c 65  66 74 20 68 61 6e 64 0d  |e top left hand.|
00001320  63 6f 72 6e 65 72 20 6f  66 20 74 68 65 20 66 72  |corner of the fr|
00001330  61 6d 65 2e 20 54 68 69  73 20 69 73 20 61 20 73  |ame. This is a s|
00001340  68 6f 72 74 20 63 75 74  20 6d 65 74 68 6f 64 20  |hort cut method |
00001350  6f 66 20 64 69 73 70 6c  61 79 69 6e 67 20 74 68  |of displaying th|
00001360  65 20 70 61 67 65 0d 6e  75 6d 62 65 72 20 61 6e  |e page.number an|
00001370  64 20 69 66 20 79 6f 75  20 77 61 6e 74 20 74 6f  |d if you want to|
00001380  20 6d 6f 64 69 66 79 20  74 68 65 20 70 72 6f 67  | modify the prog|
00001390  72 61 6d 20 74 6f 20 69  6e 63 6c 75 64 65 20 74  |ram to include t|
000013a0  68 65 20 73 75 62 2d 70  61 67 65 0d 6e 75 6d 62  |he sub-page.numb|
000013b0  65 72 20 79 6f 75 20 77  69 6c 6c 20 68 61 76 65  |er you will have|
000013c0  20 74 6f 20 65 78 74 72  61 63 74 20 74 68 69 73  | to extract this|
000013d0  20 6e 75 6d 62 65 72 20  66 72 6f 6d 20 74 68 65  | number from the|
000013e0  20 68 65 61 64 65 72 20  64 61 74 61 20 75 73 69  | header data usi|
000013f0  6e 67 20 74 68 65 0d 69  6e 66 6f 72 6d 61 74 69  |ng the.informati|
00001400  6f 6e 20 70 72 6f 76 69  64 65 64 20 69 6e 20 6d  |on provided in m|
00001410  6f 64 75 6c 65 20 32 2e  0d 0d 49 66 20 79 6f 75  |odule 2...If you|
00001420  20 64 65 63 69 64 65 20  74 6f 20 74 61 6b 65 20  | decide to take |
00001430  75 70 20 74 68 65 20 63  68 61 6c 6c 65 6e 67 65  |up the challenge|
00001440  20 6f 66 20 64 65 73 69  67 6e 69 6e 67 20 61 20  | of designing a |
00001450  66 72 61 6d 65 20 67 72  61 62 62 65 72 20 79 6f  |frame grabber yo|
00001460  75 0d 6d 69 67 68 74 20  6c 69 6b 65 20 74 6f 20  |u.might like to |
00001470  69 6e 63 6c 75 64 65 20  73 6f 6d 65 20 6f 72 20  |include some or |
00001480  61 6c 6c 20 6f 66 20 74  68 65 20 66 6f 6c 6c 6f  |all of the follo|
00001490  77 69 6e 67 20 66 65 61  74 75 72 65 73 3a 0d 0d  |wing features:..|
000014a0  0d 31 29 20 50 61 67 65  20 73 65 6c 65 63 74 69  |.1) Page selecti|
000014b0  6f 6e 20 62 79 20 70 61  67 65 20 6e 75 6d 62 65  |on by page numbe|
000014c0  72 20 61 6e 64 20 73 75  62 2d 70 61 67 65 20 6e  |r and sub-page n|
000014d0  75 6d 62 65 72 2e 0d 0d  32 29 20 50 61 67 65 20  |umber...2) Page |
000014e0  73 65 6c 65 63 74 69 6f  6e 20 62 79 20 6b 65 79  |selection by key|
000014f0  77 6f 72 64 2e 0d 0d 33  29 20 43 6f 72 72 65 63  |word...3) Correc|
00001500  74 20 64 69 73 70 6c 61  79 20 6f 66 20 73 75 62  |t display of sub|
00001510  74 69 74 6c 65 73 2e 0d  0d 34 29 20 44 65 74 65  |titles...4) Dete|
00001520  63 74 20 61 6e 64 20 64  69 73 70 6c 61 79 20 6e  |ct and display n|
00001530  65 77 73 66 6c 61 73 68  65 73 2e 0d 0d 35 29 20  |ewsflashes...5) |
00001540  55 73 65 20 74 68 65 20  61 6c 61 72 6d 20 63 6c  |Use the alarm cl|
00001550  6f 63 6b 20 6f 6e 20 42  42 43 31 20 70 61 67 65  |ock on BBC1 page|
00001560  20 31 39 36 2e 0d 0d 36  29 20 48 6f 6c 64 20 61  | 196...6) Hold a|
00001570  6e 64 20 72 65 6c 65 61  73 65 20 70 61 67 65 2e  |nd release page.|
00001580  0d 0d 37 29 20 53 77 69  74 63 68 20 62 65 74 77  |..7) Switch betw|
00001590  65 65 6e 20 72 65 76 65  61 6c 20 61 6e 64 20 63  |een reveal and c|
000015a0  6f 6e 63 65 61 6c 20 68  69 64 64 65 6e 20 63 68  |onceal hidden ch|
000015b0  61 72 61 63 74 65 72 73  2e 0d 0d 38 29 20 50 61  |aracters...8) Pa|
000015c0  67 65 20 64 75 6d 70 20  74 6f 20 70 72 69 6e 74  |ge dump to print|
000015d0  65 72 2e 0d 0d 39 29 20  53 61 76 65 20 70 61 67  |er...9) Save pag|
000015e0  65 20 69 6e 20 75 73 65  72 20 6d 65 6d 6f 72 79  |e in user memory|
000015f0  2c 20 73 65 63 6f 6e 64  20 70 72 6f 63 65 73 73  |, second process|
00001600  6f 72 20 6f 72 20 6f 6e  20 64 69 73 63 2c 20 61  |or or on disc, a|
00001610  6e 64 20 72 65 2d 6c 6f  61 64 20 70 61 67 65 0d  |nd re-load page.|
00001620  20 20 20 77 68 65 6e 20  72 65 71 75 69 72 65 64  |   when required|
00001630  2e 0d 0d 0d 49 66 20 79  6f 75 20 63 61 6e 20 63  |....If you can c|
00001640  72 65 61 74 65 20 61 20  70 72 6f 67 72 61 6d 20  |reate a program |
00001650  77 69 74 68 20 74 68 65  73 65 20 61 6e 64 20 61  |with these and a|
00001660  6e 79 20 6f 74 68 65 72  20 75 73 65 66 75 6c 20  |ny other useful |
00001670  66 65 61 74 75 72 65 73  20 74 68 61 74 0d 69 6d  |features that.im|
00001680  70 72 6f 76 65 20 6f 6e  20 74 68 65 20 66 61 63  |prove on the fac|
00001690  69 6c 69 74 69 65 73 20  6f 66 66 65 72 65 64 20  |ilities offered |
000016a0  62 79 20 74 68 65 20 41  54 53 20 66 72 61 6d 65  |by the ATS frame|
000016b0  20 67 72 61 62 62 65 72  20 6f 72 20 74 68 65 0d  | grabber or the.|
000016c0  45 64 69 6e 62 75 72 67  68 20 53 6f 66 74 77 61  |Edinburgh Softwa|
000016d0  72 65 20 50 72 6f 64 75  63 74 73 20 4b 65 79 77  |re Products Keyw|
000016e0  6f 72 64 20 46 72 61 6d  65 20 47 72 61 62 62 65  |ord Frame Grabbe|
000016f0  72 20 28 62 72 6f 61 64  63 61 73 74 20 62 79 20  |r (broadcast by |
00001700  42 42 43 0d 54 65 6c 65  73 6f 66 74 77 61 72 65  |BBC.Telesoftware|
00001710  29 20 74 68 65 6e 20 79  6f 75 20 6d 69 67 68 74  |) then you might|
00001720  20 6c 69 6b 65 20 74 6f  20 63 6f 6e 73 69 64 65  | like to conside|
00001730  72 20 73 65 6e 64 69 6e  67 20 61 20 63 6f 70 79  |r sending a copy|
00001740  20 6f 66 20 79 6f 75 72  0d 70 72 6f 67 72 61 6d  | of your.program|
00001750  20 74 6f 20 42 42 43 20  54 65 6c 65 73 6f 66 74  | to BBC Telesoft|
00001760  77 61 72 65 20 73 6f 20  74 68 61 74 20 74 68 65  |ware so that the|
00001770  20 62 65 73 74 20 70 72  6f 67 72 61 6d 20 63 61  | best program ca|
00001780  6e 20 62 65 20 74 72 61  6e 73 6d 69 74 74 65 64  |n be transmitted|
00001790  2e 0d 0d 0d 20 20 20 31  30 20 52 45 4d 3e 20 4b  |....   10 REM> K|
000017a0  45 59 57 4f 52 44 0d 20  20 20 32 30 20 4d 4f 44  |EYWORD.   20 MOD|
000017b0  45 37 0d 20 20 20 33 30  20 44 49 4d 20 6d 63 6f  |E7.   30 DIM mco|
000017c0  64 65 20 26 31 30 30 30  20 3a 52 45 4d 3a 20 73  |de &1000 :REM: s|
000017d0  70 61 63 65 20 66 6f 72  20 6d 61 63 68 69 6e 65  |pace for machine|
000017e0  20 63 6f 64 65 0d 20 20  20 34 30 20 44 49 4d 20  | code.   40 DIM |
000017f0  62 75 66 66 65 72 20 26  34 30 30 20 3a 52 45 4d  |buffer &400 :REM|
00001800  3a 20 70 61 67 65 20 67  72 61 62 62 65 72 20 62  |: page grabber b|
00001810  75 66 66 65 72 0d 20 20  20 35 30 20 44 49 4d 20  |uffer.   50 DIM |
00001820  6d 61 72 6b 65 72 73 20  26 32 30 20 3a 52 45 4d  |markers &20 :REM|
00001830  3a 20 70 61 63 6b 65 74  20 6d 61 72 6b 65 72 73  |: packet markers|
00001840  0d 20 20 20 36 30 20 24  62 75 66 66 65 72 3d 53  |.   60 $buffer=S|
00001850  54 52 49 4e 47 24 28 34  30 2c 22 20 22 29 20 3a  |TRING$(40," ") :|
00001860  52 45 4d 3a 20 63 6c 65  61 72 20 74 68 65 20 68  |REM: clear the h|
00001870  65 61 64 65 72 0d 20 20  20 37 30 20 50 52 4f 43  |eader.   70 PROC|
00001880  6d 63 6f 64 65 20 3a 52  45 4d 3a 20 61 73 73 65  |mcode :REM: asse|
00001890  6d 62 6c 65 20 6d 61 63  68 69 6e 65 20 63 6f 64  |mble machine cod|
000018a0  65 0d 20 20 20 38 30 20  49 4e 50 55 54 22 54 56  |e.   80 INPUT"TV|
000018b0  20 63 68 61 6e 6e 65 6c  20 28 31 2d 34 29 20 3d  | channel (1-4) =|
000018c0  20 22 61 6e 73 77 65 72  24 0d 20 20 20 39 30 20  | "answer$.   90 |
000018d0  63 68 61 6e 6e 65 6c 3f  30 3d 45 56 41 4c 28 22  |channel?0=EVAL("|
000018e0  26 22 2b 4c 45 46 54 24  28 61 6e 73 77 65 72 24  |&"+LEFT$(answer$|
000018f0  2c 31 29 29 2b 26 31 42  0d 20 20 31 30 30 20 49  |,1))+&1B.  100 I|
00001900  46 20 63 68 61 6e 6e 65  6c 3f 30 20 3c 20 26 31  |F channel?0 < &1|
00001910  43 20 54 48 45 4e 20 63  68 61 6e 6e 65 6c 3f 30  |C THEN channel?0|
00001920  20 3d 20 26 31 43 0d 20  20 31 31 30 20 49 46 20  | = &1C.  110 IF |
00001930  63 68 61 6e 6e 65 6c 3f  30 20 3e 20 26 31 46 20  |channel?0 > &1F |
00001940  54 48 45 4e 20 63 68 61  6e 6e 65 6c 3f 30 20 3d  |THEN channel?0 =|
00001950  20 26 31 46 0d 20 20 31  32 30 20 49 4e 50 55 54  | &1F.  120 INPUT|
00001960  22 53 65 61 72 63 68 20  6b 65 79 77 6f 72 64 20  |"Search keyword |
00001970  28 55 50 50 45 52 20 43  41 53 45 29 20 3d 20 22  |(UPPER CASE) = "|
00001980  61 6e 73 77 65 72 24 0d  20 20 31 33 30 20 61 6e  |answer$.  130 an|
00001990  73 77 65 72 24 3d 4c 45  46 54 24 28 61 6e 73 77  |swer$=LEFT$(answ|
000019a0  65 72 24 2c 38 29 0d 20  20 31 34 30 20 6c 65 6e  |er$,8).  140 len|
000019b0  3d 4c 45 4e 28 61 6e 73  77 65 72 24 29 2d 31 0d  |=LEN(answer$)-1.|
000019c0  20 20 31 35 30 20 46 4f  52 20 70 61 73 73 3d 30  |  150 FOR pass=0|
000019d0  20 54 4f 20 6c 65 6e 0d  20 20 31 36 30 20 73 65  | TO len.  160 se|
000019e0  61 72 63 68 74 65 78 74  3f 70 61 73 73 20 3d 20  |archtext?pass = |
000019f0  28 41 53 43 28 4d 49 44  24 28 61 6e 73 77 65 72  |(ASC(MID$(answer|
00001a00  24 2c 70 61 73 73 2b 31  2c 31 29 29 20 4f 52 20  |$,pass+1,1)) OR |
00001a10  26 38 30 29 0d 20 20 31  37 30 20 4e 45 58 54 0d  |&80).  170 NEXT.|
00001a20  20 20 31 38 30 20 73 65  61 72 63 68 74 65 78 74  |  180 searchtext|
00001a30  3f 28 6c 65 6e 2b 31 29  3d 30 0d 20 20 31 39 30  |?(len+1)=0.  190|
00001a40  20 77 6f 72 64 6c 65 6e  67 74 68 3f 30 3d 6c 65  | wordlength?0=le|
00001a50  6e 0d 20 20 32 30 30 20  56 44 55 31 32 2c 32 33  |n.  200 VDU12,23|
00001a60  2c 31 2c 30 3b 30 3b 30  3b 30 3b 0d 20 20 32 31  |,1,0;0;0;0;.  21|
00001a70  30 20 43 41 4c 4c 20 6d  63 6f 64 65 0d 20 20 32  |0 CALL mcode.  2|
00001a80  32 30 20 56 44 55 33 30  2c 32 33 2c 31 2c 31 3b  |20 VDU30,23,1,1;|
00001a90  30 3b 30 3b 30 3b 0d 20  20 32 33 30 20 45 4e 44  |0;0;0;.  230 END|
00001aa0  0d 20 20 32 34 30 20 44  45 46 50 52 4f 43 6d 63  |.  240 DEFPROCmc|
00001ab0  6f 64 65 0d 20 20 32 35  30 20 70 61 63 6b 65 74  |ode.  250 packet|
00001ac0  3d 26 37 30 20 3a 52 45  4d 3a 20 72 6f 77 20 6e  |=&70 :REM: row n|
00001ad0  75 6d 62 65 72 20 6f 66  20 63 75 72 72 65 6e 74  |umber of current|
00001ae0  20 70 61 63 6b 65 74 0d  20 20 32 36 30 20 6d 61  | packet.  260 ma|
00001af0  67 61 7a 69 6e 65 3d 26  37 31 20 3a 52 45 4d 3a  |gazine=&71 :REM:|
00001b00  20 6d 61 67 61 7a 69 6e  65 20 6e 75 6d 62 65 72  | magazine number|
00001b10  20 6f 66 20 63 75 72 72  65 6e 74 20 70 61 67 65  | of current page|
00001b20  0d 20 20 32 37 30 20 67  72 61 62 66 6c 61 67 3d  |.  270 grabflag=|
00001b30  26 37 32 20 3a 52 45 4d  3a 20 30 3d 73 65 61 72  |&72 :REM: 0=sear|
00001b40  63 68 69 6e 67 2c 20 26  34 30 3d 6c 6f 61 64 69  |ching, &40=loadi|
00001b50  6e 67 2c 20 26 38 30 3d  66 6f 75 6e 64 2c 0d 20  |ng, &80=found,. |
00001b60  20 20 20 20 20 26 43 30  3d 6c 6f 61 64 65 64 20  |     &C0=loaded |
00001b70  26 20 66 6f 75 6e 64 0d  20 20 32 38 30 20 75 73  |& found.  280 us|
00001b80  65 72 6d 61 67 3d 26 37  33 20 3a 52 45 4d 3a 20  |ermag=&73 :REM: |
00001b90  6c 61 73 74 20 6d 61 67  61 7a 69 6e 65 20 6e 75  |last magazine nu|
00001ba0  6d 62 65 72 0d 20 20 32  39 30 20 75 73 65 72 70  |mber.  290 userp|
00001bb0  61 67 65 3d 26 37 34 20  3a 52 45 4d 3a 20 6c 61  |age=&74 :REM: la|
00001bc0  73 74 20 70 61 67 65 20  6e 75 6d 62 65 72 2c 20  |st page number, |
00001bd0  6c 6f 77 20 62 79 74 65  20 2b 20 68 69 67 68 20  |low byte + high |
00001be0  62 79 74 65 0d 20 20 33  30 30 20 63 68 61 6e 6e  |byte.  300 chann|
00001bf0  65 6c 3d 26 37 36 20 3a  52 45 4d 3a 20 54 56 20  |el=&76 :REM: TV |
00001c00  63 68 61 6e 6e 65 6c 0d  20 20 33 31 30 20 77 6f  |channel.  310 wo|
00001c10  72 6b 73 70 61 63 65 3d  26 37 37 20 3a 52 45 4d  |rkspace=&77 :REM|
00001c20  3a 20 32 20 62 79 74 65  20 77 6f 72 6b 73 70 61  |: 2 byte workspa|
00001c30  63 65 0d 20 20 33 32 30  20 64 65 73 74 69 6e 61  |ce.  320 destina|
00001c40  74 69 6f 6e 3d 26 37 39  20 3a 52 45 4d 3a 20 61  |tion=&79 :REM: a|
00001c50  6e 6f 74 68 65 72 20 32  20 62 79 74 65 20 77 6f  |nother 2 byte wo|
00001c60  72 6b 73 70 61 63 65 0d  20 20 33 33 30 20 77 6f  |rkspace.  330 wo|
00001c70  72 64 6c 65 6e 67 74 68  3d 26 37 42 20 3a 52 45  |rdlength=&7B :RE|
00001c80  4d 3a 20 6c 65 6e 67 74  68 20 6f 66 20 6b 65 79  |M: length of key|
00001c90  77 6f 72 64 0d 20 20 33  34 30 20 74 65 6d 70 79  |word.  340 tempy|
00001ca0  3d 26 37 43 20 3a 52 45  4d 3a 20 74 65 6d 70 6f  |=&7C :REM: tempo|
00001cb0  72 61 72 79 20 73 74 6f  72 65 20 66 6f 72 20 59  |rary store for Y|
00001cc0  20 72 65 67 69 73 74 65  72 0d 20 20 33 35 30 20  | register.  350 |
00001cd0  73 65 61 72 63 68 66 6f  72 3d 26 37 44 20 3a 52  |searchfor=&7D :R|
00001ce0  45 4d 3a 20 74 65 6d 70  6f 72 61 72 79 20 73 74  |EM: temporary st|
00001cf0  6f 72 65 20 66 6f 72 20  63 68 61 72 61 63 74 65  |ore for characte|
00001d00  72 20 69 6e 20 73 65 61  72 63 68 20 73 74 72 69  |r in search stri|
00001d10  6e 67 0d 20 20 33 36 30  20 73 65 61 72 63 68 74  |ng.  360 searcht|
00001d20  65 78 74 3d 26 38 30 20  3a 52 45 4d 3a 20 73 74  |ext=&80 :REM: st|
00001d30  6f 72 65 20 66 6f 72 20  6b 65 79 77 6f 72 64 0d  |ore for keyword.|
00001d40  20 20 33 37 30 20 69 72  71 32 76 3d 26 32 30 36  |  370 irq2v=&206|
00001d50  20 3a 52 45 4d 3a 20 69  72 71 32 20 76 65 63 74  | :REM: irq2 vect|
00001d60  6f 72 0d 20 20 33 38 30  20 74 74 78 63 6f 6e 74  |or.  380 ttxcont|
00001d70  72 6f 6c 3d 26 46 43 31  30 20 3a 52 45 4d 3a 20  |rol=&FC10 :REM: |
00001d80  54 54 58 20 63 6f 6e 74  72 6f 6c 20 72 65 67 69  |TTX control regi|
00001d90  73 74 65 72 2c 20 77 72  69 74 65 20 6f 6e 6c 79  |ster, write only|
00001da0  0d 20 20 33 39 30 20 74  74 78 73 74 61 74 75 73  |.  390 ttxstatus|
00001db0  3d 26 46 43 31 30 20 3a  52 45 4d 3a 20 54 54 58  |=&FC10 :REM: TTX|
00001dc0  20 73 74 61 74 75 73 20  72 65 67 69 73 74 65 72  | status register|
00001dd0  2c 20 72 65 61 64 20 6f  6e 6c 79 0d 20 20 34 30  |, read only.  40|
00001de0  30 20 72 6f 77 72 65 67  3d 26 46 43 31 31 20 3a  |0 rowreg=&FC11 :|
00001df0  52 45 4d 3a 20 54 54 58  20 72 6f 77 20 72 65 67  |REM: TTX row reg|
00001e00  69 73 74 65 72 2c 20 77  72 69 74 65 20 6f 6e 6c  |ister, write onl|
00001e10  79 0d 20 20 34 31 30 20  64 61 74 61 72 65 67 3d  |y.  410 datareg=|
00001e20  26 46 43 31 32 20 3a 52  45 4d 3a 20 54 54 58 20  |&FC12 :REM: TTX |
00001e30  64 61 74 61 20 72 65 67  69 73 74 65 72 2c 20 72  |data register, r|
00001e40  65 61 64 20 26 20 77 72  69 74 65 0d 20 20 34 32  |ead & write.  42|
00001e50  30 20 73 74 61 74 63 6c  72 3d 26 46 43 31 33 20  |0 statclr=&FC13 |
00001e60  3a 52 45 4d 3a 20 54 54  58 20 63 6c 65 61 72 20  |:REM: TTX clear |
00001e70  73 74 61 74 75 73 20 72  65 67 69 73 74 65 72 2c  |status register,|
00001e80  20 72 65 61 64 20 26 20  77 72 69 74 65 0d 20 20  | read & write.  |
00001e90  34 33 30 20 6f 73 77 72  63 68 3d 26 46 46 45 45  |430 oswrch=&FFEE|
00001ea0  0d 20 20 34 34 30 20 6f  73 62 79 74 65 3d 26 46  |.  440 osbyte=&F|
00001eb0  46 46 34 0d 20 20 34 35  30 20 46 4f 52 20 70 61  |FF4.  450 FOR pa|
00001ec0  73 73 3d 30 20 54 4f 20  32 20 53 54 45 50 20 32  |ss=0 TO 2 STEP 2|
00001ed0  0d 20 20 34 36 30 20 50  25 3d 6d 63 6f 64 65 0d  |.  460 P%=mcode.|
00001ee0  20 20 34 37 30 20 5b 20  20 20 20 20 20 20 4f 50  |  470 [       OP|
00001ef0  54 20 70 61 73 73 0d 20  20 34 38 30 20 20 20 20  |T pass.  480    |
00001f00  20 20 20 20 20 4a 53 52  20 63 6c 65 61 72 6d 61  |     JSR clearma|
00001f10  72 6b 20 5c 20 73 65 74  20 75 70 20 66 6f 72 20  |rk \ set up for |
00001f20  73 65 61 72 63 68 69 6e  67 0d 20 20 34 39 30 20  |searching.  490 |
00001f30  20 20 20 20 20 20 20 20  4c 44 58 20 69 72 71 32  |        LDX irq2|
00001f40  76 20 20 20 20 20 5c 20  6c 6f 61 64 20 73 65 63  |v     \ load sec|
00001f50  6f 6e 64 61 72 79 20 69  6e 74 65 72 72 75 70 74  |ondary interrupt|
00001f60  20 76 65 63 74 6f 72 0d  20 20 35 30 30 20 20 20  | vector.  500   |
00001f70  20 20 20 20 20 20 4c 44  59 20 69 72 71 32 76 2b  |      LDY irq2v+|
00001f80  31 0d 20 20 35 31 30 20  20 20 20 20 20 20 20 20  |1.  510         |
00001f90  53 54 58 20 6f 6c 64 69  72 71 32 76 20 20 5c 20  |STX oldirq2v  \ |
00001fa0  73 61 76 65 20 73 65 63  6f 6e 64 61 72 79 20 69  |save secondary i|
00001fb0  6e 74 65 72 72 75 70 74  20 76 65 63 74 6f 72 0d  |nterrupt vector.|
00001fc0  20 20 35 32 30 20 20 20  20 20 20 20 20 20 53 54  |  520         ST|
00001fd0  59 20 6f 6c 64 69 72 71  32 76 2b 31 0d 20 20 35  |Y oldirq2v+1.  5|
00001fe0  33 30 20 20 20 20 20 20  20 20 20 4c 44 58 20 23  |30         LDX #|
00001ff0  69 6e 74 65 72 72 75 70  74 20 4d 4f 44 20 32 35  |interrupt MOD 25|
00002000  36 20 5c 20 69 6e 73 74  61 6c 6c 20 6e 65 77 20  |6 \ install new |
00002010  69 6e 74 65 72 72 75 70  74 20 72 6f 75 74 69 6e  |interrupt routin|
00002020  65 0d 20 20 35 34 30 20  20 20 20 20 20 20 20 20  |e.  540         |
00002030  4c 44 59 20 23 69 6e 74  65 72 72 75 70 74 20 44  |LDY #interrupt D|
00002040  49 56 20 32 35 36 0d 20  20 35 35 30 20 20 20 20  |IV 256.  550    |
00002050  20 20 20 20 20 53 45 49  20 20 20 20 20 20 20 20  |     SEI        |
00002060  20 20 20 5c 20 64 69 73  61 62 6c 65 20 69 6e 74  |   \ disable int|
00002070  65 72 72 75 70 74 73 20  77 68 65 6e 20 61 6c 74  |errupts when alt|
00002080  65 72 69 6e 67 20 76 65  63 74 6f 72 73 0d 20 20  |ering vectors.  |
00002090  35 36 30 20 20 20 20 20  20 20 20 20 53 54 58 20  |560         STX |
000020a0  69 72 71 32 76 0d 20 20  35 37 30 20 20 20 20 20  |irq2v.  570     |
000020b0  20 20 20 20 53 54 59 20  69 72 71 32 76 2b 31 0d  |    STY irq2v+1.|
000020c0  20 20 35 38 30 20 20 20  20 20 20 20 20 20 43 4c  |  580         CL|
000020d0  49 20 20 20 20 20 20 20  20 20 20 20 5c 20 72 65  |I           \ re|
000020e0  2d 65 6e 61 62 6c 65 20  69 6e 74 65 72 72 75 70  |-enable interrup|
000020f0  74 73 0d 20 20 35 39 30  20 20 20 20 20 20 20 20  |ts.  590        |
00002100  20 4c 44 41 20 63 68 61  6e 6e 65 6c 20 20 20 5c  | LDA channel   \|
00002110  20 6c 6f 61 64 20 28 63  68 61 6e 6e 65 6c 20 6e  | load (channel n|
00002120  75 6d 62 65 72 20 2b 20  23 26 31 43 29 0d 20 20  |umber + #&1C).  |
00002130  36 30 30 20 20 20 20 20  20 20 20 20 53 54 41 20  |600         STA |
00002140  74 74 78 63 6f 6e 74 72  6f 6c 20 5c 20 65 6e 61  |ttxcontrol \ ena|
00002150  62 6c 65 20 54 54 58 0d  20 20 36 31 30 20 2e 6d  |ble TTX.  610 .m|
00002160  61 69 6e 6c 6f 6f 70 0d  20 20 36 32 30 20 20 20  |ainloop.  620   |
00002170  20 20 20 20 20 20 4c 44  41 20 67 72 61 62 66 6c  |      LDA grabfl|
00002180  61 67 20 20 5c 20 74 65  73 74 20 74 6f 20 73 65  |ag  \ test to se|
00002190  65 20 69 66 20 70 61 67  65 20 67 72 61 62 62 65  |e if page grabbe|
000021a0  64 0d 20 20 36 33 30 20  20 20 20 20 20 20 20 20  |d.  630         |
000021b0  43 4d 50 20 23 26 43 30  20 20 20 20 20 20 5c 20  |CMP #&C0      \ |
000021c0  26 43 30 20 3d 20 70 61  67 65 20 67 72 61 62 62  |&C0 = page grabb|
000021d0  65 64 20 61 6e 64 20 72  65 61 64 79 20 74 6f 20  |ed and ready to |
000021e0  70 72 69 6e 74 0d 20 20  36 34 30 20 20 20 20 20  |print.  640     |
000021f0  20 20 20 20 42 4e 45 20  63 6f 6e 74 69 6e 75 65  |    BNE continue|
00002200  20 20 5c 20 62 72 61 6e  63 68 20 69 66 20 6e 6f  |  \ branch if no|
00002210  74 20 72 65 61 64 79 0d  20 20 36 35 30 20 20 20  |t ready.  650   |
00002220  20 20 20 20 20 20 4a 53  52 20 63 68 65 63 6b 64  |      JSR checkd|
00002230  6f 75 62 6c 65 20 5c 20  6c 6f 6f 6b 20 66 6f 72  |ouble \ look for|
00002240  20 64 6f 75 62 6c 65 20  68 65 69 67 68 74 20 6c  | double height l|
00002250  69 6e 65 73 0d 20 20 36  36 30 20 20 20 20 20 20  |ines.  660      |
00002260  20 20 20 4a 53 52 20 74  72 61 6e 73 66 65 72 20  |   JSR transfer |
00002270  20 5c 20 74 72 61 6e 73  66 65 72 20 64 61 74 61  | \ transfer data|
00002280  20 74 6f 20 73 63 72 65  65 6e 0d 20 20 36 37 30  | to screen.  670|
00002290  20 20 20 20 20 20 20 20  20 4a 53 52 20 63 6c 65  |         JSR cle|
000022a0  61 72 6d 61 72 6b 20 5c  20 73 74 61 72 74 20 73  |armark \ start s|
000022b0  65 61 72 63 68 69 6e 67  20 61 67 61 69 6e 0d 20  |earching again. |
000022c0  20 36 38 30 20 2e 63 6f  6e 74 69 6e 75 65 0d 20  | 680 .continue. |
000022d0  20 36 39 30 20 20 20 20  20 20 20 20 20 4c 44 58  | 690         LDX|
000022e0  20 23 26 30 30 20 20 20  20 20 20 5c 20 73 63 72  | #&00      \ scr|
000022f0  65 65 6e 20 72 6f 77 0d  20 20 37 30 30 20 20 20  |een row.  700   |
00002300  20 20 20 20 20 20 4c 44  59 20 23 26 30 38 20 20  |      LDY #&08  |
00002310  20 20 20 20 5c 20 73 63  72 65 65 6e 20 63 6f 6c  |    \ screen col|
00002320  75 6d 6e 0d 20 20 37 31  30 20 20 20 20 20 20 20  |umn.  710       |
00002330  20 20 4a 53 52 20 76 64  75 33 31 20 20 20 20 20  |  JSR vdu31     |
00002340  5c 20 56 44 55 20 33 31  2c 38 2c 30 0d 20 20 37  |\ VDU 31,8,0.  7|
00002350  32 30 20 2e 68 65 61 64  6c 6f 6f 70 0d 20 20 37  |20 .headloop.  7|
00002360  33 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 62  |30         LDA b|
00002370  75 66 66 65 72 2c 59 0d  20 20 37 34 30 20 20 20  |uffer,Y.  740   |
00002380  20 20 20 20 20 20 4a 53  52 20 6f 73 77 72 63 68  |      JSR oswrch|
00002390  20 20 20 20 5c 20 77 72  69 74 65 20 68 65 61 64  |    \ write head|
000023a0  65 72 20 6f 6e 20 73 63  72 65 65 6e 0d 20 20 37  |er on screen.  7|
000023b0  35 30 20 20 20 20 20 20  20 20 20 49 4e 59 0d 20  |50         INY. |
000023c0  20 37 36 30 20 20 20 20  20 20 20 20 20 43 50 59  | 760         CPY|
000023d0  20 23 26 32 38 20 20 20  20 20 20 5c 20 64 65 63  | #&28      \ dec|
000023e0  69 6d 61 6c 20 34 30 0d  20 20 37 37 30 20 20 20  |imal 40.  770   |
000023f0  20 20 20 20 20 20 42 43  43 20 68 65 61 64 6c 6f  |      BCC headlo|
00002400  6f 70 0d 20 20 37 38 30  20 20 20 20 20 20 20 20  |op.  780        |
00002410  20 42 49 54 20 26 46 46  20 20 20 20 20 20 20 5c  | BIT &FF       \|
00002420  20 70 6f 6c 6c 20 65 73  63 61 70 65 20 66 6c 61  | poll escape fla|
00002430  67 0d 20 20 37 39 30 20  20 20 20 20 20 20 20 20  |g.  790         |
00002440  42 50 4c 20 6d 61 69 6e  6c 6f 6f 70 20 20 5c 20  |BPL mainloop  \ |
00002450  6c 6f 6f 70 20 69 66 20  65 73 63 61 70 65 20 6e  |loop if escape n|
00002460  6f 74 20 70 72 65 73 73  65 64 0d 20 20 38 30 30  |ot pressed.  800|
00002470  20 20 20 20 20 20 20 20  20 4c 44 41 20 23 26 37  |         LDA #&7|
00002480  45 20 20 20 20 20 20 5c  20 64 65 63 69 6d 61 6c  |E      \ decimal|
00002490  20 31 32 36 0d 20 20 38  31 30 20 20 20 20 20 20  | 126.  810      |
000024a0  20 20 20 4a 53 52 20 6f  73 62 79 74 65 20 20 20  |   JSR osbyte   |
000024b0  20 5c 20 61 63 6b 6e 6f  77 6c 65 64 67 65 20 65  | \ acknowledge e|
000024c0  73 63 61 70 65 0d 20 20  38 32 30 20 20 20 20 20  |scape.  820     |
000024d0  20 20 20 20 4c 44 41 20  23 26 30 30 0d 20 20 38  |    LDA #&00.  8|
000024e0  33 30 20 20 20 20 20 20  20 20 20 53 54 41 20 74  |30         STA t|
000024f0  74 78 63 6f 6e 74 72 6f  6c 20 5c 20 64 69 73 61  |txcontrol \ disa|
00002500  62 6c 65 20 54 54 58 0d  20 20 38 34 30 20 20 20  |ble TTX.  840   |
00002510  20 20 20 20 20 20 4c 44  58 20 6f 6c 64 69 72 71  |      LDX oldirq|
00002520  32 76 20 20 5c 20 6c 6f  61 64 20 6f 72 69 67 69  |2v  \ load origi|
00002530  6e 61 6c 20 76 65 63 74  6f 72 0d 20 20 38 35 30  |nal vector.  850|
00002540  20 20 20 20 20 20 20 20  20 4c 44 59 20 6f 6c 64  |         LDY old|
00002550  69 72 71 32 76 2b 31 0d  20 20 38 36 30 20 20 20  |irq2v+1.  860   |
00002560  20 20 20 20 20 20 53 45  49 20 20 20 20 20 20 20  |      SEI       |
00002570  20 20 20 20 5c 20 64 69  73 61 62 6c 65 20 69 6e  |    \ disable in|
00002580  74 65 72 72 75 70 74 73  20 77 68 65 6e 20 61 6c  |terrupts when al|
00002590  74 65 72 69 6e 67 20 76  65 63 74 6f 72 73 0d 20  |tering vectors. |
000025a0  20 38 37 30 20 20 20 20  20 20 20 20 20 53 54 58  | 870         STX|
000025b0  20 69 72 71 32 76 20 20  20 20 20 5c 20 72 65 73  | irq2v     \ res|
000025c0  74 6f 72 65 20 6f 72 69  67 69 6e 61 6c 20 76 65  |tore original ve|
000025d0  63 74 6f 72 0d 20 20 38  38 30 20 20 20 20 20 20  |ctor.  880      |
000025e0  20 20 20 53 54 59 20 69  72 71 32 76 2b 31 0d 20  |   STY irq2v+1. |
000025f0  20 38 39 30 20 20 20 20  20 20 20 20 20 43 4c 49  | 890         CLI|
00002600  20 20 20 20 20 20 20 20  20 20 20 5c 20 72 65 2d  |           \ re-|
00002610  65 6e 61 62 6c 65 20 69  6e 74 65 72 72 75 70 74  |enable interrupt|
00002620  73 0d 20 20 39 30 30 20  20 20 20 20 20 20 20 20  |s.  900         |
00002630  52 54 53 20 20 20 20 20  20 20 20 20 20 20 5c 20  |RTS           \ |
00002640  72 65 74 75 72 6e 20 74  6f 20 42 41 53 49 43 0d  |return to BASIC.|
00002650  20 20 39 31 30 20 2e 69  6e 74 65 72 72 75 70 74  |  910 .interrupt|
00002660  0d 20 20 39 32 30 20 20  20 20 20 20 20 20 20 42  |.  920         B|
00002670  49 54 20 74 74 78 73 74  61 74 75 73 20 5c 20 70  |IT ttxstatus \ p|
00002680  6f 6c 6c 20 54 54 58 20  68 61 72 64 77 61 72 65  |oll TTX hardware|
00002690  0d 20 20 39 33 30 20 20  20 20 20 20 20 20 20 42  |.  930         B|
000026a0  4d 49 20 74 74 78 69 6e  74 65 72 20 20 5c 20 62  |MI ttxinter  \ b|
000026b0  72 61 6e 63 68 20 69 66  20 54 54 58 20 69 6e 74  |ranch if TTX int|
000026c0  65 72 72 75 70 74 0d 20  20 39 34 30 20 20 20 20  |errupt.  940    |
000026d0  20 20 20 20 20 4a 4d 50  20 28 6f 6c 64 69 72 71  |     JMP (oldirq|
000026e0  32 76 29 20 5c 20 6e 6f  74 20 54 54 58 20 69 6e  |2v) \ not TTX in|
000026f0  74 65 72 72 75 70 74 0d  20 20 39 35 30 20 2e 74  |terrupt.  950 .t|
00002700  74 78 69 6e 74 65 72 0d  20 20 39 36 30 20 20 20  |txinter.  960   |
00002710  20 20 20 20 20 20 4c 44  41 20 26 46 43 20 20 20  |      LDA &FC   |
00002720  20 20 20 20 5c 20 69 6e  74 65 72 72 75 70 74 20  |    \ interrupt |
00002730  61 63 63 75 6d 75 6c 61  74 6f 72 20 73 61 76 65  |accumulator save|
00002740  20 72 65 67 69 73 74 65  72 0d 20 20 39 37 30 20  | register.  970 |
00002750  20 20 20 20 20 20 20 20  50 48 41 20 20 20 20 20  |        PHA     |
00002760  20 20 20 20 20 20 5c 20  70 75 73 68 20 69 6e 74  |      \ push int|
00002770  65 72 72 75 70 74 20 61  63 63 75 6d 75 6c 61 74  |errupt accumulat|
00002780  6f 72 20 73 61 76 65 20  72 65 67 69 73 74 65 72  |or save register|
00002790  0d 20 20 39 38 30 20 20  20 20 20 20 20 20 20 54  |.  980         T|
000027a0  58 41 0d 20 20 39 39 30  20 20 20 20 20 20 20 20  |XA.  990        |
000027b0  20 50 48 41 20 20 20 20  20 20 20 20 20 20 20 5c  | PHA           \|
000027c0  20 70 75 73 68 20 58 0d  20 31 30 30 30 20 20 20  | push X. 1000   |
000027d0  20 20 20 20 20 20 54 59  41 0d 20 31 30 31 30 20  |      TYA. 1010 |
000027e0  20 20 20 20 20 20 20 20  50 48 41 20 20 20 20 20  |        PHA     |
000027f0  20 20 20 20 20 20 5c 20  70 75 73 68 20 59 0d 20  |      \ push Y. |
00002800  31 30 32 30 20 20 20 20  20 20 20 20 20 4c 44 41  |1020         LDA|
00002810  20 67 72 61 62 66 6c 61  67 20 20 5c 20 69 73 20  | grabflag  \ is |
00002820  61 20 70 61 67 65 20 77  61 69 74 69 6e 67 20 74  |a page waiting t|
00002830  6f 20 62 65 20 64 69 73  70 6c 61 79 65 64 3f 0d  |o be displayed?.|
00002840  20 31 30 33 30 20 20 20  20 20 20 20 20 20 43 4d  | 1030         CM|
00002850  50 20 23 26 43 30 20 20  20 20 20 20 5c 20 26 43  |P #&C0      \ &C|
00002860  30 20 3d 20 70 61 67 65  20 67 72 61 62 62 65 64  |0 = page grabbed|
00002870  0d 20 31 30 34 30 20 20  20 20 20 20 20 20 20 42  |. 1040         B|
00002880  45 51 20 63 6c 65 61 72  73 74 61 74 75 73 20 5c  |EQ clearstatus \|
00002890  20 63 6c 65 61 72 20 73  74 61 74 75 73 20 61 6e  | clear status an|
000028a0  64 20 52 54 49 20 69 66  20 70 61 67 65 20 67 72  |d RTI if page gr|
000028b0  61 62 62 65 64 0d 20 31  30 35 30 20 20 20 20 20  |abbed. 1050     |
000028c0  20 20 20 20 43 4c 44 20  20 20 20 20 20 20 20 20  |    CLD         |
000028d0  20 20 5c 20 63 6c 65 61  72 20 64 65 63 69 6d 61  |  \ clear decima|
000028e0  6c 20 66 6c 61 67 0d 20  31 30 36 30 20 2e 73 74  |l flag. 1060 .st|
000028f0  61 72 74 72 6f 77 0d 20  31 30 37 30 20 20 20 20  |artrow. 1070    |
00002900  20 20 20 20 20 4c 44 59  20 23 26 30 30 20 20 20  |     LDY #&00   |
00002910  20 20 20 5c 20 73 74 61  72 74 20 77 69 74 68 20  |   \ start with |
00002920  72 6f 77 20 30 0d 20 31  30 38 30 20 2e 72 65 61  |row 0. 1080 .rea|
00002930  64 74 74 78 74 0d 20 31  30 39 30 20 20 20 20 20  |dttxt. 1090     |
00002940  20 20 20 20 53 54 59 20  72 6f 77 72 65 67 20 20  |    STY rowreg  |
00002950  20 20 5c 20 74 72 79 20  72 6f 77 73 20 30 20 74  |  \ try rows 0 t|
00002960  6f 20 31 35 0d 20 31 31  30 30 20 20 20 20 20 20  |o 15. 1100      |
00002970  20 20 20 4c 44 41 20 64  61 74 61 72 65 67 20 20  |   LDA datareg  |
00002980  20 5c 20 6c 6f 61 64 20  66 72 61 6d 69 6e 67 20  | \ load framing |
00002990  63 6f 64 65 20 28 23 26  32 37 29 0d 20 31 31 31  |code (#&27). 111|
000029a0  30 20 20 20 20 20 20 20  20 20 42 45 51 20 65 6d  |0         BEQ em|
000029b0  70 74 79 72 6f 77 20 20  5c 20 69 66 20 7a 65 72  |ptyrow  \ if zer|
000029c0  6f 20 74 72 79 20 6e 65  78 74 20 72 6f 77 0d 20  |o try next row. |
000029d0  31 31 32 30 20 20 20 20  20 20 20 20 20 54 59 41  |1120         TYA|
000029e0  0d 20 31 31 33 30 20 20  20 20 20 20 20 20 20 50  |. 1130         P|
000029f0  48 41 20 20 20 20 20 20  20 20 20 20 20 5c 20 73  |HA           \ s|
00002a00  61 76 65 20 72 6f 77 20  6e 75 6d 62 65 72 0d 20  |ave row number. |
00002a10  31 31 34 30 20 20 20 20  20 20 20 20 20 4a 53 52  |1140         JSR|
00002a20  20 72 65 61 64 70 61 63  6b 65 74 0d 20 31 31 35  | readpacket. 115|
00002a30  30 20 20 20 20 20 20 20  20 20 50 4c 41 0d 20 31  |0         PLA. 1|
00002a40  31 36 30 20 20 20 20 20  20 20 20 20 54 41 59 20  |160         TAY |
00002a50  20 20 20 20 20 20 20 20  20 20 5c 20 72 65 73 74  |          \ rest|
00002a60  6f 72 65 20 72 6f 77 20  6e 75 6d 62 65 72 0d 20  |ore row number. |
00002a70  31 31 37 30 20 2e 65 6d  70 74 79 72 6f 77 0d 20  |1170 .emptyrow. |
00002a80  31 31 38 30 20 20 20 20  20 20 20 20 20 49 4e 59  |1180         INY|
00002a90  20 20 20 20 20 20 20 20  20 20 20 5c 20 69 6e 63  |           \ inc|
00002aa0  72 65 6d 65 6e 74 20 72  6f 77 20 6e 75 6d 62 65  |rement row numbe|
00002ab0  72 0d 20 31 31 39 30 20  20 20 20 20 20 20 20 20  |r. 1190         |
00002ac0  43 50 59 20 23 26 31 30  20 20 20 20 20 20 5c 20  |CPY #&10      \ |
00002ad0  74 72 79 20 72 6f 77 73  20 30 20 2d 20 31 35 0d  |try rows 0 - 15.|
00002ae0  20 31 32 30 30 20 20 20  20 20 20 20 20 20 42 4e  | 1200         BN|
00002af0  45 20 72 65 61 64 74 74  78 74 0d 20 31 32 31 30  |E readttxt. 1210|
00002b00  20 2e 63 6c 65 61 72 73  74 61 74 75 73 0d 20 31  | .clearstatus. 1|
00002b10  32 32 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |220         LDA |
00002b20  23 26 30 30 0d 20 31 32  33 30 20 20 20 20 20 20  |#&00. 1230      |
00002b30  20 20 20 4c 44 59 20 23  26 30 46 20 20 20 20 20  |   LDY #&0F     |
00002b40  20 5c 20 63 6c 65 61 72  20 31 36 20 72 6f 77 73  | \ clear 16 rows|
00002b50  20 69 6e 20 61 64 61 70  74 6f 72 0d 20 31 32 34  | in adaptor. 124|
00002b60  30 20 2e 63 6c 65 61 72  6c 6f 6f 70 0d 20 31 32  |0 .clearloop. 12|
00002b70  35 30 20 20 20 20 20 20  20 20 20 53 54 59 20 72  |50         STY r|
00002b80  6f 77 72 65 67 0d 20 31  32 36 30 20 20 20 20 20  |owreg. 1260     |
00002b90  20 20 20 20 53 54 41 20  64 61 74 61 72 65 67 0d  |    STA datareg.|
00002ba0  20 31 32 37 30 20 20 20  20 20 20 20 20 20 44 45  | 1270         DE|
00002bb0  59 0d 20 31 32 38 30 20  20 20 20 20 20 20 20 20  |Y. 1280         |
00002bc0  42 50 4c 20 63 6c 65 61  72 6c 6f 6f 70 0d 20 31  |BPL clearloop. 1|
00002bd0  32 39 30 20 20 20 20 20  20 20 20 20 53 54 41 20  |290         STA |
00002be0  73 74 61 74 63 6c 72 20  20 20 5c 20 63 6c 65 61  |statclr   \ clea|
00002bf0  72 20 73 74 61 74 75 73  20 66 6c 61 67 73 20 62  |r status flags b|
00002c00  65 66 6f 72 65 20 72 65  74 75 72 6e 69 6e 67 0d  |efore returning.|
00002c10  20 31 33 30 30 20 20 20  20 20 20 20 20 20 50 4c  | 1300         PL|
00002c20  41 0d 20 31 33 31 30 20  20 20 20 20 20 20 20 20  |A. 1310         |
00002c30  54 41 59 20 20 20 20 20  20 20 20 20 20 20 5c 20  |TAY           \ |
00002c40  72 65 73 74 6f 72 65 20  59 0d 20 31 33 32 30 20  |restore Y. 1320 |
00002c50  20 20 20 20 20 20 20 20  50 4c 41 0d 20 31 33 33  |        PLA. 133|
00002c60  30 20 20 20 20 20 20 20  20 20 54 41 58 20 20 20  |0         TAX   |
00002c70  20 20 20 20 20 20 20 20  5c 20 72 65 73 74 6f 72  |        \ restor|
00002c80  65 20 58 0d 20 31 33 34  30 20 20 20 20 20 20 20  |e X. 1340       |
00002c90  20 20 50 4c 41 0d 20 31  33 35 30 20 20 20 20 20  |  PLA. 1350     |
00002ca0  20 20 20 20 53 54 41 20  26 46 43 20 20 20 20 20  |    STA &FC     |
00002cb0  20 20 5c 20 72 65 73 74  6f 72 65 20 69 6e 74 65  |  \ restore inte|
00002cc0  72 72 75 70 74 20 61 63  63 75 6d 75 6c 61 74 6f  |rrupt accumulato|
00002cd0  72 20 73 61 76 65 20 72  65 67 69 73 74 65 72 0d  |r save register.|
00002ce0  20 31 33 36 30 20 20 20  20 20 20 20 20 20 52 54  | 1360         RT|
00002cf0  49 20 20 20 20 20 20 20  20 20 20 20 5c 20 72 65  |I           \ re|
00002d00  74 75 72 6e 20 66 72 6f  6d 20 69 6e 74 65 72 72  |turn from interr|
00002d10  75 70 74 0d 20 31 33 37  30 20 2e 72 65 61 64 70  |upt. 1370 .readp|
00002d20  61 63 6b 65 74 0d 20 31  33 38 30 20 20 20 20 20  |acket. 1380     |
00002d30  20 20 20 20 4c 44 59 20  64 61 74 61 72 65 67 20  |    LDY datareg |
00002d40  20 20 5c 20 72 65 61 64  20 6d 61 67 61 7a 69 6e  |  \ read magazin|
00002d50  65 20 6e 75 6d 62 65 72  0d 20 31 33 39 30 20 20  |e number. 1390  |
00002d60  20 20 20 20 20 20 20 4c  44 41 20 68 61 6d 74 61  |       LDA hamta|
00002d70  62 6c 65 2c 59 20 5c 20  64 65 2d 68 61 6d 20 69  |ble,Y \ de-ham i|
00002d80  74 0d 20 31 34 30 30 20  20 20 20 20 20 20 20 20  |t. 1400         |
00002d90  42 4d 49 20 63 6c 65 61  72 67 72 61 62 20 5c 20  |BMI cleargrab \ |
00002da0  73 74 6f 70 20 6c 6f 61  64 69 6e 67 20 69 66 20  |stop loading if |
00002db0  65 72 72 6f 72 0d 20 31  34 31 30 20 20 20 20 20  |error. 1410     |
00002dc0  20 20 20 20 53 54 41 20  6d 61 67 61 7a 69 6e 65  |    STA magazine|
00002dd0  20 20 5c 20 73 61 76 65  20 6d 61 67 61 7a 69 6e  |  \ save magazin|
00002de0  65 20 6e 75 6d 62 65 72  0d 20 31 34 32 30 20 20  |e number. 1420  |
00002df0  20 20 20 20 20 20 20 4c  44 59 20 64 61 74 61 72  |       LDY datar|
00002e00  65 67 20 20 20 5c 20 72  65 61 64 20 70 61 63 6b  |eg   \ read pack|
00002e10  65 74 20 6e 75 6d 62 65  72 0d 20 31 34 33 30 20  |et number. 1430 |
00002e20  20 20 20 20 20 20 20 20  4c 44 41 20 68 61 6d 74  |        LDA hamt|
00002e30  61 62 6c 65 2c 59 20 5c  20 64 65 2d 68 61 6d 20  |able,Y \ de-ham |
00002e40  69 74 0d 20 31 34 34 30  20 20 20 20 20 20 20 20  |it. 1440        |
00002e50  20 42 4d 49 20 63 6c 65  61 72 67 72 61 62 20 5c  | BMI cleargrab \|
00002e60  20 73 74 6f 70 20 6c 6f  61 64 69 6e 67 20 69 66  | stop loading if|
00002e70  20 65 72 72 6f 72 0d 20  31 34 35 30 20 20 20 20  | error. 1450    |
00002e80  20 20 20 20 20 53 54 41  20 70 61 63 6b 65 74 20  |     STA packet |
00002e90  20 20 20 5c 20 73 61 76  65 20 70 61 63 6b 65 74  |   \ save packet|
00002ea0  20 6e 75 6d 62 65 72 0d  20 31 34 36 30 20 20 20  | number. 1460   |
00002eb0  20 20 20 20 20 20 4c 44  41 20 6d 61 67 61 7a 69  |      LDA magazi|
00002ec0  6e 65 20 20 5c 20 6c 6f  61 64 20 6d 61 67 61 7a  |ne  \ load magaz|
00002ed0  69 6e 65 20 6e 75 6d 62  65 72 0d 20 31 34 37 30  |ine number. 1470|
00002ee0  20 20 20 20 20 20 20 20  20 43 4d 50 20 23 26 30  |         CMP #&0|
00002ef0  38 20 20 20 20 20 20 5c  20 62 69 74 20 33 20 6f  |8      \ bit 3 o|
00002f00  66 20 6d 61 67 2e 20 6e  75 6d 62 65 72 20 69 73  |f mag. number is|
00002f10  20 62 69 74 20 30 20 6f  66 20 70 61 63 6b 65 74  | bit 0 of packet|
00002f20  0d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00002f30  20 20 20 20 20 20 20 20  20 20 20 20 20 5c 20 6e  |             \ n|
00002f40  75 6d 62 65 72 0d 20 31  34 38 30 20 20 20 20 20  |umber. 1480     |
00002f50  20 20 20 20 52 4f 4c 20  70 61 63 6b 65 74 20 20  |    ROL packet  |
00002f60  20 20 5c 20 35 20 62 69  74 20 70 61 63 6b 65 74  |  \ 5 bit packet|
00002f70  20 6e 75 6d 62 65 72 0d  20 31 34 39 30 20 20 20  | number. 1490   |
00002f80  20 20 20 20 20 20 41 4e  44 20 23 26 30 37 20 20  |      AND #&07  |
00002f90  20 20 20 20 5c 20 75 73  65 20 6f 6e 6c 79 20 62  |    \ use only b|
00002fa0  69 74 73 20 30 2d 32 0d  20 31 35 30 30 20 20 20  |its 0-2. 1500   |
00002fb0  20 20 20 20 20 20 53 54  41 20 6d 61 67 61 7a 69  |      STA magazi|
00002fc0  6e 65 20 20 5c 20 33 20  62 69 74 20 6d 61 67 61  |ne  \ 3 bit maga|
00002fd0  7a 69 6e 65 20 6e 75 6d  62 65 72 0d 20 31 35 31  |zine number. 151|
00002fe0  30 20 20 20 20 20 20 20  20 20 4c 44 41 20 70 61  |0         LDA pa|
00002ff0  63 6b 65 74 0d 20 31 35  32 30 20 20 20 20 20 20  |cket. 1520      |
00003000  20 20 20 43 4d 50 20 23  26 31 38 20 20 20 20 20  |   CMP #&18     |
00003010  20 5c 20 69 67 6e 6f 72  65 20 54 53 44 50 2c 20  | \ ignore TSDP, |
00003020  44 61 74 61 63 61 73 74  2c 20 65 74 63 2e 0d 20  |Datacast, etc.. |
00003030  31 35 33 30 20 20 20 20  20 20 20 20 20 42 43 53  |1530         BCS|
00003040  20 65 78 69 74 20 20 20  20 20 20 5c 20 69 65 2e  | exit      \ ie.|
00003050  20 75 73 65 20 4c 65 76  65 6c 20 31 20 54 65 6c  | use Level 1 Tel|
00003060  65 74 65 78 74 20 6f 6e  6c 79 0d 20 31 35 34 30  |etext only. 1540|
00003070  20 20 20 20 20 20 20 20  20 50 48 41 20 20 20 20  |         PHA    |
00003080  20 20 20 20 20 20 20 5c  20 70 75 73 68 20 70 61  |       \ push pa|
00003090  63 6b 65 74 20 6e 75 6d  62 65 72 0d 20 31 35 35  |cket number. 155|
000030a0  30 20 20 20 20 20 20 20  20 20 41 53 4c 20 41 20  |0         ASL A |
000030b0  20 20 20 20 20 20 20 20  5c 20 70 61 63 6b 65 74  |        \ packet|
000030c0  20 6e 75 6d 62 65 72 20  2a 20 32 0d 20 31 35 36  | number * 2. 156|
000030d0  30 20 20 20 20 20 20 20  20 20 54 41 59 0d 20 31  |0         TAY. 1|
000030e0  35 37 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |570         LDA |
000030f0  62 75 66 66 74 61 62 6c  65 2c 59 20 5c 20 6c 6f  |bufftable,Y \ lo|
00003100  61 64 20 62 75 66 66 65  72 20 61 64 64 72 65 73  |ad buffer addres|
00003110  73 2c 20 6c 73 62 0d 20  31 35 38 30 20 20 20 20  |s, lsb. 1580    |
00003120  20 20 20 20 20 53 54 41  20 77 6f 72 6b 73 70 61  |     STA workspa|
00003130  63 65 20 5c 20 73 74 6f  72 65 20 69 6e 20 7a 65  |ce \ store in ze|
00003140  72 6f 20 70 61 67 65 0d  20 31 35 39 30 20 20 20  |ro page. 1590   |
00003150  20 20 20 20 20 20 4c 44  41 20 62 75 66 66 74 61  |      LDA buffta|
00003160  62 6c 65 2b 31 2c 59 20  5c 20 6c 6f 61 64 20 62  |ble+1,Y \ load b|
00003170  75 66 66 65 72 20 61 64  64 72 65 73 73 2c 20 6d  |uffer address, m|
00003180  73 62 0d 20 31 36 30 30  20 20 20 20 20 20 20 20  |sb. 1600        |
00003190  20 53 54 41 20 77 6f 72  6b 73 70 61 63 65 2b 31  | STA workspace+1|
000031a0  20 5c 20 73 74 6f 72 65  20 69 6e 20 7a 65 72 6f  | \ store in zero|
000031b0  20 70 61 67 65 0d 20 31  36 31 30 20 20 20 20 20  | page. 1610     |
000031c0  20 20 20 20 50 4c 41 20  20 20 20 20 20 20 20 20  |    PLA         |
000031d0  20 20 5c 20 70 75 6c 6c  20 70 61 63 6b 65 74 20  |  \ pull packet |
000031e0  6e 75 6d 62 65 72 0d 20  31 36 32 30 20 20 20 20  |number. 1620    |
000031f0  20 20 20 20 20 43 4d 50  20 23 26 30 30 20 20 20  |     CMP #&00   |
00003200  20 20 20 5c 20 69 73 20  69 74 20 61 20 68 65 61  |   \ is it a hea|
00003210  64 65 72 3f 0d 20 31 36  33 30 20 20 20 20 20 20  |der?. 1630      |
00003220  20 20 20 42 4e 45 20 6e  6f 74 68 65 61 64 65 72  |   BNE notheader|
00003230  0d 20 31 36 34 30 20 20  20 20 20 20 20 20 20 54  |. 1640         T|
00003240  41 58 20 20 20 20 20 20  20 20 20 20 20 5c 20 69  |AX           \ i|
00003250  6e 69 74 20 69 6e 64 65  78 20 66 6f 72 20 68 61  |nit index for ha|
00003260  6d 6d 65 64 20 64 61 74  61 0d 20 31 36 35 30 20  |mmed data. 1650 |
00003270  2e 72 65 61 64 68 65 61  64 65 72 0d 20 31 36 36  |.readheader. 166|
00003280  30 20 20 20 20 20 20 20  20 20 4c 44 59 20 64 61  |0         LDY da|
00003290  74 61 72 65 67 20 20 20  5c 20 72 65 61 64 20 64  |tareg   \ read d|
000032a0  61 74 61 20 72 65 67 69  73 74 65 72 0d 20 31 36  |ata register. 16|
000032b0  37 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 68  |70         LDA h|
000032c0  61 6d 74 61 62 6c 65 2c  59 20 5c 20 64 65 2d 68  |amtable,Y \ de-h|
000032d0  61 6d 20 69 74 0d 20 31  36 38 30 20 20 20 20 20  |am it. 1680     |
000032e0  20 20 20 20 42 4d 49 20  63 6c 65 61 72 67 72 61  |    BMI cleargra|
000032f0  62 20 5c 20 73 74 6f 70  20 6c 6f 61 64 69 6e 67  |b \ stop loading|
00003300  20 69 66 20 65 72 72 6f  72 0d 20 31 36 39 30 20  | if error. 1690 |
00003310  20 20 20 20 20 20 20 20  53 54 41 20 62 75 66 66  |        STA buff|
00003320  65 72 2c 58 20 20 5c 20  73 74 6f 72 65 20 64 65  |er,X  \ store de|
00003330  2d 68 61 6d 6d 65 64 20  64 61 74 61 0d 20 31 37  |-hammed data. 17|
00003340  30 30 20 20 20 20 20 20  20 20 20 49 4e 58 20 20  |00         INX  |
00003350  20 20 20 20 20 20 20 20  20 5c 20 69 6e 63 72 65  |         \ incre|
00003360  6d 65 6e 74 20 69 6e 64  65 78 0d 20 31 37 31 30  |ment index. 1710|
00003370  20 20 20 20 20 20 20 20  20 43 50 58 20 23 26 30  |         CPX #&0|
00003380  38 20 20 20 20 20 20 5c  20 75 73 65 20 58 20 3d  |8      \ use X =|
00003390  20 30 2d 37 0d 20 31 37  32 30 20 20 20 20 20 20  | 0-7. 1720      |
000033a0  20 20 20 42 43 43 20 72  65 61 64 68 65 61 64 65  |   BCC readheade|
000033b0  72 20 5c 20 63 6f 6e 74  69 6e 75 65 20 72 65 61  |r \ continue rea|
000033c0  64 69 6e 67 20 68 61 6d  6d 65 64 20 64 61 74 61  |ding hammed data|
000033d0  0d 20 31 37 33 30 20 20  20 20 20 20 20 20 20 4c  |. 1730         L|
000033e0  44 41 20 67 72 61 62 66  6c 61 67 20 20 5c 20 61  |DA grabflag  \ a|
000033f0  72 65 20 77 65 20 6c 6f  61 64 69 6e 67 20 6f 72  |re we loading or|
00003400  20 73 65 61 72 63 68 69  6e 67 3f 0d 20 31 37 34  | searching?. 174|
00003410  30 20 20 20 20 20 20 20  20 20 42 45 51 20 63 68  |0         BEQ ch|
00003420  65 63 6b 73 74 61 72 74  20 5c 20 62 72 61 6e 63  |eckstart \ branc|
00003430  68 20 69 66 20 73 65 61  72 63 68 69 6e 67 0d 20  |h if searching. |
00003440  31 37 35 30 20 20 20 20  20 20 20 20 20 4c 44 41  |1750         LDA|
00003450  20 6d 61 67 61 7a 69 6e  65 20 20 5c 20 77 65 20  | magazine  \ we |
00003460  6d 75 73 74 20 62 65 20  6c 6f 61 64 69 6e 67 20  |must be loading |
00003470  61 20 70 61 67 65 0d 20  31 37 36 30 20 20 20 20  |a page. 1760    |
00003480  20 20 20 20 20 43 4d 50  20 75 73 65 72 6d 61 67  |     CMP usermag|
00003490  20 20 20 5c 20 69 73 20  69 74 20 74 68 65 20 6d  |   \ is it the m|
000034a0  61 67 61 7a 69 6e 65 20  77 65 20 77 61 6e 74 3f  |agazine we want?|
000034b0  0d 20 31 37 37 30 20 20  20 20 20 20 20 20 20 42  |. 1770         B|
000034c0  4e 45 20 65 78 69 74 20  20 20 20 20 20 5c 20 62  |NE exit      \ b|
000034d0  72 61 6e 63 68 20 69 66  20 6e 6f 74 20 74 68 65  |ranch if not the|
000034e0  20 6f 6e 65 20 77 65 20  77 61 6e 74 0d 20 31 37  | one we want. 17|
000034f0  38 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 62  |80         LDA b|
00003500  75 66 66 65 72 20 20 20  20 5c 20 6c 6f 77 20 62  |uffer    \ low b|
00003510  79 74 65 20 6f 66 20 70  61 67 65 20 6e 75 6d 62  |yte of page numb|
00003520  65 72 0d 20 31 37 39 30  20 20 20 20 20 20 20 20  |er. 1790        |
00003530  20 43 4d 50 20 75 73 65  72 70 61 67 65 20 20 5c  | CMP userpage  \|
00003540  20 69 73 20 74 68 69 73  20 74 68 65 20 73 61 6d  | is this the sam|
00003550  65 20 61 73 20 74 68 65  20 6f 6e 65 20 77 65 20  |e as the one we |
00003560  61 72 65 20 6c 6f 61 64  69 6e 67 3f 0d 20 31 38  |are loading?. 18|
00003570  30 30 20 20 20 20 20 20  20 20 20 42 4e 45 20 65  |00         BNE e|
00003580  6e 64 66 6f 75 6e 64 20  20 5c 20 65 6e 64 20 6f  |ndfound  \ end o|
00003590  66 20 70 61 67 65 20 77  68 65 6e 20 64 69 66 66  |f page when diff|
000035a0  65 72 65 6e 74 0d 20 31  38 31 30 20 20 20 20 20  |erent. 1810     |
000035b0  20 20 20 20 4c 44 41 20  62 75 66 66 65 72 2b 31  |    LDA buffer+1|
000035c0  0d 20 31 38 32 30 20 20  20 20 20 20 20 20 20 43  |. 1820         C|
000035d0  4d 50 20 75 73 65 72 70  61 67 65 2b 31 20 5c 20  |MP userpage+1 \ |
000035e0  69 73 20 74 68 69 73 20  74 68 65 20 73 61 6d 65  |is this the same|
000035f0  20 61 73 20 74 68 65 20  6f 6e 65 20 77 65 20 61  | as the one we a|
00003600  72 65 20 6c 6f 61 64 69  6e 67 3f 0d 20 31 38 33  |re loading?. 183|
00003610  30 20 20 20 20 20 20 20  20 20 42 45 51 20 65 78  |0         BEQ ex|
00003620  69 74 20 20 20 20 20 20  5c 20 6e 6f 74 20 65 6e  |it      \ not en|
00003630  64 20 6f 66 20 70 61 67  65 20 69 66 20 74 68 65  |d of page if the|
00003640  20 73 61 6d 65 0d 20 31  38 34 30 20 2e 65 6e 64  | same. 1840 .end|
00003650  66 6f 75 6e 64 0d 20 31  38 35 30 20 20 20 20 20  |found. 1850     |
00003660  20 20 20 20 4c 44 41 20  67 72 61 62 66 6c 61 67  |    LDA grabflag|
00003670  20 20 5c 20 67 72 61 62  66 6c 61 67 20 3d 20 65  |  \ grabflag = e|
00003680  69 74 68 65 72 20 23 26  34 30 20 6f 72 20 23 26  |ither #&40 or #&|
00003690  38 30 0d 20 31 38 36 30  20 20 20 20 20 20 20 20  |80. 1860        |
000036a0  20 4f 52 41 20 23 26 34  30 20 20 20 20 20 20 5c  | ORA #&40      \|
000036b0  20 67 72 61 62 66 6c 61  67 20 3d 20 23 26 43 30  | grabflag = #&C0|
000036c0  20 69 66 20 6b 65 79 77  6f 72 64 20 66 6f 75 6e  | if keyword foun|
000036d0  64 0d 20 31 38 37 30 20  20 20 20 20 20 20 20 20  |d. 1870         |
000036e0  53 54 41 20 67 72 61 62  66 6c 61 67 20 20 5c 20  |STA grabflag  \ |
000036f0  75 70 64 61 74 65 20 67  72 61 62 66 6c 61 67 0d  |update grabflag.|
00003700  20 31 38 38 30 20 20 20  20 20 20 20 20 20 42 4d  | 1880         BM|
00003710  49 20 65 78 69 74 20 20  20 20 20 20 5c 20 62 72  |I exit      \ br|
00003720  61 6e 63 68 20 69 66 20  67 72 61 62 66 6c 61 67  |anch if grabflag|
00003730  20 3d 20 23 26 43 30 0d  20 31 38 39 30 20 2e 63  | = #&C0. 1890 .c|
00003740  6c 65 61 72 67 72 61 62  0d 20 31 39 30 30 20 20  |leargrab. 1900  |
00003750  20 20 20 20 20 20 20 4a  53 52 20 63 6c 65 61 72  |       JSR clear|
00003760  6d 61 72 6b 20 5c 20 73  74 61 72 74 20 73 65 61  |mark \ start sea|
00003770  72 63 68 69 6e 67 20 61  67 61 69 6e 0d 20 31 39  |rching again. 19|
00003780  31 30 20 2e 65 78 69 74  0d 20 31 39 32 30 20 20  |10 .exit. 1920  |
00003790  20 20 20 20 20 20 20 52  54 53 0d 20 31 39 33 30  |       RTS. 1930|
000037a0  20 2e 63 68 65 63 6b 73  74 61 72 74 0d 20 31 39  | .checkstart. 19|
000037b0  34 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 62  |40         LDA b|
000037c0  75 66 66 65 72 2b 35 20  20 5c 20 63 68 65 63 6b  |uffer+5  \ check|
000037d0  20 66 6f 72 20 73 75 62  74 69 74 6c 65 0d 20 31  | for subtitle. 1|
000037e0  39 35 30 20 20 20 20 20  20 20 20 20 41 4e 44 20  |950         AND |
000037f0  23 26 30 38 20 20 20 20  20 20 5c 20 63 68 65 63  |#&08      \ chec|
00003800  6b 20 62 69 74 20 33 0d  20 31 39 36 30 20 20 20  |k bit 3. 1960   |
00003810  20 20 20 20 20 20 42 4e  45 20 64 69 73 70 6c 61  |      BNE displa|
00003820  79 20 20 20 5c 20 64 6f  6e 27 74 20 6c 6f 61 64  |y   \ don't load|
00003830  20 73 75 62 74 69 74 6c  65 0d 20 31 39 37 30 20  | subtitle. 1970 |
00003840  20 20 20 20 20 20 20 20  4c 44 41 20 62 75 66 66  |        LDA buff|
00003850  65 72 20 20 20 20 5c 20  6c 6f 77 20 6e 79 62 62  |er    \ low nybb|
00003860  6c 65 20 6f 66 20 63 75  72 72 65 6e 74 20 70 61  |le of current pa|
00003870  67 65 0d 20 31 39 38 30  20 20 20 20 20 20 20 20  |ge. 1980        |
00003880  20 43 4d 50 20 75 73 65  72 70 61 67 65 20 20 5c  | CMP userpage  \|
00003890  20 61 72 65 20 77 65 20  6c 6f 61 64 69 6e 67 20  | are we loading |
000038a0  69 74 3f 0d 20 31 39 39  30 20 20 20 20 20 20 20  |it?. 1990       |
000038b0  20 20 42 4e 45 20 6c 6f  61 64 69 74 20 20 20 20  |  BNE loadit    |
000038c0  5c 20 69 66 20 6e 6f 74  20 74 68 65 6e 20 6c 6f  |\ if not then lo|
000038d0  61 64 20 69 74 0d 20 32  30 30 30 20 20 20 20 20  |ad it. 2000     |
000038e0  20 20 20 20 4c 44 41 20  62 75 66 66 65 72 2b 31  |    LDA buffer+1|
000038f0  20 20 5c 20 68 69 67 68  20 6e 79 62 62 6c 65 20  |  \ high nybble |
00003900  6f 66 20 63 75 72 72 65  6e 74 20 70 61 67 65 0d  |of current page.|
00003910  20 32 30 31 30 20 20 20  20 20 20 20 20 20 43 4d  | 2010         CM|
00003920  50 20 75 73 65 72 70 61  67 65 2b 31 20 5c 20 61  |P userpage+1 \ a|
00003930  72 65 20 77 65 20 6c 6f  61 64 69 6e 67 20 69 74  |re we loading it|
00003940  3f 0d 20 32 30 32 30 20  20 20 20 20 20 20 20 20  |?. 2020         |
00003950  42 45 51 20 64 69 73 70  6c 61 79 20 20 20 5c 20  |BEQ display   \ |
00003960  69 66 20 6c 6f 61 64 69  6e 67 20 64 69 73 70 6c  |if loading displ|
00003970  61 79 20 68 65 61 64 65  72 2c 20 69 66 20 6e 6f  |ay header, if no|
00003980  74 20 6c 6f 61 64 20 70  61 67 65 0d 20 32 30 33  |t load page. 203|
00003990  30 20 2e 6c 6f 61 64 69  74 0d 20 32 30 34 30 20  |0 .loadit. 2040 |
000039a0  20 20 20 20 20 20 20 20  4c 44 41 20 23 26 34 30  |        LDA #&40|
000039b0  20 20 20 20 20 20 5c 20  70 61 67 65 20 6c 6f 61  |      \ page loa|
000039c0  64 69 6e 67 20 66 6c 61  67 0d 20 32 30 35 30 20  |ding flag. 2050 |
000039d0  20 20 20 20 20 20 20 20  53 54 41 20 67 72 61 62  |        STA grab|
000039e0  66 6c 61 67 20 20 5c 20  6c 6f 61 64 20 74 68 69  |flag  \ load thi|
000039f0  73 20 70 61 67 65 0d 20  32 30 36 30 20 20 20 20  |s page. 2060    |
00003a00  20 20 20 20 20 4c 44 41  20 6d 61 67 61 7a 69 6e  |     LDA magazin|
00003a10  65 20 20 5c 20 63 75 72  72 65 6e 74 20 6d 61 67  |e  \ current mag|
00003a20  61 7a 69 6e 65 20 6e 75  6d 62 65 72 0d 20 32 30  |azine number. 20|
00003a30  37 30 20 20 20 20 20 20  20 20 20 53 54 41 20 75  |70         STA u|
00003a40  73 65 72 6d 61 67 20 20  20 5c 20 6c 6f 61 64 20  |sermag   \ load |
00003a50  74 68 69 73 20 6d 61 67  61 7a 69 6e 65 0d 20 32  |this magazine. 2|
00003a60  30 38 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |080         LDA |
00003a70  62 75 66 66 65 72 20 20  20 20 5c 20 63 75 72 72  |buffer    \ curr|
00003a80  65 6e 74 20 70 61 67 65  2c 20 6c 6f 77 20 6e 79  |ent page, low ny|
00003a90  62 62 6c 65 0d 20 32 30  39 30 20 20 20 20 20 20  |bble. 2090      |
00003aa0  20 20 20 53 54 41 20 75  73 65 72 70 61 67 65 20  |   STA userpage |
00003ab0  20 5c 20 6c 6f 61 64 20  74 68 69 73 20 70 61 67  | \ load this pag|
00003ac0  65 0d 20 32 31 30 30 20  20 20 20 20 20 20 20 20  |e. 2100         |
00003ad0  4c 44 41 20 62 75 66 66  65 72 2b 31 20 20 5c 20  |LDA buffer+1  \ |
00003ae0  63 75 72 72 65 6e 74 20  70 61 67 65 2c 20 68 69  |current page, hi|
00003af0  67 68 20 6e 79 62 62 6c  65 0d 20 32 31 31 30 20  |gh nybble. 2110 |
00003b00  20 20 20 20 20 20 20 20  53 54 41 20 75 73 65 72  |        STA user|
00003b10  70 61 67 65 2b 31 20 5c  20 6c 6f 61 64 20 74 68  |page+1 \ load th|
00003b20  69 73 20 70 61 67 65 0d  20 32 31 32 30 20 2e 64  |is page. 2120 .d|
00003b30  69 73 70 6c 61 79 0d 20  32 31 33 30 20 5c 20 20  |isplay. 2130 \  |
00003b40  20 20 20 20 20 4c 53 52  20 62 75 66 66 65 72 2b  |     LSR buffer+|
00003b50  36 20 20 5c 20 63 68 65  63 6b 20 66 6f 72 20 73  |6  \ check for s|
00003b60  75 70 70 72 65 73 73 20  68 65 61 64 65 72 0d 20  |uppress header. |
00003b70  32 31 34 30 20 5c 20 20  20 20 20 20 20 42 43 53  |2140 \       BCS|
00003b80  20 65 78 69 74 20 20 20  20 20 20 5c 20 64 6f 6e  | exit      \ don|
00003b90  27 74 20 62 6f 74 68 65  72 20 77 69 74 68 20 73  |'t bother with s|
00003ba0  75 70 70 72 65 73 73 65  64 20 68 65 61 64 65 72  |uppressed header|
00003bb0  73 0d 20 32 31 35 30 20  20 20 20 20 20 20 20 20  |s. 2150         |
00003bc0  4c 44 59 20 23 26 30 38  20 20 20 20 20 20 5c 20  |LDY #&08      \ |
00003bd0  68 65 61 64 65 72 20 64  61 74 61 20 73 74 61 72  |header data star|
00003be0  74 73 20 61 74 20 62 79  74 65 20 38 0d 20 32 31  |ts at byte 8. 21|
00003bf0  36 30 20 20 20 20 20 20  20 20 20 42 4e 45 20 72  |60         BNE r|
00003c00  65 61 64 6d 6f 72 65 20  20 5c 20 67 6f 20 74 6f  |eadmore  \ go to|
00003c10  20 72 65 61 64 20 74 68  65 20 68 65 61 64 65 72  | read the header|
00003c20  0d 20 32 31 37 30 20 2e  6e 6f 74 68 65 61 64 65  |. 2170 .notheade|
00003c30  72 0d 20 32 31 38 30 20  20 20 20 20 20 20 20 20  |r. 2180         |
00003c40  4c 44 41 20 67 72 61 62  66 6c 61 67 20 20 5c 20  |LDA grabflag  \ |
00003c50  69 73 20 61 20 70 61 67  65 20 6c 6f 61 64 69 6e  |is a page loadin|
00003c60  67 3f 0d 20 32 31 39 30  20 20 20 20 20 20 20 20  |g?. 2190        |
00003c70  20 42 45 51 20 72 65 74  75 72 6e 20 20 20 20 5c  | BEQ return    \|
00003c80  20 72 65 74 75 72 6e 20  69 66 20 70 61 67 65 20  | return if page |
00003c90  6e 6f 74 20 6c 6f 61 64  69 6e 67 0d 20 32 32 30  |not loading. 220|
00003ca0  30 20 20 20 20 20 20 20  20 20 4c 44 41 20 6d 61  |0         LDA ma|
00003cb0  67 61 7a 69 6e 65 20 20  5c 20 69 73 20 74 68 65  |gazine  \ is the|
00003cc0  20 6d 61 67 61 7a 69 6e  65 20 6e 75 6d 62 65 72  | magazine number|
00003cd0  20 74 68 65 20 6f 6e 65  20 77 65 20 77 61 6e 74  | the one we want|
00003ce0  3f 0d 20 32 32 31 30 20  20 20 20 20 20 20 20 20  |?. 2210         |
00003cf0  43 4d 50 20 75 73 65 72  6d 61 67 20 20 20 5c 20  |CMP usermag   \ |
00003d00  63 6f 6d 70 61 72 65 20  77 69 74 68 20 74 68 65  |compare with the|
00003d10  20 6f 6e 65 20 77 65 20  61 72 65 20 6c 6f 61 64  | one we are load|
00003d20  69 6e 67 0d 20 32 32 32  30 20 20 20 20 20 20 20  |ing. 2220       |
00003d30  20 20 42 4e 45 20 72 65  74 75 72 6e 20 20 20 20  |  BNE return    |
00003d40  5c 20 72 65 74 75 72 6e  20 69 66 20 64 69 66 66  |\ return if diff|
00003d50  65 72 65 6e 74 20 6d 61  67 61 7a 69 6e 65 0d 20  |erent magazine. |
00003d60  32 32 33 30 20 20 20 20  20 20 20 20 20 4c 44 59  |2230         LDY|
00003d70  20 23 26 30 30 20 20 20  20 20 20 5c 20 72 65 61  | #&00      \ rea|
00003d80  64 20 62 79 74 65 73 20  30 20 2d 20 33 39 0d 20  |d bytes 0 - 39. |
00003d90  32 32 34 30 20 2e 72 65  61 64 6d 6f 72 65 0d 20  |2240 .readmore. |
00003da0  32 32 35 30 20 20 20 20  20 20 20 20 20 4c 44 41  |2250         LDA|
00003db0  20 64 61 74 61 72 65 67  20 20 20 5c 20 72 65 61  | datareg   \ rea|
00003dc0  64 20 64 61 74 61 20 72  65 67 69 73 74 65 72 0d  |d data register.|
00003dd0  20 32 32 36 30 20 20 20  20 20 20 20 20 20 4f 52  | 2260         OR|
00003de0  41 20 23 26 38 30 20 20  20 20 20 20 5c 20 73 65  |A #&80      \ se|
00003df0  74 20 62 69 74 20 37 20  66 6f 72 20 64 69 73 70  |t bit 7 for disp|
00003e00  6c 61 79 0d 20 32 32 37  30 20 20 20 20 20 20 20  |lay. 2270       |
00003e10  20 20 53 54 41 20 28 77  6f 72 6b 73 70 61 63 65  |  STA (workspace|
00003e20  29 2c 59 20 5c 20 73 74  6f 72 65 20 69 6e 20 62  |),Y \ store in b|
00003e30  75 66 66 65 72 0d 20 32  32 38 30 20 20 20 20 20  |uffer. 2280     |
00003e40  20 20 20 20 49 4e 59 20  20 20 20 20 20 20 20 20  |    INY         |
00003e50  20 20 5c 20 69 6e 63 72  65 6d 65 6e 74 20 69 6e  |  \ increment in|
00003e60  64 65 78 0d 20 32 32 39  30 20 20 20 20 20 20 20  |dex. 2290       |
00003e70  20 20 43 50 59 20 23 26  32 38 20 20 20 20 20 20  |  CPY #&28      |
00003e80  5c 20 64 65 63 69 6d 61  6c 20 34 30 0d 20 32 33  |\ decimal 40. 23|
00003e90  30 30 20 20 20 20 20 20  20 20 20 42 4e 45 20 72  |00         BNE r|
00003ea0  65 61 64 6d 6f 72 65 20  20 5c 20 6d 6f 72 65 20  |eadmore  \ more |
00003eb0  64 61 74 61 20 69 6e 20  74 68 69 73 20 70 61 63  |data in this pac|
00003ec0  6b 65 74 0d 20 32 33 31  30 20 20 20 20 20 20 20  |ket. 2310       |
00003ed0  20 20 4c 44 41 20 70 61  63 6b 65 74 20 20 20 20  |  LDA packet    |
00003ee0  5c 20 6c 6f 61 64 20 63  75 72 72 65 6e 74 20 70  |\ load current p|
00003ef0  61 63 6b 65 74 20 6e 75  6d 62 65 72 0d 20 32 33  |acket number. 23|
00003f00  32 30 20 20 20 20 20 20  20 20 20 42 45 51 20 72  |20         BEQ r|
00003f10  65 74 75 72 6e 20 20 20  20 5c 20 72 65 74 75 72  |eturn    \ retur|
00003f20  6e 20 69 66 20 68 65 61  64 65 72 0d 20 32 33 33  |n if header. 233|
00003f30  30 20 20 20 20 20 20 20  20 20 54 41 58 20 20 20  |0         TAX   |
00003f40  20 20 20 20 20 20 20 20  5c 20 41 20 69 73 20 67  |        \ A is g|
00003f50  72 65 61 74 65 72 20 74  68 61 6e 20 30 20 61 6e  |reater than 0 an|
00003f60  64 20 6c 65 73 73 20 74  68 61 6e 20 32 34 0d 20  |d less than 24. |
00003f70  32 33 34 30 20 20 20 20  20 20 20 20 20 53 54 41  |2340         STA|
00003f80  20 6d 61 72 6b 65 72 73  2c 58 20 5c 20 6d 61 72  | markers,X \ mar|
00003f90  6b 20 74 68 69 73 20 61  73 20 61 20 76 61 6c 69  |k this as a vali|
00003fa0  64 20 70 61 63 6b 65 74  0d 20 32 33 35 30 20 20  |d packet. 2350  |
00003fb0  20 20 20 20 20 20 20 42  49 54 20 67 72 61 62 66  |       BIT grabf|
00003fc0  6c 61 67 20 20 5c 20 68  61 76 65 20 77 65 20 66  |lag  \ have we f|
00003fd0  6f 75 6e 64 20 74 68 65  20 6b 65 79 77 6f 72 64  |ound the keyword|
00003fe0  20 79 65 74 3f 0d 20 32  33 36 30 20 20 20 20 20  | yet?. 2360     |
00003ff0  20 20 20 20 42 4d 49 20  72 65 74 75 72 6e 20 20  |    BMI return  |
00004000  20 20 5c 20 72 65 74 75  72 6e 20 69 66 20 77 6f  |  \ return if wo|
00004010  72 64 20 66 6f 75 6e 64  0d 20 32 33 37 30 20 20  |rd found. 2370  |
00004020  20 20 20 20 20 20 20 4a  53 52 20 77 6f 72 64 73  |       JSR words|
00004030  65 61 72 63 68 0d 20 32  33 38 30 20 2e 72 65 74  |earch. 2380 .ret|
00004040  75 72 6e 0d 20 32 33 39  30 20 20 20 20 20 20 20  |urn. 2390       |
00004050  20 20 52 54 53 0d 20 32  34 30 30 20 2e 63 68 65  |  RTS. 2400 .che|
00004060  63 6b 64 6f 75 62 6c 65  0d 20 32 34 31 30 20 20  |ckdouble. 2410  |
00004070  20 20 20 20 20 20 20 4c  44 58 20 23 26 30 31 20  |       LDX #&01 |
00004080  20 20 20 20 20 5c 20 73  63 72 65 65 6e 20 72 6f  |     \ screen ro|
00004090  77 20 6e 75 6d 62 65 72  73 20 31 2d 32 33 0d 20  |w numbers 1-23. |
000040a0  32 34 32 30 20 2e 6e 65  78 74 63 6f 6c 75 6d 6e  |2420 .nextcolumn|
000040b0  0d 20 32 34 33 30 20 20  20 20 20 20 20 20 20 4c  |. 2430         L|
000040c0  44 41 20 6d 61 72 6b 65  72 73 2c 58 0d 20 32 34  |DA markers,X. 24|
000040d0  34 30 20 20 20 20 20 20  20 20 20 42 4d 49 20 63  |40         BMI c|
000040e0  61 72 72 79 73 65 74 0d  20 32 34 35 30 20 20 20  |arryset. 2450   |
000040f0  20 20 20 20 20 20 4c 44  59 20 23 26 30 30 20 20  |      LDY #&00  |
00004100  20 20 20 20 5c 20 73 63  72 65 65 6e 20 63 6f 6c  |    \ screen col|
00004110  75 6d 6e 20 6e 75 6d 62  65 72 73 20 30 2d 34 30  |umn numbers 0-40|
00004120  0d 20 32 34 36 30 20 20  20 20 20 20 20 20 20 4a  |. 2460         J|
00004130  53 52 20 73 65 74 75 70  20 20 20 20 20 5c 20 73  |SR setup     \ s|
00004140  65 74 20 75 70 20 77 6f  72 6b 73 70 61 63 65 20  |et up workspace |
00004150  66 6f 72 20 69 6e 64 69  72 65 63 74 20 61 64 64  |for indirect add|
00004160  72 65 73 73 69 6e 67 0d  20 32 34 37 30 20 2e 73  |ressing. 2470 .s|
00004170  69 6e 67 6c 65 6c 6f 6f  70 0d 20 32 34 38 30 20  |ingleloop. 2480 |
00004180  20 20 20 20 20 20 20 20  4c 44 41 20 28 77 6f 72  |        LDA (wor|
00004190  6b 73 70 61 63 65 29 2c  59 0d 20 32 34 39 30 20  |kspace),Y. 2490 |
000041a0  20 20 20 20 20 20 20 20  4a 53 52 20 63 6f 6e 63  |        JSR conc|
000041b0  65 61 6c 20 20 20 5c 20  63 68 65 63 6b 20 66 6f  |eal   \ check fo|
000041c0  72 20 63 6f 6e 63 65 61  6c 65 64 20 64 69 73 70  |r concealed disp|
000041d0  6c 61 79 0d 20 32 35 30  30 20 20 20 20 20 20 20  |lay. 2500       |
000041e0  20 20 43 4d 50 20 23 26  38 44 20 20 20 20 20 20  |  CMP #&8D      |
000041f0  5c 20 54 54 58 20 64 6f  75 62 6c 65 20 68 65 69  |\ TTX double hei|
00004200  67 68 74 20 63 68 61 72  61 63 74 65 72 0d 20 32  |ght character. 2|
00004210  35 31 30 20 20 20 20 20  20 20 20 20 42 45 51 20  |510         BEQ |
00004220  64 6f 75 62 6c 65 68 65  69 67 68 74 0d 20 32 35  |doubleheight. 25|
00004230  32 30 20 20 20 20 20 20  20 20 20 49 4e 59 0d 20  |20         INY. |
00004240  32 35 33 30 20 20 20 20  20 20 20 20 20 43 50 59  |2530         CPY|
00004250  20 23 26 32 38 20 20 20  20 20 20 5c 20 64 65 63  | #&28      \ dec|
00004260  69 6d 61 6c 20 34 30 0d  20 32 35 34 30 20 20 20  |imal 40. 2540   |
00004270  20 20 20 20 20 20 42 43  43 20 73 69 6e 67 6c 65  |      BCC single|
00004280  6c 6f 6f 70 0d 20 32 35  35 30 20 2e 63 61 72 72  |loop. 2550 .carr|
00004290  79 73 65 74 0d 20 32 35  36 30 20 20 20 20 20 20  |yset. 2560      |
000042a0  20 20 20 49 4e 58 0d 20  32 35 37 30 20 20 20 20  |   INX. 2570    |
000042b0  20 20 20 20 20 43 50 58  20 23 26 31 37 20 20 20  |     CPX #&17   |
000042c0  20 20 20 5c 20 64 65 63  69 6d 61 6c 20 32 33 0d  |   \ decimal 23.|
000042d0  20 32 35 38 30 20 20 20  20 20 20 20 20 20 42 43  | 2580         BC|
000042e0  43 20 6e 65 78 74 63 6f  6c 75 6d 6e 0d 20 32 35  |C nextcolumn. 25|
000042f0  39 30 20 20 20 20 20 20  20 20 20 52 54 53 0d 20  |90         RTS. |
00004300  32 36 30 30 20 2e 64 6f  75 62 6c 65 68 65 69 67  |2600 .doubleheig|
00004310  68 74 0d 20 32 36 31 30  20 20 20 20 20 20 20 20  |ht. 2610        |
00004320  20 4c 44 59 20 23 26 30  30 0d 20 32 36 32 30 20  | LDY #&00. 2620 |
00004330  20 20 20 20 20 20 20 20  54 58 41 0d 20 32 36 33  |        TXA. 263|
00004340  30 20 20 20 20 20 20 20  20 20 50 48 41 20 20 20  |0         PHA   |
00004350  20 20 20 20 20 20 20 20  5c 20 73 74 6f 72 65 20  |        \ store |
00004360  72 6f 77 20 6e 75 6d 62  65 72 0d 20 32 36 34 30  |row number. 2640|
00004370  20 20 20 20 20 20 20 20  20 49 4e 58 0d 20 32 36  |         INX. 26|
00004380  35 30 20 20 20 20 20 20  20 20 20 54 58 41 0d 20  |50         TXA. |
00004390  32 36 36 30 20 20 20 20  20 20 20 20 20 53 54 41  |2660         STA|
000043a0  20 6d 61 72 6b 65 72 73  2c 58 0d 20 32 36 37 30  | markers,X. 2670|
000043b0  20 20 20 20 20 20 20 20  20 41 53 4c 20 41 20 20  |         ASL A  |
000043c0  20 20 20 20 20 20 20 5c  20 28 72 6f 77 20 6e 75  |       \ (row nu|
000043d0  6d 62 65 72 20 2b 20 31  29 20 2a 20 32 0d 20 32  |mber + 1) * 2. 2|
000043e0  36 38 30 20 20 20 20 20  20 20 20 20 54 41 58 0d  |680         TAX.|
000043f0  20 32 36 39 30 20 20 20  20 20 20 20 20 20 4c 44  | 2690         LD|
00004400  41 20 62 75 66 66 74 61  62 6c 65 2c 58 0d 20 32  |A bufftable,X. 2|
00004410  37 30 30 20 20 20 20 20  20 20 20 20 53 54 41 20  |700         STA |
00004420  64 65 73 74 69 6e 61 74  69 6f 6e 0d 20 32 37 31  |destination. 271|
00004430  30 20 20 20 20 20 20 20  20 20 49 4e 58 0d 20 32  |0         INX. 2|
00004440  37 32 30 20 20 20 20 20  20 20 20 20 4c 44 41 20  |720         LDA |
00004450  62 75 66 66 74 61 62 6c  65 2c 58 0d 20 32 37 33  |bufftable,X. 273|
00004460  30 20 20 20 20 20 20 20  20 20 53 54 41 20 64 65  |0         STA de|
00004470  73 74 69 6e 61 74 69 6f  6e 2b 31 0d 20 32 37 34  |stination+1. 274|
00004480  30 20 20 20 20 20 20 20  20 20 50 4c 41 0d 20 32  |0         PLA. 2|
00004490  37 35 30 20 20 20 20 20  20 20 20 20 54 41 58 20  |750         TAX |
000044a0  20 20 20 20 20 20 20 20  20 20 5c 20 72 65 73 74  |          \ rest|
000044b0  6f 72 65 20 72 6f 77 20  6e 75 6d 62 65 72 0d 20  |ore row number. |
000044c0  32 37 36 30 20 2e 64 6f  75 62 6c 65 6c 6f 6f 70  |2760 .doubleloop|
000044d0  0d 20 32 37 37 30 20 20  20 20 20 20 20 20 20 4c  |. 2770         L|
000044e0  44 41 20 28 77 6f 72 6b  73 70 61 63 65 29 2c 59  |DA (workspace),Y|
000044f0  0d 20 32 37 38 30 20 20  20 20 20 20 20 20 20 4a  |. 2780         J|
00004500  53 52 20 63 6f 6e 63 65  61 6c 20 20 20 5c 20 63  |SR conceal   \ c|
00004510  68 65 63 6b 20 66 6f 72  20 63 6f 6e 63 65 61 6c  |heck for conceal|
00004520  65 64 20 64 69 73 70 6c  61 79 0d 20 32 37 39 30  |ed display. 2790|
00004530  20 20 20 20 20 20 20 20  20 53 54 41 20 28 64 65  |         STA (de|
00004540  73 74 69 6e 61 74 69 6f  6e 29 2c 59 0d 20 32 38  |stination),Y. 28|
00004550  30 30 20 20 20 20 20 20  20 20 20 49 4e 59 0d 20  |00         INY. |
00004560  32 38 31 30 20 20 20 20  20 20 20 20 20 43 50 59  |2810         CPY|
00004570  20 23 26 32 38 20 20 20  20 20 20 5c 20 64 65 63  | #&28      \ dec|
00004580  69 6d 61 6c 20 34 30 0d  20 32 38 32 30 20 20 20  |imal 40. 2820   |
00004590  20 20 20 20 20 20 42 43  43 20 64 6f 75 62 6c 65  |      BCC double|
000045a0  6c 6f 6f 70 0d 20 32 38  33 30 20 20 20 20 20 20  |loop. 2830      |
000045b0  20 20 20 49 4e 58 0d 20  32 38 34 30 20 20 20 20  |   INX. 2840    |
000045c0  20 20 20 20 20 43 50 58  20 23 26 31 37 20 20 20  |     CPX #&17   |
000045d0  20 20 20 5c 20 64 65 63  69 6d 61 6c 20 32 33 0d  |   \ decimal 23.|
000045e0  20 32 38 35 30 20 20 20  20 20 20 20 20 20 42 43  | 2850         BC|
000045f0  43 20 63 61 72 72 79 73  65 74 0d 20 32 38 36 30  |C carryset. 2860|
00004600  20 20 20 20 20 20 20 20  20 52 54 53 0d 20 32 38  |         RTS. 28|
00004610  37 30 20 2e 63 6f 6e 63  65 61 6c 0d 20 32 38 38  |70 .conceal. 288|
00004620  30 20 20 20 20 20 20 20  20 20 43 4d 50 20 23 26  |0         CMP #&|
00004630  39 38 20 20 20 20 20 20  5c 20 54 54 58 20 63 6f  |98      \ TTX co|
00004640  6e 63 65 61 6c 20 64 69  73 70 6c 61 79 20 63 68  |nceal display ch|
00004650  61 72 61 63 74 65 72 0d  20 32 38 39 30 20 20 20  |aracter. 2890   |
00004660  20 20 20 20 20 20 42 4e  45 20 67 6f 62 61 63 6b  |      BNE goback|
00004670  0d 20 32 39 30 30 20 20  20 20 20 20 20 20 20 4c  |. 2900         L|
00004680  44 41 20 23 41 53 43 28  22 20 22 29 20 5c 20 73  |DA #ASC(" ") \ s|
00004690  75 62 73 74 69 74 75 74  65 20 77 69 74 68 20 61  |ubstitute with a|
000046a0  20 73 70 61 63 65 0d 20  32 39 31 30 20 20 20 20  | space. 2910    |
000046b0  20 20 20 20 20 53 54 41  20 28 77 6f 72 6b 73 70  |     STA (worksp|
000046c0  61 63 65 29 2c 59 0d 20  32 39 32 30 20 2e 67 6f  |ace),Y. 2920 .go|
000046d0  62 61 63 6b 0d 20 32 39  33 30 20 20 20 20 20 20  |back. 2930      |
000046e0  20 20 20 52 54 53 0d 20  32 39 34 30 20 2e 73 65  |   RTS. 2940 .se|
000046f0  74 75 70 0d 20 32 39 35  30 20 20 20 20 20 20 20  |tup. 2950       |
00004700  20 20 54 58 41 0d 20 32  39 36 30 20 20 20 20 20  |  TXA. 2960     |
00004710  20 20 20 20 50 48 41 20  20 20 20 20 20 20 20 20  |    PHA         |
00004720  20 20 5c 20 73 74 6f 72  65 20 72 6f 77 20 6e 75  |  \ store row nu|
00004730  6d 62 65 72 0d 20 32 39  37 30 20 20 20 20 20 20  |mber. 2970      |
00004740  20 20 20 41 53 4c 20 41  20 20 20 20 20 20 20 20  |   ASL A        |
00004750  20 5c 20 28 72 6f 77 20  6e 75 6d 62 65 72 29 20  | \ (row number) |
00004760  2a 20 32 0d 20 32 39 38  30 20 20 20 20 20 20 20  |* 2. 2980       |
00004770  20 20 54 41 58 0d 20 32  39 39 30 20 20 20 20 20  |  TAX. 2990     |
00004780  20 20 20 20 4c 44 41 20  62 75 66 66 74 61 62 6c  |    LDA bufftabl|
00004790  65 2c 58 0d 20 33 30 30  30 20 20 20 20 20 20 20  |e,X. 3000       |
000047a0  20 20 53 54 41 20 77 6f  72 6b 73 70 61 63 65 0d  |  STA workspace.|
000047b0  20 33 30 31 30 20 20 20  20 20 20 20 20 20 49 4e  | 3010         IN|
000047c0  58 0d 20 33 30 32 30 20  20 20 20 20 20 20 20 20  |X. 3020         |
000047d0  4c 44 41 20 62 75 66 66  74 61 62 6c 65 2c 58 0d  |LDA bufftable,X.|
000047e0  20 33 30 33 30 20 20 20  20 20 20 20 20 20 53 54  | 3030         ST|
000047f0  41 20 77 6f 72 6b 73 70  61 63 65 2b 31 0d 20 33  |A workspace+1. 3|
00004800  30 34 30 20 20 20 20 20  20 20 20 20 50 4c 41 0d  |040         PLA.|
00004810  20 33 30 35 30 20 20 20  20 20 20 20 20 20 54 41  | 3050         TA|
00004820  58 20 20 20 20 20 20 20  20 20 20 20 5c 20 72 65  |X           \ re|
00004830  73 74 6f 72 65 20 72 6f  77 20 6e 75 6d 62 65 72  |store row number|
00004840  0d 20 33 30 36 30 20 20  20 20 20 20 20 20 20 52  |. 3060         R|
00004850  54 53 0d 20 33 30 37 30  20 2e 74 72 61 6e 73 66  |TS. 3070 .transf|
00004860  65 72 0d 20 33 30 38 30  20 20 20 20 20 20 20 20  |er. 3080        |
00004870  20 4c 44 41 20 23 26 30  30 0d 20 33 30 39 30 20  | LDA #&00. 3090 |
00004880  20 20 20 20 20 20 20 20  54 41 58 0d 20 33 31 30  |        TAX. 310|
00004890  30 20 20 20 20 20 20 20  20 20 4c 44 59 20 23 26  |0         LDY #&|
000048a0  30 32 0d 20 33 31 31 30  20 20 20 20 20 20 20 20  |02. 3110        |
000048b0  20 4a 53 52 20 76 64 75  33 31 20 20 20 20 20 5c  | JSR vdu31     \|
000048c0  20 56 44 55 20 33 31 2c  32 2c 30 0d 20 33 31 32  | VDU 31,2,0. 312|
000048d0  30 20 20 20 20 20 20 20  20 20 4c 44 41 20 23 41  |0         LDA #A|
000048e0  53 43 28 22 50 22 29 0d  20 33 31 33 30 20 20 20  |SC("P"). 3130   |
000048f0  20 20 20 20 20 20 4a 53  52 20 6f 73 77 72 63 68  |      JSR oswrch|
00004900  20 20 20 20 5c 20 73 74  61 72 74 20 70 72 69 6e  |    \ start prin|
00004910  74 69 6e 67 20 70 61 67  65 20 6e 75 6d 62 65 72  |ting page number|
00004920  0d 20 33 31 34 30 20 20  20 20 20 20 20 20 20 4c  |. 3140         L|
00004930  44 58 20 23 26 30 46 20  20 20 20 20 20 5c 20 64  |DX #&0F      \ d|
00004940  65 63 69 6d 61 6c 20 31  35 0d 20 33 31 35 30 20  |ecimal 15. 3150 |
00004950  2e 6e 75 6d 62 65 72 6c  6f 6f 70 0d 20 33 31 36  |.numberloop. 316|
00004960  30 20 20 20 20 20 20 20  20 20 4c 44 41 20 62 75  |0         LDA bu|
00004970  66 66 65 72 2c 58 20 20  5c 20 63 68 65 61 74 20  |ffer,X  \ cheat |
00004980  62 79 20 67 65 74 74 69  6e 67 20 70 61 67 65 20  |by getting page |
00004990  6e 75 6d 62 65 72 20 66  72 6f 6d 20 68 65 61 64  |number from head|
000049a0  65 72 0d 20 33 31 37 30  20 20 20 20 20 20 20 20  |er. 3170        |
000049b0  20 4a 53 52 20 6f 73 77  72 63 68 0d 20 33 31 38  | JSR oswrch. 318|
000049c0  30 20 20 20 20 20 20 20  20 20 49 4e 58 0d 20 33  |0         INX. 3|
000049d0  31 39 30 20 20 20 20 20  20 20 20 20 43 50 58 20  |190         CPX |
000049e0  23 26 31 32 0d 20 33 32  30 30 20 20 20 20 20 20  |#&12. 3200      |
000049f0  20 20 20 42 43 43 20 6e  75 6d 62 65 72 6c 6f 6f  |   BCC numberloo|
00004a00  70 20 5c 20 70 72 69 6e  74 20 33 20 70 61 67 65  |p \ print 3 page|
00004a10  20 62 79 74 65 73 20 66  72 6f 6d 20 68 65 61 64  | bytes from head|
00004a20  65 72 0d 20 33 32 31 30  20 20 20 20 20 20 20 20  |er. 3210        |
00004a30  20 4c 44 58 20 23 26 30  31 20 20 20 20 20 20 5c  | LDX #&01      \|
00004a40  20 73 63 72 65 65 6e 20  72 6f 77 73 20 31 2d 32  | screen rows 1-2|
00004a50  33 0d 20 33 32 32 30 20  2e 6e 65 78 74 6c 69 6e  |3. 3220 .nextlin|
00004a60  65 0d 20 33 32 33 30 20  20 20 20 20 20 20 20 20  |e. 3230         |
00004a70  4c 44 59 20 23 26 30 30  20 20 20 20 20 20 5c 20  |LDY #&00      \ |
00004a80  63 6f 6c 75 6d 6e 73 20  30 2d 33 39 0d 20 33 32  |columns 0-39. 32|
00004a90  34 30 20 20 20 20 20 20  20 20 20 4a 53 52 20 76  |40         JSR v|
00004aa0  64 75 33 31 20 20 20 20  20 5c 20 56 44 55 20 33  |du31     \ VDU 3|
00004ab0  31 2c 30 2c 31 2d 32 33  0d 20 33 32 35 30 20 20  |1,0,1-23. 3250  |
00004ac0  20 20 20 20 20 20 20 4c  44 41 20 6d 61 72 6b 65  |       LDA marke|
00004ad0  72 73 2c 58 20 5c 20 6c  6f 6f 6b 20 66 6f 72 20  |rs,X \ look for |
00004ae0  76 61 6c 69 64 20 70 61  63 6b 65 74 0d 20 33 32  |valid packet. 32|
00004af0  36 30 20 20 20 20 20 20  20 20 20 42 50 4c 20 6d  |60         BPL m|
00004b00  61 72 6b 66 6f 75 6e 64  20 5c 20 64 69 73 70 6c  |arkfound \ displ|
00004b10  61 79 20 76 61 6c 69 64  20 70 61 63 6b 65 74 73  |ay valid packets|
00004b20  20 6f 6e 6c 79 0d 20 33  32 37 30 20 20 20 20 20  | only. 3270     |
00004b30  20 20 20 20 4c 44 41 20  23 62 6c 61 6e 6b 73 20  |    LDA #blanks |
00004b40  4d 4f 44 20 32 35 36 20  5c 20 65 6c 73 65 20 64  |MOD 256 \ else d|
00004b50  69 73 70 6c 61 79 20 34  30 20 73 70 61 63 65 73  |isplay 40 spaces|
00004b60  0d 20 33 32 38 30 20 20  20 20 20 20 20 20 20 53  |. 3280         S|
00004b70  54 41 20 77 6f 72 6b 73  70 61 63 65 0d 20 33 32  |TA workspace. 32|
00004b80  39 30 20 20 20 20 20 20  20 20 20 4c 44 41 20 23  |90         LDA #|
00004b90  62 6c 61 6e 6b 73 20 44  49 56 20 32 35 36 0d 20  |blanks DIV 256. |
00004ba0  33 33 30 30 20 20 20 20  20 20 20 20 20 53 54 41  |3300         STA|
00004bb0  20 77 6f 72 6b 73 70 61  63 65 2b 31 0d 20 33 33  | workspace+1. 33|
00004bc0  31 30 20 20 20 20 20 20  20 20 20 4a 4d 50 20 77  |10         JMP w|
00004bd0  72 69 74 65 73 63 72 65  65 6e 0d 20 33 33 32 30  |ritescreen. 3320|
00004be0  20 2e 6d 61 72 6b 66 6f  75 6e 64 0d 20 33 33 33  | .markfound. 333|
00004bf0  30 20 20 20 20 20 20 20  20 20 4a 53 52 20 73 65  |0         JSR se|
00004c00  74 75 70 20 20 20 20 20  5c 20 73 65 74 20 75 70  |tup     \ set up|
00004c10  20 77 6f 72 6b 73 70 61  63 65 20 66 6f 72 20 69  | workspace for i|
00004c20  6e 64 69 72 65 63 74 20  61 64 64 72 65 73 73 69  |ndirect addressi|
00004c30  6e 67 0d 20 33 33 34 30  20 2e 77 72 69 74 65 73  |ng. 3340 .writes|
00004c40  63 72 65 65 6e 0d 20 33  33 35 30 20 20 20 20 20  |creen. 3350     |
00004c50  20 20 20 20 4c 44 41 20  28 77 6f 72 6b 73 70 61  |    LDA (workspa|
00004c60  63 65 29 2c 59 20 5c 20  6c 6f 61 64 20 64 61 74  |ce),Y \ load dat|
00004c70  61 20 66 72 6f 6d 20 62  75 66 66 65 72 0d 20 33  |a from buffer. 3|
00004c80  33 36 30 20 20 20 20 20  20 20 20 20 4a 53 52 20  |360         JSR |
00004c90  6f 73 77 72 63 68 20 20  20 20 5c 20 77 72 69 74  |oswrch    \ writ|
00004ca0  65 20 74 6f 20 73 63 72  65 65 6e 0d 20 33 33 37  |e to screen. 337|
00004cb0  30 20 20 20 20 20 20 20  20 20 49 4e 59 0d 20 33  |0         INY. 3|
00004cc0  33 38 30 20 20 20 20 20  20 20 20 20 43 50 59 20  |380         CPY |
00004cd0  23 26 32 38 20 20 20 20  20 20 5c 20 64 65 63 69  |#&28      \ deci|
00004ce0  6d 61 6c 20 34 30 0d 20  33 33 39 30 20 20 20 20  |mal 40. 3390    |
00004cf0  20 20 20 20 20 42 43 43  20 77 72 69 74 65 73 63  |     BCC writesc|
00004d00  72 65 65 6e 0d 20 33 34  30 30 20 20 20 20 20 20  |reen. 3400      |
00004d10  20 20 20 49 4e 58 0d 20  33 34 31 30 20 20 20 20  |   INX. 3410    |
00004d20  20 20 20 20 20 43 50 58  20 23 26 31 38 20 20 20  |     CPX #&18   |
00004d30  20 20 20 5c 20 64 65 63  69 6d 61 6c 20 32 34 0d  |   \ decimal 24.|
00004d40  20 33 34 32 30 20 20 20  20 20 20 20 20 20 42 43  | 3420         BC|
00004d50  43 20 6e 65 78 74 6c 69  6e 65 20 20 5c 20 6c 61  |C nextline  \ la|
00004d60  73 74 20 70 61 63 6b 65  74 20 6e 75 6d 62 65 72  |st packet number|
00004d70  20 3d 20 32 33 0d 20 33  34 33 30 20 20 20 20 20  | = 23. 3430     |
00004d80  20 20 20 20 52 54 53 0d  20 33 34 34 30 20 2e 76  |    RTS. 3440 .v|
00004d90  64 75 33 31 0d 20 33 34  35 30 20 20 20 20 20 20  |du31. 3450      |
00004da0  20 20 20 4c 44 41 20 23  26 31 46 20 20 20 20 20  |   LDA #&1F     |
00004db0  20 5c 20 64 65 63 69 6d  61 6c 20 33 31 0d 20 33  | \ decimal 31. 3|
00004dc0  34 36 30 20 20 20 20 20  20 20 20 20 4a 53 52 20  |460         JSR |
00004dd0  6f 73 77 72 63 68 0d 20  33 34 37 30 20 20 20 20  |oswrch. 3470    |
00004de0  20 20 20 20 20 54 59 41  0d 20 33 34 38 30 20 20  |     TYA. 3480  |
00004df0  20 20 20 20 20 20 20 4a  53 52 20 6f 73 77 72 63  |       JSR oswrc|
00004e00  68 0d 20 33 34 39 30 20  20 20 20 20 20 20 20 20  |h. 3490         |
00004e10  54 58 41 0d 20 33 35 30  30 20 20 20 20 20 20 20  |TXA. 3500       |
00004e20  20 20 4a 4d 50 20 6f 73  77 72 63 68 20 20 20 20  |  JMP oswrch    |
00004e30  5c 20 61 6e 64 20 72 65  74 75 72 6e 0d 20 33 35  |\ and return. 35|
00004e40  31 30 20 2e 77 6f 72 64  73 65 61 72 63 68 0d 20  |10 .wordsearch. |
00004e50  33 35 32 30 20 20 20 20  20 20 20 20 20 4c 44 58  |3520         LDX|
00004e60  20 23 26 30 30 20 20 20  20 20 20 5c 20 69 6e 64  | #&00      \ ind|
00004e70  65 78 20 66 6f 72 20 73  65 61 72 63 68 20 73 74  |ex for search st|
00004e80  72 69 6e 67 0d 20 33 35  33 30 20 20 20 20 20 20  |ring. 3530      |
00004e90  20 20 20 4c 44 59 20 23  26 30 30 20 20 20 20 20  |   LDY #&00     |
00004ea0  20 5c 20 69 6e 64 65 78  20 66 6f 72 20 70 61 63  | \ index for pac|
00004eb0  6b 65 74 0d 20 33 35 34  30 20 20 20 20 20 20 20  |ket. 3540       |
00004ec0  20 20 53 54 59 20 74 65  6d 70 79 20 20 20 20 20  |  STY tempy     |
00004ed0  5c 20 74 65 6d 70 6f 72  61 72 79 20 73 74 6f 72  |\ temporary stor|
00004ee0  65 20 66 6f 72 20 59 0d  20 33 35 35 30 20 2e 77  |e for Y. 3550 .w|
00004ef0  6f 72 64 6c 6f 6f 70 0d  20 33 35 36 30 20 20 20  |ordloop. 3560   |
00004f00  20 20 20 20 20 20 4c 44  41 20 73 65 61 72 63 68  |      LDA search|
00004f10  74 65 78 74 2c 58 0d 20  33 35 37 30 20 20 20 20  |text,X. 3570    |
00004f20  20 20 20 20 20 42 45 51  20 66 6f 75 6e 64 0d 20  |     BEQ found. |
00004f30  33 35 38 30 20 20 20 20  20 20 20 20 20 50 48 41  |3580         PHA|
00004f40  20 20 20 20 20 20 20 20  20 20 20 5c 20 73 61 76  |           \ sav|
00004f50  65 20 63 68 61 72 61 63  74 65 72 20 66 72 6f 6d  |e character from|
00004f60  20 6b 65 79 77 6f 72 64  0d 20 33 35 39 30 20 20  | keyword. 3590  |
00004f70  20 20 20 20 20 20 20 4c  44 41 20 28 77 6f 72 6b  |       LDA (work|
00004f80  73 70 61 63 65 29 2c 59  0d 20 33 36 30 30 20 20  |space),Y. 3600  |
00004f90  20 20 20 20 20 20 20 43  4d 50 20 23 26 45 31 20  |       CMP #&E1 |
00004fa0  20 20 20 20 20 5c 20 6c  6f 77 65 72 20 63 61 73  |     \ lower cas|
00004fb0  65 20 27 61 27 0d 20 33  36 31 30 20 20 20 20 20  |e 'a'. 3610     |
00004fc0  20 20 20 20 42 43 43 20  75 70 70 65 72 63 61 73  |    BCC uppercas|
00004fd0  65 20 5c 20 62 72 61 6e  63 68 20 69 66 20 75 70  |e \ branch if up|
00004fe0  70 65 72 20 63 61 73 65  0d 20 33 36 32 30 20 20  |per case. 3620  |
00004ff0  20 20 20 20 20 20 20 41  4e 44 20 23 26 44 46 20  |       AND #&DF |
00005000  20 20 20 20 20 5c 20 66  6f 72 63 65 20 6c 6f 77  |     \ force low|
00005010  65 72 20 74 6f 20 75 70  70 65 72 20 63 61 73 65  |er to upper case|
00005020  0d 20 33 36 33 30 20 2e  75 70 70 65 72 63 61 73  |. 3630 .uppercas|
00005030  65 0d 20 33 36 34 30 20  20 20 20 20 20 20 20 20  |e. 3640         |
00005040  53 54 41 20 73 65 61 72  63 68 66 6f 72 20 5c 20  |STA searchfor \ |
00005050  73 74 6f 72 65 20 63 68  61 72 61 63 74 65 72 20  |store character |
00005060  66 72 6f 6d 20 54 54 58  0d 20 33 36 35 30 20 20  |from TTX. 3650  |
00005070  20 20 20 20 20 20 20 50  4c 41 20 20 20 20 20 20  |       PLA      |
00005080  20 20 20 20 20 5c 20 72  65 73 74 6f 72 65 20 63  |     \ restore c|
00005090  68 61 72 61 63 74 65 72  20 66 72 6f 6d 20 6b 65  |haracter from ke|
000050a0  79 77 6f 72 64 0d 20 33  36 36 30 20 20 20 20 20  |yword. 3660     |
000050b0  20 20 20 20 43 4d 50 20  73 65 61 72 63 68 66 6f  |    CMP searchfo|
000050c0  72 0d 20 33 36 37 30 20  20 20 20 20 20 20 20 20  |r. 3670         |
000050d0  42 4e 45 20 6e 6f 74 66  6f 75 6e 64 20 20 5c 20  |BNE notfound  \ |
000050e0  62 72 61 6e 63 68 20 69  66 20 6b 65 79 77 6f 72  |branch if keywor|
000050f0  64 20 64 6f 65 73 20 6e  6f 74 20 6d 61 74 63 68  |d does not match|
00005100  0d 20 33 36 38 30 20 20  20 20 20 20 20 20 20 49  |. 3680         I|
00005110  4e 58 20 20 20 20 20 20  20 20 20 20 20 5c 20 69  |NX           \ i|
00005120  66 20 6d 61 74 63 68 65  64 20 6c 6f 6f 6b 20 61  |f matched look a|
00005130  74 20 6e 65 78 74 20 63  68 61 72 61 63 74 65 72  |t next character|
00005140  0d 20 33 36 39 30 20 20  20 20 20 20 20 20 20 49  |. 3690         I|
00005150  4e 59 0d 20 33 37 30 30  20 20 20 20 20 20 20 20  |NY. 3700        |
00005160  20 43 50 59 20 23 26 32  39 20 20 20 20 20 20 5c  | CPY #&29      \|
00005170  20 64 65 63 69 6d 61 6c  20 34 31 0d 20 33 37 31  | decimal 41. 371|
00005180  30 20 20 20 20 20 20 20  20 20 42 43 43 20 77 6f  |0         BCC wo|
00005190  72 64 6c 6f 6f 70 0d 20  33 37 32 30 20 2e 6e 6f  |rdloop. 3720 .no|
000051a0  74 66 6f 75 6e 64 0d 20  33 37 33 30 20 20 20 20  |tfound. 3730    |
000051b0  20 20 20 20 20 4c 44 58  20 23 26 30 30 20 20 20  |     LDX #&00   |
000051c0  20 20 20 5c 20 72 65 73  65 74 20 69 6e 64 65 78  |   \ reset index|
000051d0  20 6f 6e 20 6b 65 79 77  6f 72 64 0d 20 33 37 34  | on keyword. 374|
000051e0  30 20 20 20 20 20 20 20  20 20 49 4e 43 20 74 65  |0         INC te|
000051f0  6d 70 79 20 20 20 20 20  5c 20 69 6e 63 72 65 6d  |mpy     \ increm|
00005200  65 6e 74 20 69 6e 64 65  78 20 6f 6e 20 54 54 58  |ent index on TTX|
00005210  0d 20 33 37 35 30 20 20  20 20 20 20 20 20 20 4c  |. 3750         L|
00005220  44 59 20 74 65 6d 70 79  0d 20 33 37 36 30 20 20  |DY tempy. 3760  |
00005230  20 20 20 20 20 20 20 43  50 59 20 23 26 32 39 20  |       CPY #&29 |
00005240  20 20 20 20 20 5c 20 64  65 63 69 6d 61 6c 20 34  |     \ decimal 4|
00005250  31 0d 20 33 37 37 30 20  20 20 20 20 20 20 20 20  |1. 3770         |
00005260  42 43 43 20 77 6f 72 64  6c 6f 6f 70 20 20 5c 20  |BCC wordloop  \ |
00005270  62 72 61 6e 63 68 20 69  66 20 6d 6f 72 65 20 64  |branch if more d|
00005280  61 74 61 20 74 6f 20 74  65 73 74 0d 20 33 37 38  |ata to test. 378|
00005290  30 20 20 20 20 20 20 20  20 20 52 54 53 0d 20 33  |0         RTS. 3|
000052a0  37 39 30 20 2e 66 6f 75  6e 64 0d 20 33 38 30 30  |790 .found. 3800|
000052b0  20 20 20 20 20 20 20 20  20 4c 44 41 20 23 26 38  |         LDA #&8|
000052c0  30 20 20 20 20 20 20 5c  20 66 6c 61 67 20 6b 65  |0      \ flag ke|
000052d0  79 77 6f 72 64 20 66 6f  75 6e 64 0d 20 33 38 31  |yword found. 381|
000052e0  30 20 20 20 20 20 20 20  20 20 53 54 41 20 67 72  |0         STA gr|
000052f0  61 62 66 6c 61 67 20 20  5c 20 6b 65 79 77 6f 72  |abflag  \ keywor|
00005300  64 20 66 6f 75 6e 64 0d  20 33 38 32 30 20 20 20  |d found. 3820   |
00005310  20 20 20 20 20 20 52 54  53 0d 20 33 38 33 30 20  |      RTS. 3830 |
00005320  2e 63 6c 65 61 72 6d 61  72 6b 0d 20 33 38 34 30  |.clearmark. 3840|
00005330  20 20 20 20 20 20 20 20  20 4c 44 41 20 23 26 38  |         LDA #&8|
00005340  30 0d 20 33 38 35 30 20  20 20 20 20 20 20 20 20  |0. 3850         |
00005350  4c 44 58 20 23 26 31 37  20 20 20 20 20 20 5c 20  |LDX #&17      \ |
00005360  64 65 63 69 6d 61 6c 20  32 33 0d 20 33 38 36 30  |decimal 23. 3860|
00005370  20 2e 6c 6f 6f 70 6d 61  72 6b 0d 20 33 38 37 30  | .loopmark. 3870|
00005380  20 20 20 20 20 20 20 20  20 53 54 41 20 6d 61 72  |         STA mar|
00005390  6b 65 72 73 2c 58 0d 20  33 38 38 30 20 20 20 20  |kers,X. 3880    |
000053a0  20 20 20 20 20 44 45 58  0d 20 33 38 39 30 20 20  |     DEX. 3890  |
000053b0  20 20 20 20 20 20 20 42  4e 45 20 6c 6f 6f 70 6d  |       BNE loopm|
000053c0  61 72 6b 0d 20 33 39 30  30 20 20 20 20 20 20 20  |ark. 3900       |
000053d0  20 20 53 54 58 20 67 72  61 62 66 6c 61 67 20 20  |  STX grabflag  |
000053e0  5c 20 67 72 61 62 66 6c  61 67 20 3d 20 73 65 61  |\ grabflag = sea|
000053f0  72 63 68 69 6e 67 0d 20  33 39 31 30 20 20 20 20  |rching. 3910    |
00005400  20 20 20 20 20 4c 44 41  20 23 26 30 46 20 20 20  |     LDA #&0F   |
00005410  20 20 20 5c 20 65 6e 64  20 6f 66 20 70 61 67 65  |   \ end of page|
00005420  20 6d 61 72 6b 65 72 0d  20 33 39 32 30 20 20 20  | marker. 3920   |
00005430  20 20 20 20 20 20 53 54  41 20 75 73 65 72 70 61  |      STA userpa|
00005440  67 65 0d 20 33 39 33 30  20 20 20 20 20 20 20 20  |ge. 3930        |
00005450  20 53 54 41 20 75 73 65  72 70 61 67 65 2b 31 0d  | STA userpage+1.|
00005460  20 33 39 34 30 20 20 20  20 20 20 20 20 20 52 54  | 3940         RT|
00005470  53 0d 20 33 39 35 30 20  2e 6f 6c 64 69 72 71 32  |S. 3950 .oldirq2|
00005480  76 0d 20 33 39 36 30 20  20 20 20 20 20 20 20 20  |v. 3960         |
00005490  45 51 55 57 20 26 30 30  0d 20 33 39 37 30 20 2e  |EQUW &00. 3970 .|
000054a0  68 61 6d 74 61 62 6c 65  0d 20 33 39 38 30 20 20  |hamtable. 3980  |
000054b0  20 20 20 20 20 20 20 45  51 55 44 20 26 30 31 30  |       EQUD &010|
000054c0  31 46 46 30 31 0d 20 33  39 39 30 20 20 20 20 20  |1FF01. 3990     |
000054d0  20 20 20 20 45 51 55 44  20 26 46 46 30 31 30 30  |    EQUD &FF0100|
000054e0  46 46 0d 20 34 30 30 30  20 20 20 20 20 20 20 20  |FF. 4000        |
000054f0  20 45 51 55 44 20 26 46  46 30 31 30 32 46 46 0d  | EQUD &FF0102FF.|
00005500  20 34 30 31 30 20 20 20  20 20 20 20 20 20 45 51  | 4010         EQ|
00005510  55 44 20 26 30 37 46 46  46 46 30 41 0d 20 34 30  |UD &07FFFF0A. 40|
00005520  32 30 20 20 20 20 20 20  20 20 20 45 51 55 44 20  |20         EQUD |
00005530  26 46 46 30 31 30 30 46  46 0d 20 34 30 33 30 20  |&FF0100FF. 4030 |
00005540  20 20 20 20 20 20 20 20  45 51 55 44 20 26 30 30  |        EQUD &00|
00005550  46 46 30 30 30 30 0d 20  34 30 34 30 20 20 20 20  |FF0000. 4040    |
00005560  20 20 20 20 20 45 51 55  44 20 26 30 42 46 46 46  |     EQUD &0BFFF|
00005570  46 30 36 0d 20 34 30 35  30 20 20 20 20 20 20 20  |F06. 4050       |
00005580  20 20 45 51 55 44 20 26  46 46 30 33 30 30 46 46  |  EQUD &FF0300FF|
00005590  0d 20 34 30 36 30 20 20  20 20 20 20 20 20 20 45  |. 4060         E|
000055a0  51 55 44 20 26 46 46 30  31 30 43 46 46 0d 20 34  |QUD &FF010CFF. 4|
000055b0  30 37 30 20 20 20 20 20  20 20 20 20 45 51 55 44  |070         EQUD|
000055c0  20 26 30 37 46 46 46 46  30 34 0d 20 34 30 38 30  | &07FFFF04. 4080|
000055d0  20 20 20 20 20 20 20 20  20 45 51 55 44 20 26 30  |         EQUD &0|
000055e0  37 46 46 46 46 30 36 0d  20 34 30 39 30 20 20 20  |7FFFF06. 4090   |
000055f0  20 20 20 20 20 20 45 51  55 44 20 26 30 37 30 37  |      EQUD &0707|
00005600  30 37 46 46 0d 20 34 31  30 30 20 20 20 20 20 20  |07FF. 4100      |
00005610  20 20 20 45 51 55 44 20  26 30 35 46 46 46 46 30  |   EQUD &05FFFF0|
00005620  36 0d 20 34 31 31 30 20  20 20 20 20 20 20 20 20  |6. 4110         |
00005630  45 51 55 44 20 26 46 46  30 44 30 30 46 46 0d 20  |EQUD &FF0D00FF. |
00005640  34 31 32 30 20 20 20 20  20 20 20 20 20 45 51 55  |4120         EQU|
00005650  44 20 26 46 46 30 36 30  36 30 36 0d 20 34 31 33  |D &FF060606. 413|
00005660  30 20 20 20 20 20 20 20  20 20 45 51 55 44 20 26  |0         EQUD &|
00005670  30 37 46 46 46 46 30 36  0d 20 34 31 34 30 20 20  |07FFFF06. 4140  |
00005680  20 20 20 20 20 20 20 45  51 55 44 20 26 46 46 30  |       EQUD &FF0|
00005690  31 30 32 46 46 0d 20 34  31 35 30 20 20 20 20 20  |102FF. 4150     |
000056a0  20 20 20 20 45 51 55 44  20 26 30 39 46 46 46 46  |    EQUD &09FFFF|
000056b0  30 34 0d 20 34 31 36 30  20 20 20 20 20 20 20 20  |04. 4160        |
000056c0  20 45 51 55 44 20 26 30  32 46 46 30 32 30 32 0d  | EQUD &02FF0202.|
000056d0  20 34 31 37 30 20 20 20  20 20 20 20 20 20 45 51  | 4170         EQ|
000056e0  55 44 20 26 46 46 30 33  30 32 46 46 0d 20 34 31  |UD &FF0302FF. 41|
000056f0  38 30 20 20 20 20 20 20  20 20 20 45 51 55 44 20  |80         EQUD |
00005700  26 30 35 46 46 46 46 30  38 0d 20 34 31 39 30 20  |&05FFFF08. 4190 |
00005710  20 20 20 20 20 20 20 20  45 51 55 44 20 26 46 46  |        EQUD &FF|
00005720  30 33 30 30 46 46 0d 20  34 32 30 30 20 20 20 20  |0300FF. 4200    |
00005730  20 20 20 20 20 45 51 55  44 20 26 46 46 30 33 30  |     EQUD &FF030|
00005740  32 46 46 0d 20 34 32 31  30 20 20 20 20 20 20 20  |2FF. 4210       |
00005750  20 20 45 51 55 44 20 26  30 33 30 33 46 46 30 33  |  EQUD &0303FF03|
00005760  0d 20 34 32 32 30 20 20  20 20 20 20 20 20 20 45  |. 4220         E|
00005770  51 55 44 20 26 30 35 46  46 46 46 30 34 0d 20 34  |QUD &05FFFF04. 4|
00005780  32 33 30 20 20 20 20 20  20 20 20 20 45 51 55 44  |230         EQUD|
00005790  20 26 46 46 30 34 30 34  30 34 0d 20 34 32 34 30  | &FF040404. 4240|
000057a0  20 20 20 20 20 20 20 20  20 45 51 55 44 20 26 46  |         EQUD &F|
000057b0  46 30 46 30 32 46 46 0d  20 34 32 35 30 20 20 20  |F0F02FF. 4250   |
000057c0  20 20 20 20 20 20 45 51  55 44 20 26 30 37 46 46  |      EQUD &07FF|
000057d0  46 46 30 34 0d 20 34 32  36 30 20 20 20 20 20 20  |FF04. 4260      |
000057e0  20 20 20 45 51 55 44 20  26 30 35 30 35 30 35 46  |   EQUD &050505F|
000057f0  46 0d 20 34 32 37 30 20  20 20 20 20 20 20 20 20  |F. 4270         |
00005800  45 51 55 44 20 26 30 35  46 46 46 46 30 34 0d 20  |EQUD &05FFFF04. |
00005810  34 32 38 30 20 20 20 20  20 20 20 20 20 45 51 55  |4280         EQU|
00005820  44 20 26 30 35 46 46 46  46 30 36 0d 20 34 32 39  |D &05FFFF06. 429|
00005830  30 20 20 20 20 20 20 20  20 20 45 51 55 44 20 26  |0         EQUD &|
00005840  46 46 30 33 30 45 46 46  0d 20 34 33 30 30 20 20  |FF030EFF. 4300  |
00005850  20 20 20 20 20 20 20 45  51 55 44 20 26 46 46 30  |       EQUD &FF0|
00005860  31 30 43 46 46 0d 20 34  33 31 30 20 20 20 20 20  |10CFF. 4310     |
00005870  20 20 20 20 45 51 55 44  20 26 30 39 46 46 46 46  |    EQUD &09FFFF|
00005880  30 41 0d 20 34 33 32 30  20 20 20 20 20 20 20 20  |0A. 4320        |
00005890  20 45 51 55 44 20 26 30  42 46 46 46 46 30 41 0d  | EQUD &0BFFFF0A.|
000058a0  20 34 33 33 30 20 20 20  20 20 20 20 20 20 45 51  | 4330         EQ|
000058b0  55 44 20 26 46 46 30 41  30 41 30 41 0d 20 34 33  |UD &FF0A0A0A. 43|
000058c0  34 30 20 20 20 20 20 20  20 20 20 45 51 55 44 20  |40         EQUD |
000058d0  26 30 42 46 46 46 46 30  38 0d 20 34 33 35 30 20  |&0BFFFF08. 4350 |
000058e0  20 20 20 20 20 20 20 20  45 51 55 44 20 26 46 46  |        EQUD &FF|
000058f0  30 44 30 30 46 46 0d 20  34 33 36 30 20 20 20 20  |0D00FF. 4360    |
00005900  20 20 20 20 20 45 51 55  44 20 26 30 42 30 42 30  |     EQUD &0B0B0|
00005910  42 46 46 0d 20 34 33 37  30 20 20 20 20 20 20 20  |BFF. 4370       |
00005920  20 20 45 51 55 44 20 26  30 42 46 46 46 46 30 41  |  EQUD &0BFFFF0A|
00005930  0d 20 34 33 38 30 20 20  20 20 20 20 20 20 20 45  |. 4380         E|
00005940  51 55 44 20 26 30 43 46  46 30 43 30 43 0d 20 34  |QUD &0CFF0C0C. 4|
00005950  33 39 30 20 20 20 20 20  20 20 20 20 45 51 55 44  |390         EQUD|
00005960  20 26 46 46 30 44 30 43  46 46 0d 20 34 34 30 30  | &FF0D0CFF. 4400|
00005970  20 20 20 20 20 20 20 20  20 45 51 55 44 20 26 46  |         EQUD &F|
00005980  46 30 46 30 43 46 46 0d  20 34 34 31 30 20 20 20  |F0F0CFF. 4410   |
00005990  20 20 20 20 20 20 45 51  55 44 20 26 30 37 46 46  |      EQUD &07FF|
000059a0  46 46 30 41 0d 20 34 34  32 30 20 20 20 20 20 20  |FF0A. 4420      |
000059b0  20 20 20 45 51 55 44 20  26 46 46 30 44 30 43 46  |   EQUD &FF0D0CF|
000059c0  46 0d 20 34 34 33 30 20  20 20 20 20 20 20 20 20  |F. 4430         |
000059d0  45 51 55 44 20 26 30 44  30 44 46 46 30 44 0d 20  |EQUD &0D0DFF0D. |
000059e0  34 34 34 30 20 20 20 20  20 20 20 20 20 45 51 55  |4440         EQU|
000059f0  44 20 26 30 42 46 46 46  46 30 36 0d 20 34 34 35  |D &0BFFFF06. 445|
00005a00  30 20 20 20 20 20 20 20  20 20 45 51 55 44 20 26  |0         EQUD &|
00005a10  46 46 30 44 30 45 46 46  0d 20 34 34 36 30 20 20  |FF0D0EFF. 4460  |
00005a20  20 20 20 20 20 20 20 45  51 55 44 20 26 30 39 46  |       EQUD &09F|
00005a30  46 46 46 30 38 0d 20 34  34 37 30 20 20 20 20 20  |FFF08. 4470     |
00005a40  20 20 20 20 45 51 55 44  20 26 30 39 30 39 30 39  |    EQUD &090909|
00005a50  46 46 0d 20 34 34 38 30  20 20 20 20 20 20 20 20  |FF. 4480        |
00005a60  20 45 51 55 44 20 26 46  46 30 46 30 32 46 46 0d  | EQUD &FF0F02FF.|
00005a70  20 34 34 39 30 20 20 20  20 20 20 20 20 20 45 51  | 4490         EQ|
00005a80  55 44 20 26 30 39 46 46  46 46 30 41 0d 20 34 35  |UD &09FFFF0A. 45|
00005a90  30 30 20 20 20 20 20 20  20 20 20 45 51 55 44 20  |00         EQUD |
00005aa0  26 46 46 30 38 30 38 30  38 0d 20 34 35 31 30 20  |&FF080808. 4510 |
00005ab0  20 20 20 20 20 20 20 20  45 51 55 44 20 26 30 39  |        EQUD &09|
00005ac0  46 46 46 46 30 38 0d 20  34 35 32 30 20 20 20 20  |FFFF08. 4520    |
00005ad0  20 20 20 20 20 45 51 55  44 20 26 30 42 46 46 46  |     EQUD &0BFFF|
00005ae0  46 30 38 0d 20 34 35 33  30 20 20 20 20 20 20 20  |F08. 4530       |
00005af0  20 20 45 51 55 44 20 26  46 46 30 33 30 45 46 46  |  EQUD &FF030EFF|
00005b00  0d 20 34 35 34 30 20 20  20 20 20 20 20 20 20 45  |. 4540         E|
00005b10  51 55 44 20 26 46 46 30  46 30 43 46 46 0d 20 34  |QUD &FF0F0CFF. 4|
00005b20  35 35 30 20 20 20 20 20  20 20 20 20 45 51 55 44  |550         EQUD|
00005b30  20 26 30 39 46 46 46 46  30 34 0d 20 34 35 36 30  | &09FFFF04. 4560|
00005b40  20 20 20 20 20 20 20 20  20 45 51 55 44 20 26 30  |         EQUD &0|
00005b50  46 30 46 46 46 30 46 0d  20 34 35 37 30 20 20 20  |F0FFF0F. 4570   |
00005b60  20 20 20 20 20 20 45 51  55 44 20 26 46 46 30 46  |      EQUD &FF0F|
00005b70  30 45 46 46 0d 20 34 35  38 30 20 20 20 20 20 20  |0EFF. 4580      |
00005b80  20 20 20 45 51 55 44 20  26 30 35 46 46 46 46 30  |   EQUD &05FFFF0|
00005b90  38 0d 20 34 35 39 30 20  20 20 20 20 20 20 20 20  |8. 4590         |
00005ba0  45 51 55 44 20 26 46 46  30 44 30 45 46 46 0d 20  |EQUD &FF0D0EFF. |
00005bb0  34 36 30 30 20 20 20 20  20 20 20 20 20 45 51 55  |4600         EQU|
00005bc0  44 20 26 46 46 30 46 30  45 46 46 0d 20 34 36 31  |D &FF0F0EFF. 461|
00005bd0  30 20 20 20 20 20 20 20  20 20 45 51 55 44 20 26  |0         EQUD &|
00005be0  30 45 46 46 30 45 30 45  0d 20 34 36 32 30 20 2e  |0EFF0E0E. 4620 .|
00005bf0  62 75 66 66 74 61 62 6c  65 0d 20 34 36 33 30 20  |bufftable. 4630 |
00005c00  20 20 20 20 20 20 20 20  45 51 55 57 20 62 75 66  |        EQUW buf|
00005c10  66 65 72 0d 20 34 36 34  30 20 20 20 20 20 20 20  |fer. 4640       |
00005c20  20 20 45 51 55 57 20 62  75 66 66 65 72 2b 34 30  |  EQUW buffer+40|
00005c30  0d 20 34 36 35 30 20 20  20 20 20 20 20 20 20 45  |. 4650         E|
00005c40  51 55 57 20 62 75 66 66  65 72 2b 28 32 2a 34 30  |QUW buffer+(2*40|
00005c50  29 0d 20 34 36 36 30 20  20 20 20 20 20 20 20 20  |). 4660         |
00005c60  45 51 55 57 20 62 75 66  66 65 72 2b 28 33 2a 34  |EQUW buffer+(3*4|
00005c70  30 29 0d 20 34 36 37 30  20 20 20 20 20 20 20 20  |0). 4670        |
00005c80  20 45 51 55 57 20 62 75  66 66 65 72 2b 28 34 2a  | EQUW buffer+(4*|
00005c90  34 30 29 0d 20 34 36 38  30 20 20 20 20 20 20 20  |40). 4680       |
00005ca0  20 20 45 51 55 57 20 62  75 66 66 65 72 2b 28 35  |  EQUW buffer+(5|
00005cb0  2a 34 30 29 0d 20 34 36  39 30 20 20 20 20 20 20  |*40). 4690      |
00005cc0  20 20 20 45 51 55 57 20  62 75 66 66 65 72 2b 28  |   EQUW buffer+(|
00005cd0  36 2a 34 30 29 0d 20 34  37 30 30 20 20 20 20 20  |6*40). 4700     |
00005ce0  20 20 20 20 45 51 55 57  20 62 75 66 66 65 72 2b  |    EQUW buffer+|
00005cf0  28 37 2a 34 30 29 0d 20  34 37 31 30 20 20 20 20  |(7*40). 4710    |
00005d00  20 20 20 20 20 45 51 55  57 20 62 75 66 66 65 72  |     EQUW buffer|
00005d10  2b 28 38 2a 34 30 29 0d  20 34 37 32 30 20 20 20  |+(8*40). 4720   |
00005d20  20 20 20 20 20 20 45 51  55 57 20 62 75 66 66 65  |      EQUW buffe|
00005d30  72 2b 28 39 2a 34 30 29  0d 20 34 37 33 30 20 20  |r+(9*40). 4730  |
00005d40  20 20 20 20 20 20 20 45  51 55 57 20 62 75 66 66  |       EQUW buff|
00005d50  65 72 2b 28 31 30 2a 34  30 29 0d 20 34 37 34 30  |er+(10*40). 4740|
00005d60  20 20 20 20 20 20 20 20  20 45 51 55 57 20 62 75  |         EQUW bu|
00005d70  66 66 65 72 2b 28 31 31  2a 34 30 29 0d 20 34 37  |ffer+(11*40). 47|
00005d80  35 30 20 20 20 20 20 20  20 20 20 45 51 55 57 20  |50         EQUW |
00005d90  62 75 66 66 65 72 2b 28  31 32 2a 34 30 29 0d 20  |buffer+(12*40). |
00005da0  34 37 36 30 20 20 20 20  20 20 20 20 20 45 51 55  |4760         EQU|
00005db0  57 20 62 75 66 66 65 72  2b 28 31 33 2a 34 30 29  |W buffer+(13*40)|
00005dc0  0d 20 34 37 37 30 20 20  20 20 20 20 20 20 20 45  |. 4770         E|
00005dd0  51 55 57 20 62 75 66 66  65 72 2b 28 31 34 2a 34  |QUW buffer+(14*4|
00005de0  30 29 0d 20 34 37 38 30  20 20 20 20 20 20 20 20  |0). 4780        |
00005df0  20 45 51 55 57 20 62 75  66 66 65 72 2b 28 31 35  | EQUW buffer+(15|
00005e00  2a 34 30 29 0d 20 34 37  39 30 20 20 20 20 20 20  |*40). 4790      |
00005e10  20 20 20 45 51 55 57 20  62 75 66 66 65 72 2b 28  |   EQUW buffer+(|
00005e20  31 36 2a 34 30 29 0d 20  34 38 30 30 20 20 20 20  |16*40). 4800    |
00005e30  20 20 20 20 20 45 51 55  57 20 62 75 66 66 65 72  |     EQUW buffer|
00005e40  2b 28 31 37 2a 34 30 29  0d 20 34 38 31 30 20 20  |+(17*40). 4810  |
00005e50  20 20 20 20 20 20 20 45  51 55 57 20 62 75 66 66  |       EQUW buff|
00005e60  65 72 2b 28 31 38 2a 34  30 29 0d 20 34 38 32 30  |er+(18*40). 4820|
00005e70  20 20 20 20 20 20 20 20  20 45 51 55 57 20 62 75  |         EQUW bu|
00005e80  66 66 65 72 2b 28 31 39  2a 34 30 29 0d 20 34 38  |ffer+(19*40). 48|
00005e90  33 30 20 20 20 20 20 20  20 20 20 45 51 55 57 20  |30         EQUW |
00005ea0  62 75 66 66 65 72 2b 28  32 30 2a 34 30 29 0d 20  |buffer+(20*40). |
00005eb0  34 38 34 30 20 20 20 20  20 20 20 20 20 45 51 55  |4840         EQU|
00005ec0  57 20 62 75 66 66 65 72  2b 28 32 31 2a 34 30 29  |W buffer+(21*40)|
00005ed0  0d 20 34 38 35 30 20 20  20 20 20 20 20 20 20 45  |. 4850         E|
00005ee0  51 55 57 20 62 75 66 66  65 72 2b 28 32 32 2a 34  |QUW buffer+(22*4|
00005ef0  30 29 0d 20 34 38 36 30  20 20 20 20 20 20 20 20  |0). 4860        |
00005f00  20 45 51 55 57 20 62 75  66 66 65 72 2b 28 32 33  | EQUW buffer+(23|
00005f10  2a 34 30 29 0d 20 34 38  37 30 20 20 20 20 20 20  |*40). 4870      |
00005f20  20 20 20 45 51 55 57 20  62 75 66 66 65 72 2b 28  |   EQUW buffer+(|
00005f30  32 34 2a 34 30 29 0d 20  34 38 38 30 20 2e 62 6c  |24*40). 4880 .bl|
00005f40  61 6e 6b 73 0d 20 34 38  39 30 20 20 20 20 20 20  |anks. 4890      |
00005f50  20 20 20 45 51 55 53 20  53 54 52 49 4e 47 24 28  |   EQUS STRING$(|
00005f60  34 30 2c 22 20 22 29 0d  20 34 39 30 30 20 5d 0d  |40," "). 4900 ].|
00005f70  20 34 39 31 30 20 4e 45  58 54 0d 20 34 39 32 30  | 4910 NEXT. 4920|
00005f80  20 45 4e 44 50 52 4f 43  0d                       | ENDPROC.|
00005f89
01-04-89/T\TTX04.m0
01-04-89/T\TTX04.m1
01-04-89/T\TTX04.m2
01-04-89/T\TTX04.m4
01-04-89/T\TTX04.m5