Home » CEEFAX disks » telesoftware4.adl » 04-01-88/VECTOR

04-01-88/VECTOR

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 » telesoftware4.adl
Filename: 04-01-88/VECTOR
Read OK:
File size: 0AE6 bytes
Load address: FFFF1900
Exec address: FFFF8023
File contents
   10REM: VECTOR
   20MODE7
   30HIMEM=&3C00
   40DIM save 50
   50diff=&8000-HIMEM
   60address=&70
   70comvec=&F2
   80romnumber=&F4
   90errstack=&100
  100eventv=&220
  110gsinit=&FFC2
  120gsread=&FFC5
  130osargs=&FFDA
  140osbyte=&FFF4
  150oscli=&FFF7
  160FOR pass = 0 TO 2 STEP 2
  170P%=HIMEM
  180[OPT pass
  190BRK
  200BRK
  210BRK
  220JMP service+diff
  230OPT FNequb(&82)
  240OPT FNequb((copyright+diff) MOD 256)
  250BRK
  260.title
  270OPT FNequs("LOCK")
  280.copyright
  290BRK
  300OPT FNequs("(C) Gordon Horsington 1987")
  310BRK
  320.service
  330CMP #4
  340BEQ unrecognised
  350.exit
  360RTS
  370.unrecognised
  380PHA
  390TXA
  400PHA
  410TYA
  420PHA
  430LDX #&FF
  440.comloop
  450INX
  460LDA title+diff,X
  470BEQ found
  480LDA (comvec),Y
  490INY
  500CMP #ASC(".")
  510BEQ found
  520AND #&DF
  530CMP title+diff,X
  540BEQ comloop
  550PLA
  560TAY
  570PLA
  580TAX
  590PLA
  600RTS
  610.found
  620SEC
  630JSR gsinit
  640LDA address
  650PHA
  660LDA address+1
  670PHA
  680JSR gsread
  690BCS mistake
  700JSR gsread
  710BCS mistake
  720AND #&DF 
  730CMP #ASC("F")
  740BEQ lockoff
  750CMP #ASC("N")
  760BEQ lockit
  770.mistake
  780LDX #(syntax+diff) MOD 256
  790LDY #(syntax+diff) DIV 256
  800JMP error+diff
  810.lockoff
  820JSR eventoff+diff
  830JMP quit+diff
  840.lockit 
  850LDA #0 
  860TAX 
  870TAY 
  880JSR osargs
  890CMP #3 
  900BCC tape
  910LDX #(cfs+diff) MOD 256
  920LDY #(cfs+diff) DIV 256
  930JMP error+diff
  940.tape
  950JSR eventoff+diff
  960LDA #&A8
  970LDX #0 
  980LDY #&FF 
  990JSR osbyte
 1000STX address
 1010STY address+1
 1020LDY #&30 
 1030LDA #(lock+diff) MOD 256 
 1040STA (address),Y
 1050INY 
 1060LDA #(lock+diff) DIV 256 
 1070STA (address),Y
 1080INY 
 1090LDA romnumber
 1100STA (address),Y
 1110LDX #&30
 1120LDY #&FF
 1130SEI
 1140STX eventv
 1150STY eventv+1
 1160CLI
 1170LDA #14 
 1180LDX #4 
 1190JSR osbyte
 1200.quit
 1210PLA
 1220STA address+1
 1230PLA
 1240STA address
 1250PLA
 1260PLA
 1270PLA
 1280LDA #0
 1290RTS
 1300.eventoff
 1310LDA #13
 1320LDX #4
 1330LDY #0
 1340JMP osbyte
 1350.lock 
 1360PHP
 1370CMP #4
 1380BNE notfour
 1390PHA 
 1400LDA &3CA 
 1410ORA #1 \ AND #&FE to unlock
 1420STA &3CA 
 1430PLA 
 1440.notfour
 1450PLP
 1460RTS 
 1470.syntax
 1480BRK
 1490BRK
 1500OPT FNequs("Syntax")
 1510OPT FNequb(&3A)
 1520OPT FNequs(" *LOCK (ON/OFF)")
 1530BRK
 1540OPT FNequb(&FF)
 1550.cfs
 1560BRK
 1570BRK
 1580OPT FNequs("Type *TAPE and try again")
 1590BRK
 1600OPT FNequb(&FF)
 1610.error
 1620STX address
 1630STY address+1
 1640LDY #&FF
 1650.errorloop
 1660INY
 1670LDA (address),Y
 1680STA errstack,Y
 1690BPL errorloop
 1700PLA
 1710STA address+1
 1720PLA
 1730STA address
 1740JMP errstack
 1750.lastbyte
 1760]
 1770NEXT
 1780INPUT'"Save filename = "filename$
 1790IF filename$="" END
 1800$save="SAVE "+filename$+" "+STR$~(HIMEM)+" "+STR$~(lastbyte)+" FFFF8000 FFFF8000"
 1810X%=save MOD 256
 1820Y%=save DIV 256
 1830*OPT1,2
 1840CALL oscli
 1850*OPT1,0
 1860END
 1870DEFFNequb(byte)
 1880?P%=byte
 1890P%=P%+1
 1900=pass
 1910DEFFNequw(word)
 1920?P%=word MOD 256
 1930P%?1=word DIV 256
 1940P%=P%+2
 1950=pass
 1960DEFFNequd(double)
 1970!P%=double
 1980P%=P%+4
 1990=pass
 2000DEFFNequs(string$)
 2010$P%=string$
 2020P%=P%+LEN(string$)
 2030=pass


�: VECTOR
�7
�=&3C00
(
� save 50
2diff=&8000-�
<address=&70
Fcomvec=&F2
Promnumber=&F4
Zerrstack=&100
deventv=&220
ngsinit=&FFC2
xgsread=&FFC5
�osargs=&FFDA
�osbyte=&FFF4
�oscli=&FFF7
�� pass = 0 � 2 � 2
�P%=�
�
[OPT pass
�BRK
�BRK
�BRK
�JMP service+diff
�OPT �equb(&82)
�%OPT �equb((copyright+diff) � 256)
�BRK

.title
OPT �equs("LOCK")
.copyright
"BRK
,+OPT �equs("(C) Gordon Horsington 1987")
6BRK
@.service
J
CMP #4
TBEQ unrecognised
^	.exit
hRTS
r.unrecognised
|PHA
�TXA
�PHA
�TYA
�PHA
�LDX #&FF
�.comloop
�INX
�LDA title+diff,X
�
BEQ found
�LDA (comvec),Y
�INY
�CMP #�(".")
�
BEQ found

� #&DF
CMP title+diff,X
BEQ comloop
&PLA
0TAY
:PLA
DTAX
NPLA
XRTS
b
.found
lSEC
vJSR gsinit
�LDA address
�PHA
�LDA address+1
�PHA
�JSR gsread
�BCS mistake
�JSR gsread
�BCS mistake
�� #&DF 
�CMP #�("F")
�BEQ lockoff
�CMP #�("N")
�BEQ lockit
.mistake
LDX #(syntax+diff) � 256
LDY #(syntax+diff) � 256
 JMP error+diff
*.lockoff
4JSR eventoff+diff
>JMP quit+diff
H.lockit 
RLDA #0 
\TAX 
fTAY 
pJSR osargs
zCMP #3 
�BCC tape
�LDX #(cfs+diff) � 256
�LDY #(cfs+diff) � 256
�JMP error+diff
�	.tape
�JSR eventoff+diff
�LDA #&A8
�LDX #0 
�
LDY #&FF 
�JSR osbyte
�STX address
�STY address+1
�
LDY #&30 
LDA #(lock+diff) � 256 
STA (address),Y
INY 
$LDA #(lock+diff) � 256 
.STA (address),Y
8INY 
BLDA romnumber
LSTA (address),Y
VLDX #&30
`LDY #&FF
jSEI
tSTX eventv
~STY eventv+1
�CLI
�LDA #14 
�LDX #4 
�JSR osbyte
�	.quit
�PLA
�STA address+1
�PLA
�STA address
�PLA
�PLA
�PLA

LDA #0

RTS

.eventoff
LDA #13
(
LDX #4
2
LDY #0
<JMP osbyte
F
.lock 
PPHP
Z
CMP #4
dBNE notfour
nPHA 
x
LDA &3CA 
��A #1 \ � #&FE to unlock
�
STA &3CA 
�PLA 
�.notfour
�PLP
�RTS 
�.syntax
�BRK
�BRK
�OPT �equs("Syntax")
�OPT �equb(&3A)
� OPT �equs(" *LOCK (ON/OFF)")
�BRK
OPT �equb(&FF)
.cfs
BRK
"BRK
,)OPT �equs("Type *TAPE and try again")
6BRK
@OPT �equb(&FF)
J
.error
TSTX address
^STY address+1
hLDY #&FF
r.errorloop
|INY
�LDA (address),Y
�STA errstack,Y
�BPL errorloop
�PLA
�STA address+1
�PLA
�STA address
�JMP errstack
�
.lastbyte
�]
��
�!�'"Save filename = "filename$
�� filename$="" �
K$save="SAVE "+filename$+" "+�~(�)+" "+�~(lastbyte)+" FFFF8000 FFFF8000"
X%=save � 256
Y%=save � 256
&*OPT1,2
0� oscli
:*OPT1,0
D�
Nݤequb(byte)
X?P%=byte
bP%=P%+1
l	=pass
vݤequw(word)
�?P%=word � 256
�P%?1=word � 256
�P%=P%+2
�	=pass
�ݤequd(double)
�!P%=double
�P%=P%+4
�	=pass
�ݤequs(string$)
�$P%=string$
�P%=P%+�(string$)
�	=pass
�
00000000  0d 00 0a 0d f4 3a 20 56  45 43 54 4f 52 0d 00 14  |.....: VECTOR...|
00000010  06 eb 37 0d 00 1e 0b d3  3d 26 33 43 30 30 0d 00  |..7.....=&3C00..|
00000020  28 0d de 20 73 61 76 65  20 35 30 0d 00 32 10 64  |(.. save 50..2.d|
00000030  69 66 66 3d 26 38 30 30  30 2d 93 0d 00 3c 0f 61  |iff=&8000-...<.a|
00000040  64 64 72 65 73 73 3d 26  37 30 0d 00 46 0e 63 6f  |ddress=&70..F.co|
00000050  6d 76 65 63 3d 26 46 32  0d 00 50 11 72 6f 6d 6e  |mvec=&F2..P.romn|
00000060  75 6d 62 65 72 3d 26 46  34 0d 00 5a 11 65 72 72  |umber=&F4..Z.err|
00000070  73 74 61 63 6b 3d 26 31  30 30 0d 00 64 0f 65 76  |stack=&100..d.ev|
00000080  65 6e 74 76 3d 26 32 32  30 0d 00 6e 10 67 73 69  |entv=&220..n.gsi|
00000090  6e 69 74 3d 26 46 46 43  32 0d 00 78 10 67 73 72  |nit=&FFC2..x.gsr|
000000a0  65 61 64 3d 26 46 46 43  35 0d 00 82 10 6f 73 61  |ead=&FFC5....osa|
000000b0  72 67 73 3d 26 46 46 44  41 0d 00 8c 10 6f 73 62  |rgs=&FFDA....osb|
000000c0  79 74 65 3d 26 46 46 46  34 0d 00 96 0f 6f 73 63  |yte=&FFF4....osc|
000000d0  6c 69 3d 26 46 46 46 37  0d 00 a0 16 e3 20 70 61  |li=&FFF7..... pa|
000000e0  73 73 20 3d 20 30 20 b8  20 32 20 88 20 32 0d 00  |ss = 0 . 2 . 2..|
000000f0  aa 08 50 25 3d 93 0d 00  b4 0d 5b 4f 50 54 20 70  |..P%=.....[OPT p|
00000100  61 73 73 0d 00 be 07 42  52 4b 0d 00 c8 07 42 52  |ass....BRK....BR|
00000110  4b 0d 00 d2 07 42 52 4b  0d 00 dc 14 4a 4d 50 20  |K....BRK....JMP |
00000120  73 65 72 76 69 63 65 2b  64 69 66 66 0d 00 e6 12  |service+diff....|
00000130  4f 50 54 20 a4 65 71 75  62 28 26 38 32 29 0d 00  |OPT .equb(&82)..|
00000140  f0 25 4f 50 54 20 a4 65  71 75 62 28 28 63 6f 70  |.%OPT .equb((cop|
00000150  79 72 69 67 68 74 2b 64  69 66 66 29 20 83 20 32  |yright+diff) . 2|
00000160  35 36 29 0d 00 fa 07 42  52 4b 0d 01 04 0a 2e 74  |56)....BRK.....t|
00000170  69 74 6c 65 0d 01 0e 15  4f 50 54 20 a4 65 71 75  |itle....OPT .equ|
00000180  73 28 22 4c 4f 43 4b 22  29 0d 01 18 0e 2e 63 6f  |s("LOCK").....co|
00000190  70 79 72 69 67 68 74 0d  01 22 07 42 52 4b 0d 01  |pyright..".BRK..|
000001a0  2c 2b 4f 50 54 20 a4 65  71 75 73 28 22 28 43 29  |,+OPT .equs("(C)|
000001b0  20 47 6f 72 64 6f 6e 20  48 6f 72 73 69 6e 67 74  | Gordon Horsingt|
000001c0  6f 6e 20 31 39 38 37 22  29 0d 01 36 07 42 52 4b  |on 1987")..6.BRK|
000001d0  0d 01 40 0c 2e 73 65 72  76 69 63 65 0d 01 4a 0a  |..@..service..J.|
000001e0  43 4d 50 20 23 34 0d 01  54 14 42 45 51 20 75 6e  |CMP #4..T.BEQ un|
000001f0  72 65 63 6f 67 6e 69 73  65 64 0d 01 5e 09 2e 65  |recognised..^..e|
00000200  78 69 74 0d 01 68 07 52  54 53 0d 01 72 11 2e 75  |xit..h.RTS..r..u|
00000210  6e 72 65 63 6f 67 6e 69  73 65 64 0d 01 7c 07 50  |nrecognised..|.P|
00000220  48 41 0d 01 86 07 54 58  41 0d 01 90 07 50 48 41  |HA....TXA....PHA|
00000230  0d 01 9a 07 54 59 41 0d  01 a4 07 50 48 41 0d 01  |....TYA....PHA..|
00000240  ae 0c 4c 44 58 20 23 26  46 46 0d 01 b8 0c 2e 63  |..LDX #&FF.....c|
00000250  6f 6d 6c 6f 6f 70 0d 01  c2 07 49 4e 58 0d 01 cc  |omloop....INX...|
00000260  14 4c 44 41 20 74 69 74  6c 65 2b 64 69 66 66 2c  |.LDA title+diff,|
00000270  58 0d 01 d6 0d 42 45 51  20 66 6f 75 6e 64 0d 01  |X....BEQ found..|
00000280  e0 12 4c 44 41 20 28 63  6f 6d 76 65 63 29 2c 59  |..LDA (comvec),Y|
00000290  0d 01 ea 07 49 4e 59 0d  01 f4 0f 43 4d 50 20 23  |....INY....CMP #|
000002a0  97 28 22 2e 22 29 0d 01  fe 0d 42 45 51 20 66 6f  |.(".")....BEQ fo|
000002b0  75 6e 64 0d 02 08 0a 80  20 23 26 44 46 0d 02 12  |und..... #&DF...|
000002c0  14 43 4d 50 20 74 69 74  6c 65 2b 64 69 66 66 2c  |.CMP title+diff,|
000002d0  58 0d 02 1c 0f 42 45 51  20 63 6f 6d 6c 6f 6f 70  |X....BEQ comloop|
000002e0  0d 02 26 07 50 4c 41 0d  02 30 07 54 41 59 0d 02  |..&.PLA..0.TAY..|
000002f0  3a 07 50 4c 41 0d 02 44  07 54 41 58 0d 02 4e 07  |:.PLA..D.TAX..N.|
00000300  50 4c 41 0d 02 58 07 52  54 53 0d 02 62 0a 2e 66  |PLA..X.RTS..b..f|
00000310  6f 75 6e 64 0d 02 6c 07  53 45 43 0d 02 76 0e 4a  |ound..l.SEC..v.J|
00000320  53 52 20 67 73 69 6e 69  74 0d 02 80 0f 4c 44 41  |SR gsinit....LDA|
00000330  20 61 64 64 72 65 73 73  0d 02 8a 07 50 48 41 0d  | address....PHA.|
00000340  02 94 11 4c 44 41 20 61  64 64 72 65 73 73 2b 31  |...LDA address+1|
00000350  0d 02 9e 07 50 48 41 0d  02 a8 0e 4a 53 52 20 67  |....PHA....JSR g|
00000360  73 72 65 61 64 0d 02 b2  0f 42 43 53 20 6d 69 73  |sread....BCS mis|
00000370  74 61 6b 65 0d 02 bc 0e  4a 53 52 20 67 73 72 65  |take....JSR gsre|
00000380  61 64 0d 02 c6 0f 42 43  53 20 6d 69 73 74 61 6b  |ad....BCS mistak|
00000390  65 0d 02 d0 0b 80 20 23  26 44 46 20 0d 02 da 0f  |e..... #&DF ....|
000003a0  43 4d 50 20 23 97 28 22  46 22 29 0d 02 e4 0f 42  |CMP #.("F")....B|
000003b0  45 51 20 6c 6f 63 6b 6f  66 66 0d 02 ee 0f 43 4d  |EQ lockoff....CM|
000003c0  50 20 23 97 28 22 4e 22  29 0d 02 f8 0e 42 45 51  |P #.("N")....BEQ|
000003d0  20 6c 6f 63 6b 69 74 0d  03 02 0c 2e 6d 69 73 74  | lockit.....mist|
000003e0  61 6b 65 0d 03 0c 1c 4c  44 58 20 23 28 73 79 6e  |ake....LDX #(syn|
000003f0  74 61 78 2b 64 69 66 66  29 20 83 20 32 35 36 0d  |tax+diff) . 256.|
00000400  03 16 1c 4c 44 59 20 23  28 73 79 6e 74 61 78 2b  |...LDY #(syntax+|
00000410  64 69 66 66 29 20 81 20  32 35 36 0d 03 20 12 4a  |diff) . 256.. .J|
00000420  4d 50 20 65 72 72 6f 72  2b 64 69 66 66 0d 03 2a  |MP error+diff..*|
00000430  0c 2e 6c 6f 63 6b 6f 66  66 0d 03 34 15 4a 53 52  |..lockoff..4.JSR|
00000440  20 65 76 65 6e 74 6f 66  66 2b 64 69 66 66 0d 03  | eventoff+diff..|
00000450  3e 11 4a 4d 50 20 71 75  69 74 2b 64 69 66 66 0d  |>.JMP quit+diff.|
00000460  03 48 0c 2e 6c 6f 63 6b  69 74 20 0d 03 52 0b 4c  |.H..lockit ..R.L|
00000470  44 41 20 23 30 20 0d 03  5c 08 54 41 58 20 0d 03  |DA #0 ..\.TAX ..|
00000480  66 08 54 41 59 20 0d 03  70 0e 4a 53 52 20 6f 73  |f.TAY ..p.JSR os|
00000490  61 72 67 73 0d 03 7a 0b  43 4d 50 20 23 33 20 0d  |args..z.CMP #3 .|
000004a0  03 84 0c 42 43 43 20 74  61 70 65 0d 03 8e 19 4c  |...BCC tape....L|
000004b0  44 58 20 23 28 63 66 73  2b 64 69 66 66 29 20 83  |DX #(cfs+diff) .|
000004c0  20 32 35 36 0d 03 98 19  4c 44 59 20 23 28 63 66  | 256....LDY #(cf|
000004d0  73 2b 64 69 66 66 29 20  81 20 32 35 36 0d 03 a2  |s+diff) . 256...|
000004e0  12 4a 4d 50 20 65 72 72  6f 72 2b 64 69 66 66 0d  |.JMP error+diff.|
000004f0  03 ac 09 2e 74 61 70 65  0d 03 b6 15 4a 53 52 20  |....tape....JSR |
00000500  65 76 65 6e 74 6f 66 66  2b 64 69 66 66 0d 03 c0  |eventoff+diff...|
00000510  0c 4c 44 41 20 23 26 41  38 0d 03 ca 0b 4c 44 58  |.LDA #&A8....LDX|
00000520  20 23 30 20 0d 03 d4 0d  4c 44 59 20 23 26 46 46  | #0 ....LDY #&FF|
00000530  20 0d 03 de 0e 4a 53 52  20 6f 73 62 79 74 65 0d  | ....JSR osbyte.|
00000540  03 e8 0f 53 54 58 20 61  64 64 72 65 73 73 0d 03  |...STX address..|
00000550  f2 11 53 54 59 20 61 64  64 72 65 73 73 2b 31 0d  |..STY address+1.|
00000560  03 fc 0d 4c 44 59 20 23  26 33 30 20 0d 04 06 1b  |...LDY #&30 ....|
00000570  4c 44 41 20 23 28 6c 6f  63 6b 2b 64 69 66 66 29  |LDA #(lock+diff)|
00000580  20 83 20 32 35 36 20 0d  04 10 13 53 54 41 20 28  | . 256 ....STA (|
00000590  61 64 64 72 65 73 73 29  2c 59 0d 04 1a 08 49 4e  |address),Y....IN|
000005a0  59 20 0d 04 24 1b 4c 44  41 20 23 28 6c 6f 63 6b  |Y ..$.LDA #(lock|
000005b0  2b 64 69 66 66 29 20 81  20 32 35 36 20 0d 04 2e  |+diff) . 256 ...|
000005c0  13 53 54 41 20 28 61 64  64 72 65 73 73 29 2c 59  |.STA (address),Y|
000005d0  0d 04 38 08 49 4e 59 20  0d 04 42 11 4c 44 41 20  |..8.INY ..B.LDA |
000005e0  72 6f 6d 6e 75 6d 62 65  72 0d 04 4c 13 53 54 41  |romnumber..L.STA|
000005f0  20 28 61 64 64 72 65 73  73 29 2c 59 0d 04 56 0c  | (address),Y..V.|
00000600  4c 44 58 20 23 26 33 30  0d 04 60 0c 4c 44 59 20  |LDX #&30..`.LDY |
00000610  23 26 46 46 0d 04 6a 07  53 45 49 0d 04 74 0e 53  |#&FF..j.SEI..t.S|
00000620  54 58 20 65 76 65 6e 74  76 0d 04 7e 10 53 54 59  |TX eventv..~.STY|
00000630  20 65 76 65 6e 74 76 2b  31 0d 04 88 07 43 4c 49  | eventv+1....CLI|
00000640  0d 04 92 0c 4c 44 41 20  23 31 34 20 0d 04 9c 0b  |....LDA #14 ....|
00000650  4c 44 58 20 23 34 20 0d  04 a6 0e 4a 53 52 20 6f  |LDX #4 ....JSR o|
00000660  73 62 79 74 65 0d 04 b0  09 2e 71 75 69 74 0d 04  |sbyte.....quit..|
00000670  ba 07 50 4c 41 0d 04 c4  11 53 54 41 20 61 64 64  |..PLA....STA add|
00000680  72 65 73 73 2b 31 0d 04  ce 07 50 4c 41 0d 04 d8  |ress+1....PLA...|
00000690  0f 53 54 41 20 61 64 64  72 65 73 73 0d 04 e2 07  |.STA address....|
000006a0  50 4c 41 0d 04 ec 07 50  4c 41 0d 04 f6 07 50 4c  |PLA....PLA....PL|
000006b0  41 0d 05 00 0a 4c 44 41  20 23 30 0d 05 0a 07 52  |A....LDA #0....R|
000006c0  54 53 0d 05 14 0d 2e 65  76 65 6e 74 6f 66 66 0d  |TS.....eventoff.|
000006d0  05 1e 0b 4c 44 41 20 23  31 33 0d 05 28 0a 4c 44  |...LDA #13..(.LD|
000006e0  58 20 23 34 0d 05 32 0a  4c 44 59 20 23 30 0d 05  |X #4..2.LDY #0..|
000006f0  3c 0e 4a 4d 50 20 6f 73  62 79 74 65 0d 05 46 0a  |<.JMP osbyte..F.|
00000700  2e 6c 6f 63 6b 20 0d 05  50 07 50 48 50 0d 05 5a  |.lock ..P.PHP..Z|
00000710  0a 43 4d 50 20 23 34 0d  05 64 0f 42 4e 45 20 6e  |.CMP #4..d.BNE n|
00000720  6f 74 66 6f 75 72 0d 05  6e 08 50 48 41 20 0d 05  |otfour..n.PHA ..|
00000730  78 0d 4c 44 41 20 26 33  43 41 20 0d 05 82 1c 84  |x.LDA &3CA .....|
00000740  41 20 23 31 20 5c 20 80  20 23 26 46 45 20 74 6f  |A #1 \ . #&FE to|
00000750  20 75 6e 6c 6f 63 6b 0d  05 8c 0d 53 54 41 20 26  | unlock....STA &|
00000760  33 43 41 20 0d 05 96 08  50 4c 41 20 0d 05 a0 0c  |3CA ....PLA ....|
00000770  2e 6e 6f 74 66 6f 75 72  0d 05 aa 07 50 4c 50 0d  |.notfour....PLP.|
00000780  05 b4 08 52 54 53 20 0d  05 be 0b 2e 73 79 6e 74  |...RTS .....synt|
00000790  61 78 0d 05 c8 07 42 52  4b 0d 05 d2 07 42 52 4b  |ax....BRK....BRK|
000007a0  0d 05 dc 17 4f 50 54 20  a4 65 71 75 73 28 22 53  |....OPT .equs("S|
000007b0  79 6e 74 61 78 22 29 0d  05 e6 12 4f 50 54 20 a4  |yntax")....OPT .|
000007c0  65 71 75 62 28 26 33 41  29 0d 05 f0 20 4f 50 54  |equb(&3A)... OPT|
000007d0  20 a4 65 71 75 73 28 22  20 2a 4c 4f 43 4b 20 28  | .equs(" *LOCK (|
000007e0  4f 4e 2f 4f 46 46 29 22  29 0d 05 fa 07 42 52 4b  |ON/OFF)")....BRK|
000007f0  0d 06 04 12 4f 50 54 20  a4 65 71 75 62 28 26 46  |....OPT .equb(&F|
00000800  46 29 0d 06 0e 08 2e 63  66 73 0d 06 18 07 42 52  |F).....cfs....BR|
00000810  4b 0d 06 22 07 42 52 4b  0d 06 2c 29 4f 50 54 20  |K..".BRK..,)OPT |
00000820  a4 65 71 75 73 28 22 54  79 70 65 20 2a 54 41 50  |.equs("Type *TAP|
00000830  45 20 61 6e 64 20 74 72  79 20 61 67 61 69 6e 22  |E and try again"|
00000840  29 0d 06 36 07 42 52 4b  0d 06 40 12 4f 50 54 20  |)..6.BRK..@.OPT |
00000850  a4 65 71 75 62 28 26 46  46 29 0d 06 4a 0a 2e 65  |.equb(&FF)..J..e|
00000860  72 72 6f 72 0d 06 54 0f  53 54 58 20 61 64 64 72  |rror..T.STX addr|
00000870  65 73 73 0d 06 5e 11 53  54 59 20 61 64 64 72 65  |ess..^.STY addre|
00000880  73 73 2b 31 0d 06 68 0c  4c 44 59 20 23 26 46 46  |ss+1..h.LDY #&FF|
00000890  0d 06 72 0e 2e 65 72 72  6f 72 6c 6f 6f 70 0d 06  |..r..errorloop..|
000008a0  7c 07 49 4e 59 0d 06 86  13 4c 44 41 20 28 61 64  ||.INY....LDA (ad|
000008b0  64 72 65 73 73 29 2c 59  0d 06 90 12 53 54 41 20  |dress),Y....STA |
000008c0  65 72 72 73 74 61 63 6b  2c 59 0d 06 9a 11 42 50  |errstack,Y....BP|
000008d0  4c 20 65 72 72 6f 72 6c  6f 6f 70 0d 06 a4 07 50  |L errorloop....P|
000008e0  4c 41 0d 06 ae 11 53 54  41 20 61 64 64 72 65 73  |LA....STA addres|
000008f0  73 2b 31 0d 06 b8 07 50  4c 41 0d 06 c2 0f 53 54  |s+1....PLA....ST|
00000900  41 20 61 64 64 72 65 73  73 0d 06 cc 10 4a 4d 50  |A address....JMP|
00000910  20 65 72 72 73 74 61 63  6b 0d 06 d6 0d 2e 6c 61  | errstack.....la|
00000920  73 74 62 79 74 65 0d 06  e0 05 5d 0d 06 ea 05 ed  |stbyte....].....|
00000930  0d 06 f4 21 e8 27 22 53  61 76 65 20 66 69 6c 65  |...!.'"Save file|
00000940  6e 61 6d 65 20 3d 20 22  66 69 6c 65 6e 61 6d 65  |name = "filename|
00000950  24 0d 06 fe 14 e7 20 66  69 6c 65 6e 61 6d 65 24  |$..... filename$|
00000960  3d 22 22 20 e0 0d 07 08  4b 24 73 61 76 65 3d 22  |="" ....K$save="|
00000970  53 41 56 45 20 22 2b 66  69 6c 65 6e 61 6d 65 24  |SAVE "+filename$|
00000980  2b 22 20 22 2b c3 7e 28  93 29 2b 22 20 22 2b c3  |+" "+.~(.)+" "+.|
00000990  7e 28 6c 61 73 74 62 79  74 65 29 2b 22 20 46 46  |~(lastbyte)+" FF|
000009a0  46 46 38 30 30 30 20 46  46 46 46 38 30 30 30 22  |FF8000 FFFF8000"|
000009b0  0d 07 12 11 58 25 3d 73  61 76 65 20 83 20 32 35  |....X%=save . 25|
000009c0  36 0d 07 1c 11 59 25 3d  73 61 76 65 20 81 20 32  |6....Y%=save . 2|
000009d0  35 36 0d 07 26 0b 2a 4f  50 54 31 2c 32 0d 07 30  |56..&.*OPT1,2..0|
000009e0  0b d6 20 6f 73 63 6c 69  0d 07 3a 0b 2a 4f 50 54  |.. oscli..:.*OPT|
000009f0  31 2c 30 0d 07 44 05 e0  0d 07 4e 10 dd a4 65 71  |1,0..D....N...eq|
00000a00  75 62 28 62 79 74 65 29  0d 07 58 0c 3f 50 25 3d  |ub(byte)..X.?P%=|
00000a10  62 79 74 65 0d 07 62 0b  50 25 3d 50 25 2b 31 0d  |byte..b.P%=P%+1.|
00000a20  07 6c 09 3d 70 61 73 73  0d 07 76 10 dd a4 65 71  |.l.=pass..v...eq|
00000a30  75 77 28 77 6f 72 64 29  0d 07 80 12 3f 50 25 3d  |uw(word)....?P%=|
00000a40  77 6f 72 64 20 83 20 32  35 36 0d 07 8a 13 50 25  |word . 256....P%|
00000a50  3f 31 3d 77 6f 72 64 20  81 20 32 35 36 0d 07 94  |?1=word . 256...|
00000a60  0b 50 25 3d 50 25 2b 32  0d 07 9e 09 3d 70 61 73  |.P%=P%+2....=pas|
00000a70  73 0d 07 a8 12 dd a4 65  71 75 64 28 64 6f 75 62  |s......equd(doub|
00000a80  6c 65 29 0d 07 b2 0e 21  50 25 3d 64 6f 75 62 6c  |le)....!P%=doubl|
00000a90  65 0d 07 bc 0b 50 25 3d  50 25 2b 34 0d 07 c6 09  |e....P%=P%+4....|
00000aa0  3d 70 61 73 73 0d 07 d0  13 dd a4 65 71 75 73 28  |=pass......equs(|
00000ab0  73 74 72 69 6e 67 24 29  0d 07 da 0f 24 50 25 3d  |string$)....$P%=|
00000ac0  73 74 72 69 6e 67 24 0d  07 e4 14 50 25 3d 50 25  |string$....P%=P%|
00000ad0  2b a9 28 73 74 72 69 6e  67 24 29 0d 07 ee 09 3d  |+.(string$)....=|
00000ae0  70 61 73 73 0d ff                                 |pass..|
00000ae6
04-01-88/VECTOR.m0
04-01-88/VECTOR.m1
04-01-88/VECTOR.m2
04-01-88/VECTOR.m4
04-01-88/VECTOR.m5