home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Transactor
/
Transactor_17_1987_Transactor_Publishing.d64
/
help!.pal
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
18KB
|
889 lines
10 open 1,8,15,"s0:t-help!": close 1
11 open 2,8,1,"0:t-help!"
12 sys 700
13 .opt o2
14 .bas
15 rem the transactor help utility
16 rem nick sullivan and chris zamara
17 rem october 1986
18 rem (c) 1986 the transactor
19 rem okay to copy, not to sell
20 :
21 rem do not alter the length of any
22 rem line after program is assembled
23 :
24 a=00000: rem 5 digit link base addr
25 sys"init",a: clr
26 goto 340
27 :
50 data "[199]etting [211]tarted "
51 data "[208]rinting [217]our [212]ext "
52 data "[193]voyding [211]pelling [197]rrors "
53 data "[199]etting [198]inished "
54 data " "
55 data " [212]he first four data "
56 data "lines above are a sample "
57 data "menu that will be shown "
58 data "when help is invoked. "
59 data " [213]p to 20 menu items may"
60 data "be used. [198]or each one, "
61 data "there must be a matching "
62 data "file on disk, with a "
63 data "filename of the form: "
64 data " help-? "
65 data "where the '?' represents "
66 data "an alphabetic character. "
67 data " [212]he above menu items "
68 data "require filenames help-a "
69 data "through help-d. "
70 :
100 sl=25+1: rem 25 chars per menu item
110 s=peek(45)+256*peek(46)-20*sl-1
120 read a$
130 if left$(a$,1)=chr$(32) goto 200
140 for i=1 to sl-1
150 poke s+i,asc(mid$(a$,i))
160 next i
170 poke s+i,0
180 n=n+1: s=s+sl: if n<20 goto 120
190 :
200 a=122: gosub 330: z=a
210 a=123: gosub 330: z=z+256*a+11
220 :
230 poke z+0, n
240 poke z+1,09 :rem border
250 poke z+2,09 :rem background
260 poke z+3,00 :rem cursor
270 print "done!": goto 340
280 :
290 rem subroutine calculates addr of
300 rem chrget ptr at colon in line 330
310 rem (no spaces allowed in 330)
320 :
330 a=peek(a):return
340 end
350 :
1000 chrout = $ffd2 ;kernal addresses
1010 chkin = $ffc6
1020 getin = $ffe4
1030 setlfs = $ffba
1040 setnam = $ffbd
1050 open = $ffc0
1060 close = $ffc3
1070 clrchn = $ffcc
1080 scnkey = $ff9f
1090 ;
1100 sub = 256 ;temp subrtns base
1110 prog = $da00 ;prg2 code start
1120 ;
1130 ;the next four bytes can be set
1140 ;from basic with run 100
1150 ;
1160 numtop .byte 4 ;# of help files
1170 bord .byte 9 ;help bord colour
1180 back .byte 9 ;help bgnd colour
1190 curs .byte 0 ;help text colour
1200 ;
1210 ;
1220 escape rts
1230 ;
1240 init =*
1250 ;called from basic on run
1260 jsr $aefd ;check comma
1270 jsr $ad8a ;evaluate address
1280 jsr $b7f7 ;conv to integer
1290 ldx $0290 ;text keylog now
1300 cpx $e0 ; in rom
1310 bcc escape ; no
1320 stx out1+2 ;save old keylog
1330 ldx $028f ; vector
1340 stx out1+1
1350 tax ;test var a = 0
1360 bne in2 ; no
1370 ;
1380 in1 sec ;make room for top
1390 lda $37 ; of basic subrtns
1400 sbc #end-start
1410 sta $37
1420 tay
1430 lda $38
1440 sbc #0
1450 sta $38
1460 ;
1470 in2 sty newlog ;install new
1480 sta newlog+1 ; keylog vector
1490 sty $22 ;set up to copy
1500 sta $23 ; link code
1510 tax ;set up jump to
1520 tya ; old keylog-link
1530 clc ; keylog-link
1540 adc #out-start
1550 sta ojmp
1560 bcc in3
1570 inx
1580 ;
1590 in3 stx ojmp+1
1600 ldy #end-(start+1)
1610 ;
1620 in4 lda start,y ;copy link code to
1630 sta ($22),y ; its new home
1640 dey
1650 bpl in4
1660 ldy #2
1670 ;
1680 in8 lda bord,y ;set up video
1690 sta hlpvid+15,y ; preferences
1700 dey
1710 bpl in8
1720 lda numtop ;save # of help
1730 sta ntsave ; files available
1740 sei ;config 100% ram
1750 lda #$34 ; (no i/o, roms)
1760 sta 1
1770 lda #<end ;copy help code
1780 ldy #>end ; to $da00 ram
1790 sta $22
1800 sty $23
1810 lda #<prog
1820 ldy #>prog
1830 sta $24
1840 sty $25
1850 ldy #0
1860 ldx #>$e0ff-prog;# pages to copy
1870 ;
1880 in9 lda ($22),y
1890 sta ($24),y
1900 iny
1910 bne in9
1920 inc $23
1930 inc $25
1940 dex
1950 bne in9
1960 jsr end ;vecset in low ram
1970 lda #$37 ;config for basic
1980 sta 1
1990 cli
2000 lda $37 ;decrement top
2010 bne in10 ; of basic due to
2020 dec $38 ; basic val() bug
2030 ;
2040 in10 dec $37
2050 rts
2060 ;
2070 ;
2080 ;the next 2 routines are stored in
2090 ;'normal' ram, either at the top
2100 ;of basic, or at an address
2110 ;specified by the user
2120 ;
2130 ;
2140 start =*
2150 ;switch out rom, do new keyscan
2160 sei
2170 lda 1
2180 pha
2190 lda #$34
2200 sta 1
2210 jmp scan
2220 ;
2230 ;
2240 out =*
2250 ;restore roms, do rom keyscan
2260 pla
2270 sta 1
2280 out1 jmp $ffff
2290 ;
2300 end =*
2310 ;
2320 ;
2330 ;vecset and hlpvid are needed by
2340 ;both init code and help code
2350 ;
2360 ;
2370 vecset =*
2380 ;save old vector, install new one
2390 lda $028f
2400 ldy $0290
2410 sta prog+(oldlog-vecset)
2420 sty prog+(oldlog+1-vecset)
2430 lda prog+(newlog-vecset)
2440 ldy prog+(newlog+1-vecset)
2450 ;
2460 vcs1 sta $028f
2470 sty $0290
2480 rts
2490 ;
2500 ;
2510 ;the following table will be poked
2520 ;into video chip on entering help
2530 ;
2540 ;
2550 hlpvid =*
2560 .byte $1b,$0a,$aa,$65,$00,$c8
2570 .byte $00,$17,$79,$f0,$00,$00
2580 .byte $00,$00,$00,$f9,$f9
2590 ;
2600 ;
2610 ;the variables in the following
2620 ;table are defined below
2630 ;
2640 ;
2650 hcurs .byte 0
2660 ;
2670 usrtxt .byte 0
2680 usrcol .byte 0
2690 usrscr .byte 0
2700 usrbnk .byte 0
2710 ;
2720 ntsave .byte 0
2730 ;
2740 ojmp .word 0
2750 ;
2760 oldlog .word 0
2770 newlog .word 0
2780 ;
2790 *=*+2
2800 ;
2810 ;
2820 ;'scan' is the address of the
2830 ;actual program code in d-block
2840 ;ram, as calculated by assembler
2850 ;
2860 ;
2870 scan = prog+(*-vecset)
2880 ;
2890 ;end 1st assembly
2900 .end
2910 :
2920 :
2930 print: rem cosmetic newline
2940 :
2950 :
2960 rem the output from the second
2970 rem assembly is appended to that
2980 rem from the first
2990 :
3000 open 2,8,2,"0:t-help!,p,a"
3010 :
3020 sys 700
3030 *= $da00
3040 .opt o2
3050 ;
3060 chrout = $ffd2 ;kernal addresses
3070 chkin = $ffc6
3080 getin = $ffe4
3090 setlfs = $ffba
3100 setnam = $ffbd
3110 open = $ffc0
3120 close = $ffc3
3130 clrchn = $ffcc
3140 scnkey = $ff9f
3150 ;
3160 sub = $100 ;temp subrtns base
3170 flash = $140 ;screenflash addr
3180 deslen = 25+1 ;# bytes/desc
3190 ;
3200 ;most of the actual data for the
3210 ;following storage area is written
3220 ;here by the first part of the
3230 ;program. it is duplicated here
3240 ;because we need to tell pal about
3250 ;the various addresses
3260 ;
3270 vecset *=*+18 ;vector swap
3280 vcs1 *=*+7 ; routine
3290 hlpvid *=*+17 ;help video prefs
3300 hcurs *=*+1 ;help crsr colour
3310 usrtxt *=*+1 ;text colour save
3320 usrcol *=*+1 ;colour under crsr
3330 usrscr *=*+1 ;screen page
3340 usrbnk *=*+1 ;16k video bank
3350 ntsave *=*+1 ;# of help files
3360 ojmp *=*+2 ;exit routine addr
3370 oldlog *=*+2 ;old keylog addr
3380 newlog *=*+2 ;new keylog addr
3390 ;
3400 *=*+2 ;skip load address
3410 ;
3420 scan =*
3430 ;new keyscan routine
3440 lda $cb ;test last key
3450 cmp #$39 ; was left arrow
3460 beq sca2 ; yes
3470 ;
3480 sca1 jmp (ojmp) ;old keylog link
3490 ;
3500 sca2 ldx $028d ;test (shift)ctrl
3510 cpx #4
3520 bcc sca1 ; no
3530 cpx #6
3540 bcs sca1 ; no
3550 lda #$40 ;put 'no key' in
3560 sta $cb ; last key pressed
3570 lda oldlog ;restore vec so 2d
3580 ldy oldlog+1 ; press won't bomb
3590 jsr vcs1
3600 cpx #4 ;test unshifted
3610 beq sca3 ; yes
3620 ldx #$30 ;long flash count
3630 bne sca7 ;flash and exit
3640 ;
3650 sca3 ldx #$10 ;short flash count
3660 ;
3670 sca4 lda $98 ;test # open files
3680 beq sca5 ; zero - ok
3690 cmp #1
3700 bne sca6 ; > one - exit
3710 lda $0259 ;current lf #
3720 jsr hash ;get unique lf #
3730 sta file
3740 lda $026d ;current secadd
3750 jsr hash ;get unique secadd
3760 sta secadd
3770 ;
3780 sca5 jmp help
3790 ;
3800 sca6 jsr vecset ;install new k'log
3810 ;
3820 sca7 ldy #endfla;copy flash rout'n
3830 ;
3840 sca8 lda fla,y
3850 sta flash,y
3860 dey
3870 bpl sca8
3880 jsr flash ;do flash
3890 jmp sca1 ;exit help pgm
3900 ;
3910 ;
3920 hash =*
3930 ;select non-conflicting file or sa
3940 and #$7e ;clear bits 0, 7
3950 ora #4 ;set bit 2
3960 eor #2 ;clear bit 1
3970 rts
3980 ;
3990 ;
4000 ;this routine is copied to the
4010 ;stack when needed, and run there
4020 ;
4030 ;
4040 fla =*
4050 ;flash screen
4060 lda #$37 ;switch in i/o etc
4070 sta 1
4080 ;
4090 fla1 cpx $d012 ;wait for raster
4100 bne fla1
4110 inc $d020 ;bump colours
4120 inc $d021
4130 dex ;test finished
4140 bne fla1 ; no - reflash
4150 lda #$34 ; yes - exit
4160 sta 1
4170 rts
4180 ;
4190 endfla = *-(fla+1)
4200 ;
4210 ;
4220 ;the next subroutines are copied
4230 ;from d-block ram to $100 every
4240 ;time help is used
4250 ;
4260 ;
4270 subr =*
4280 ;copy byte from ram addr (subr+5)
4290 ;to d-block ram addr (subr+12)
4300 ldx #$37 ;roms in
4310 stx 1
4320 lda $ffff ;addr set on call
4330 ldx #$34 ;roms out
4340 stx 1
4350 sta $ffff ;addr set on call
4360 inc sub+5 ;bump fetch addr
4370 bne sb1
4380 inc sub+6
4390 ;
4400 sb1 inc sub+12 ;bump stash addr
4410 bne sb2
4420 inc sub+13
4430 ;
4440 sb2 rts
4450 ;
4460 ;
4470 zubr =*
4480 ;copy byte from d-block ram addr
4490 ;(zubr+1) to ram addr (zubr+8)
4500 lda $ffff ;addr set on call
4510 ldx #$37 ;roms in
4520 stx 1
4530 sta $ffff ;addr set on call
4540 ldx #$34 ;roms out
4550 stx 1
4560 inc zub+1 ;bump fetch addr
4570 bne zb1
4580 inc zub+2
4590 ;
4600 zb1 inc zub+8 ;bump stash addr
4610 bne zb2
4620 inc zub+9
4630 ;
4640 zb2 rts
4650 ;
4660 ;calc absolute address of zubr
4670 zub = sub+zubr-subr
4680 ;
4690 ;
4700 opn =*
4710 ;open a help file (help-a, etc)
4720 sta filnam+5 ;last filnam char
4730 lda file ;open lf,8,sa...
4740 pha
4750 ldy secadd
4760 ldx #$37
4770 stx 1
4780 ldx #8
4790 jsr setlfs
4800 ldx #<filnam ;..."help-?"
4810 ldy #>filnam
4820 lda #6
4830 jsr setnam
4840 jsr open
4850 pla
4860 tax ;open input chan
4870 jsr chkin
4880 ;
4890 of1 sei ;(rom did cli)
4900 ldx #$34 ;roms out
4910 stx 1
4920 rts
4930 ;
4940 ;calc absolute address of opn
4950 opnfil = sub+opn-subr
4960 ;
4970 ;
4980 ;help filename - last char varies
4990 fnam .asc "help-?"
5000 ;
5010 ;calc absolute address of fnam
5020 filnam = sub+fnam-subr
5030 ;
5040 ;
5050 get =*
5060 ;get byte from help file
5070 ldx #$37 ;roms in
5080 stx 1
5090 jsr getin ;get the byte
5100 clc ;relocatable jmp
5110 bcc of1
5120 ;
5130 ;calc absolute address of get
5140 getbyt = sub+get-subr
5150 ;
5160 ;
5170 cls =*
5180 ;close help file
5190 lda file
5200 pha
5210 ldx #$37 ;roms in
5220 stx 1
5230 jsr clrchn ;close the file
5240 pla
5250 jsr close
5260 clc ;relocatable jmp
5270 bcc of1
5280 ;
5290 ;calc absolute address of cls
5300 clsfil = sub+cls-subr
5310 ;
5320 ;
5330 key =*
5340 ;get ascii byte, return in .a
5350 ;return shift key register in .y
5360 lda #$37 ;roms in
5370 sta 1
5380 jsr scnkey ;scan kybd matrix
5390 ldy $cb ;get keycode
5400 lda $eb81,y ;conv to ascii
5410 ldy $028d ;shift key register
5420 ;
5430 ky1 clc ;relocatable jmp
5440 bcc of1
5450 ;
5460 ;calc absolute address of key
5470 keychk = sub+key-subr
5480 ;
5490 ;
5500 put =*
5510 ;print a character to the screen
5520 ldx #$37
5530 stx 1
5540 jsr chrout
5550 clc ;relocatable jmp
5560 bcc of1
5570 ;
5580 ;calc absolute address of put
5590 putbyt = sub+put-subr
5600 ;
5610 ;
5620 ;calc # of subroutine bytes
5630 subsiz = *-subr
5640 ;
5650 ;
5660 ;next comes the actual code that
5670 ;executes in d-block ram. the
5680 ;first section swaps out the user
5690 ;environment, & installs a new one
5700 ;
5710 ;
5720 help =*
5730 ;the help utility mainline
5740 lda #0 ;copy $0000-01ff
5750 ldy #$d0 ; to $d000-d1ff
5760 ldx #2
5770 jsr copy
5780 lda #4 ;copy $0400-07ff
5790 ldy #$d2 ; to $d200-d5ff
5800 tax
5810 jsr copy
5820 tsx ;save user stk ptr
5830 stx stksav
5840 ldx #$ff ;put our stk ptr
5850 txs ; far from subrtns
5860 ldy #subsiz ;copy subroutines
5870 ; into stack page
5880 he1 lda subr,y
5890 sta sub,y
5900 dey
5910 cpy #$ff
5920 bne he1
5930 iny ;copy colour ram
5940 sty sub+5 ; ($d800-$dbff)
5950 sty sub+12 ; to ram beneath
5960 lda #4 ; ($d600-$d9ff)
5970 sta 2
5980 ldx #$d8
5990 stx sub+6
6000 ldx #$d6
6010 stx sub+13
6020 ;
6030 he2 jsr sub
6040 dey
6050 bne he2
6060 dec 2
6070 bne he2
6080 lda #<$d011 ;copy video regs
6090 ldy #>$d011 ; to a save buffer
6100 sta sub+5
6110 sty sub+6
6120 lda #<vidbuf
6130 ldy #>vidbuf
6140 sta sub+12
6150 sty sub+13
6160 ldy #16
6170 sty $cc
6180 ;
6190 he3 jsr sub
6200 dey
6210 bpl he3
6220 lda $0286 ;save colour of
6230 ldy $0287 ; text and of char
6240 ldx $0288 ; under cursor,
6250 sta usrtxt ; and screen page
6260 sty usrcol
6270 stx usrscr
6280 lda #4
6290 sta $0288 ;screen at page 4
6300 lda #<$dd00 ;save user's video
6310 ldy #>$dd00 ; bank number
6320 sta sub+5 ; (the hard way)
6330 sty sub+6
6340 sta zub+8
6350 sty zub+9
6360 lda #<usrbnk
6370 ldy #>usrbnk
6380 sta sub+12
6390 sty sub+13
6400 jsr sub
6410 lda usrbnk
6420 ora #3
6430 jsr zub+3
6440 lda #<hlpvid ;copy our video
6450 ldy #>hlpvid ; preferences into
6460 sta zub+1 ; vic chip
6470 sty zub+2
6480 lda #<$d011
6490 ldy #>$d011
6500 sta zub+8
6510 sty zub+9
6520 ldy #16
6530 ;
6540 he4 jsr zub
6550 dey
6560 bpl he4
6570 lda hcurs ;our text colour
6580 sta $0286
6590 ;
6600 he5 lda #<hlptxt;startup message
6610 ldy #>hlptxt
6620 jsr prstr
6630 lda #13 ;two returns
6640 jsr putbyt
6650 jsr putbyt
6660 lda #<names ;address of help
6670 ldy #>names ; topic strings
6680 sta 3
6690 sty 4
6700 lda #0 ;topic #
6710 sta 2
6720 ;
6730 he6 clc ;conv topic # to
6740 adc #"a" ; char and print
6750 jsr putbyt
6760 lda #$20 ;print space
6770 jsr putbyt
6780 lda 3 ;print topic str
6790 ldy 4
6800 jsr prstr
6810 clc
6820 lda 3 ;calc address of
6830 adc #deslen ; next string
6840 sta 3
6850 bcc he7
6860 inc 4
6870 ;
6880 he7 lda #13 ;print return
6890 jsr putbyt
6900 inc 2
6910 lda 2
6920 cmp ntsave ;test all printed
6930 bne he6 ; no
6940 ;
6950 he8 jsr keychk ;get a character
6960 cpy #2 ;test logo pressed
6970 beq he9 ; yes
6980 tax ;save character
6990 sec ;conv keypress to
7000 sbc #"a" ; help topic #
7010 bcc he8 ; invalid
7020 cmp ntsave
7030 bcs he8 ; invalid
7040 txa ;retrieve char
7050 jsr prtfil ;print the file
7060 jmp he5 ;reprint menu
7070 ;
7080 he9 lda #<vidbuf;restore user's
7090 ldy #>vidbuf ; video
7100 sta zub+1
7110 sty zub+2
7120 lda #<$d011
7130 ldy #>$d011
7140 sta zub+8
7150 sty zub+9
7160 ldy #16
7170 ;
7180 he10 jsr zub
7190 dey
7200 bpl he10
7210 iny ;copy from d-ram
7220 sty zub+1 ; ($d700-$daff)
7230 sty zub+8 ; to colour ram
7240 ldx #$d6 ; ($d800-$dbff)
7250 stx zub+2
7260 ldx #$d8
7270 stx zub+9
7280 lda #4
7290 sta 2
7300 ;
7310 he11 jsr zub
7320 dey
7330 bne he11
7340 dec 2
7350 bne he11
7360 lda usrtxt
7370 ldy usrcol
7380 ldx usrscr
7390 sta $0286
7400 sty $0287
7410 stx $0288
7420 lda #<usrbnk
7430 ldy #>usrbnk
7440 sta zub+1
7450 sty zub+2
7460 lda #<$dd00
7470 ldy #>$dd00
7480 sta zub+8
7490 sty zub+9
7500 jsr zub
7510 ldx stksav ;restore stack ptr
7520 txs
7530 ldx #3 ;save 4 0-pg bytes
7540 ;
7550 he11a lda $d022,x
7560 sta $07f8,x
7570 dex
7580 bpl he11a
7590 lda #$d0 ;restore 3 pgs low
7600 sta $d023 ; ram from $d000
7610 ldy #0 ; (doubling vecs
7620 sty $d022 ; $22 - $25 in
7630 sty $d024 ; d-ram image)
7640 sty $d025
7650 ldx #2
7660 bne xcopy
7670 ;
7680 he12 ldx #3 ;put zp bytes back
7690 he14 lda $07f8,x
7700 sta $22,x
7710 dex
7720 bpl he14
7730 ldy #4 ;restore $400-$7ff
7740 lda #$d2 ; from $d200-$d5ff
7750 ldx #4
7760 jsr copy
7770 jsr vecset ;set up our vector
7780 he15 jmp (ojmp) ;exit via rom
7790 ;
7800 ;
7810 ;the next routine copies pages of
7820 ;memory. enter with source page in
7830 ;.a, target page in .y, # of pages
7840 ;to copy in .x. 'copy' is the
7850 ;normal version; 'xcopy' is a
7860 ;kludge to avoid using the stack
7870 ;copying into page 1 of memory.
7880 ;
7890 ;
7900 xcopy =*
7910 ;copy memory, branch back to he12
7920 sec
7930 .byte $24 ;'bit' (skip clc)
7940 ;
7950 copy =*
7960 ;copy memory, return via rts
7970 clc
7980 sta $23 ;source hi
7990 sty $25 ;target hi
8000 ldy #0
8010 sty $22 ;source lo
8020 sty $24 ;target lo
8030 cp1 lda ($22),y
8040 sta ($24),y
8050 iny
8060 bne cp1
8070 inc $23
8080 inc $25
8090 dex ;page counter
8100 bne cp1
8110 bcs he12 ;xcopy escape
8120 rts
8130 ;
8140 ;
8150 prtfil =*
8160 ;print a help file
8170 jsr opnfil ;open the file
8180 ;
8190 prt1 lda #$93 ;clear screen
8200 jsr putbyt
8210 lda #23 ;init line count
8220 sta lincnt
8230 ;
8240 prt2 lda #40 ;init column count
8250 sta colcnt
8260 ;
8270 prt3 jsr getbyt ;get disk byte
8280 jsr putbyt ;print it
8290 ldx $90 ;test status
8300 bne prt6 ; eof
8310 cmp #13 ;test cr
8320 beq prt4 ; yes
8330 dec colcnt ;test end of line
8340 bne prt3 ; no
8350 ;
8360 prt4 dec lincnt ;test end of page
8370 bne prt2 ; no
8380 jsr spcstr ;'spc to continue'
8390 lda #<ht1 ;'logo to exit'
8400 ldy #>ht1
8410 jsr prstr
8420 ;
8430 prt5 jsr keychk ;get a key
8440 cpy #2 ;test logo pressed
8450 beq prt8 ; yes
8460 cmp #$20 ;test spc pressed
8470 bne prt5 ; no
8480 beq prt1 ; yes
8490 ;
8500 prt6 jsr spcstr ;'spc to continue'
8510 ;
8520 prt7 jsr keychk ;get a key
8530 cmp #$20 ;test spc pressed
8540 bne prt7 ; no
8550 ;
8560 prt8 jmp clsfil ;close and exit
8570 ;
8580 ;
8590 spcstr =*
8600 ;print 'press space to continue'
8610 lda #<spctxt
8620 ldy #>spctxt
8630 ;
8640 prstr =*
8650 ;print string addressed in .a/.y
8660 sta $22
8670 sty $23
8680 ldy #0
8690 ;
8700 prs1 lda ($22),y
8710 beq prs2
8720 jsr putbyt ;print character
8730 iny
8740 bne prs1
8750 ;
8760 prs2 rts
8770 ;
8780 ;
8790 ;messages - no room for
8800 ;anything too fancy here
8810 ;
8820 ;
8830 hlptxt =*
8840 .byte 13,8,147
8850 .asc "[200]elp! [200]elp!"
8860 .byte 13,13,18
8870 .asc "[211]elect a topic"
8880 ;
8890 ;next msg is part of hlptxt, but
8900 ;can also be addressed separately
8910 ;
8920 ht1 =*
8930 .byte 18
8940 .asc " ([204][207][199][207] key to exit)"
8950 .byte 146,0
8960 ;
8970 spctxt =*
8980 .byte 13,18
8990 .asc "[211][208][193][195][197] to continue"
9000 .byte 146,0
9010 ;
9020 ;
9030 ;uninitialized data area
9040 ;
9050 ;
9060 stksav .byte 0 ;old stack ptr
9070 lincnt .byte 0 ;lines per page
9080 colcnt .byte 0 ;chars per line
9090 file .byte 2 ;logical file #
9100 secadd .byte 2 ;secondary address
9110 ;
9120 vidbuf *=*+17 ;video save area
9130 ;
9140 ;
9150 ;a whole bunch of empty bytes
9160 ;for the help topic strings
9170 ;
9180 ;
9190 names =*
9200 *= names+(20*deslen)-1
9210 .byte 0
9220 ;