Home » Personal collection » Acorn tapes » Electron_User » Electron_User_tape31a_acorn_eu_1992_january.wav » Quick

Quick

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 » Personal collection » Acorn tapes » Electron_User » Electron_User_tape31a_acorn_eu_1992_january.wav
Filename: Quick
Read OK:
File size: 0718 bytes
Load address: FFFF0E00
Exec address: FFFF802B
Duplicates

There are 3 duplicate copies of this file in the archive:

File contents
   10REM Quick Type
   20REM By Stephen Ramplin
   30REM (c) The Micro User
   40*KEY10 OLD|MRUN|M
   50*FX200
   60MODE135
   70chr%=&80:addr%=&81:tkn%=&83:temp%=&84:insv=&22A:osbyte=&FFF4:oscli=&FFF7:oldv=!insv AND&FFFF:base%=FNBase:PROCassemble:IFoldv=qtype THEN CALL!-4
   80*FX18
   90PRINT'"Press SPACE to save code as Qtype":*FX21
  100REPEATUNTILGET=32:$&700="SAVE Qtype 900 "+STR$~P%:X%=0:Y%=7:CALLoscli
  110CALLinit
  120END
  130DEFPROCassemble
  140FORpass%=0TO2STEP2:P%=&900:[OPTpass%
  150.init LDX#qtype MOD256:LDY#qtype DIV256:SEI:STXinsv:STYinsv+1:CLI:RTS
  160.qtype PHP:STA chr%:TXA:BNE not_key:PHA:TYA:PHA:LDA chr%:CMP#ASC" ":BEQ check:STX tkn%
  170.findtkn CMP#ASC"!":BCC exit:CMP#ASC"`"+1:BCS others:SEC:SBC#ASC"!":BPL gettkn
  180.others AND#&DF:CMP#ASC"[":BCC lower:CMP#ASC"_":BCS exit:SEC:SBC#27:BPL gettkn
  190.lower SEC:SBC#ASC"!":.gettkn TAX:LDA table,X:STA tkn%
  200.exit PLA:TAY:PLA:.not_key TAX:LDA chr%:PLP:JMP oldv
  210.check LDA#&79:LDX#&80:JSR osbyte:TXA:BPL exit:LDA tkn%:BEQ exit
  220.reset LDX#oldv MOD256:LDY#oldv DIV256:SEI:STXinsv:STYinsv+1:CLI
  230.delete LDA#&7F:JSR insert:LDA#base% MOD256:STA addr%:LDA#base% DIV256:STA addr%+1
  240.findword LDY#&FF:.loop1 INY:LDA(addr%),Y:BPL loop1:CMP tkn%:BEQ found
  250.incaddr% INY:TYA:SEC:ADC addr%:STA addr%:BCC findword:INC addr%+1:BCS findword
  260.found LDY#0:.loop2 LDA(addr%),Y:BMI done:STY temp%:JSR insert:LDY temp%:INY:BNEloop2
  270.done CMP#&CB:BEQ cr:CMP#&F9:BNE no_cr:.cr LDA#13:JSR insert
  280.no_cr JSRinit:LDA#0:STA tkn%:STA chr%:JMP exit
  290.insert TAY:LDA#138:LDX#0:JMPosbyte:.table OPT FNTokens
  300]:NEXTpass%:ENDPROC
  310DEFFNBase:A%=&8000:REPEAT:A%=A%+1:UNTIL!A%=&80444E41:=A%
  320DEFFNTokens:RESTORE:READd$:t%=0:FORi%=1TO136STEP2:?P%=EVAL("&"+MID$(d$,i%,2)):t%=t%+(?P%*i%)
  330P%=P%+1:NEXT:READC%:IFt%<>C% PRINT"Data Error":END ELSE=pass%
  340REM Tokens Data
  350DATA ADAEE1D99AD5939290E4B9C885CDF18ABDBEA7C0C1B0C2C4C3F8A3E2A0D496D6C6CCFBDF8BE3E59DE8B2D7C9EBEDCBF0EAF9888CFDEFF7F2F5E0ECFCDCF6E6C7A691F3D8,&ECBF7

� Quick Type
� By Stephen Ramplin
� (c) The Micro User
(*KEY10 OLD|MRUN|M
2
*FX200
<�135
F�chr%=&80:addr%=&81:tkn%=&83:temp%=&84:insv=&22A:osbyte=&FFF4:oscli=&FFF7:oldv=!insv �&FFFF:base%=�Base:�assemble:�oldv=qtype � �!-4
P	*FX18
Z/�'"Press SPACE to save code as Qtype":*FX21
d8���=32:$&700="SAVE Qtype 900 "+�~P%:X%=0:Y%=7:�oscli
n	�init
x�
���assemble
�"�pass%=0�2�2:P%=&900:[OPTpass%
�E.init LDX#qtype �256:LDY#qtype �256:SEI:STXinsv:STYinsv+1:CLI:RTS
�X.qtype PHP:STA chr%:TXA:BNE not_key:PHA:TYA:PHA:LDA chr%:CMP#�" ":BEQ check:STX tkn%
�L.findtkn CMP#�"!":BCC exit:CMP#�"`"+1:BCS others:SEC:SBC#�"!":BPL gettkn
�L.others �#&DF:CMP#�"[":BCC lower:CMP#�"_":BCS exit:SEC:SBC#27:BPL gettkn
�8.lower SEC:SBC#�"!":.gettkn TAX:LDA table,X:STA tkn%
�8.exit PLA:TAY:PLA:.not_key TAX:LDA chr%:PLP:JMP oldv
�D.check LDA#&79:LDX#&80:JSR osbyte:TXA:BPL exit:LDA tkn%:BEQ exit
�@.reset LDX#oldv �256:LDY#oldv �256:SEI:STXinsv:STYinsv+1:CLI
�R.delete LDA#&7F:JSR insert:LDA#base% �256:STA addr%:LDA#base% �256:STA addr%+1
�J.findword LDY#&FF:.loop1 INY:LDA(addr%),Y:BPL loop1:CMP tkn%:BEQ found
�S.incaddr% INY:TYA:SEC:ADC addr%:STA addr%:BCC findword:INC addr%+1:BCS findword
Y.found LDY#0:.loop2 LDA(addr%),Y:BMI done:STY temp%:JSR insert:LDY temp%:INY:BNEloop2
@.done CMP#&CB:BEQ cr:CMP#&F9:BNE no_cr:.cr LDA#13:JSR insert
3.no_cr JSRinit:LDA#0:STA tkn%:STA chr%:JMP exit
":.insert TAY:LDA#138:LDX#0:JMPosbyte:.table OPT �Tokens
,]:�pass%:�
60ݤBase:A%=&8000:�:A%=A%+1:�!A%=&80444E41:=A%
@GݤTokens:�:�d$:t%=0:�i%=1�136�2:?P%=�("&"+�d$,i%,2)):t%=t%+(?P%*i%)
J1P%=P%+1:�:�C%:�t%<>C% �"Data Error":� �=pass%
T� Tokens Data
^�� ADAEE1D99AD5939290E4B9C885CDF18ABDBEA7C0C1B0C2C4C3F8A3E2A0D496D6C6CCFBDF8BE3E59DE8B2D7C9EBEDCBF0EAF9888CFDEFF7F2F5E0ECFCDCF6E6C7A691F3D8,&ECBF7
�
00000000  0d 00 0a 10 f4 20 51 75  69 63 6b 20 54 79 70 65  |..... Quick Type|
00000010  0d 00 14 18 f4 20 42 79  20 53 74 65 70 68 65 6e  |..... By Stephen|
00000020  20 52 61 6d 70 6c 69 6e  0d 00 1e 18 f4 20 28 63  | Ramplin..... (c|
00000030  29 20 54 68 65 20 4d 69  63 72 6f 20 55 73 65 72  |) The Micro User|
00000040  0d 00 28 15 2a 4b 45 59  31 30 20 4f 4c 44 7c 4d  |..(.*KEY10 OLD|M|
00000050  52 55 4e 7c 4d 0d 00 32  0a 2a 46 58 32 30 30 0d  |RUN|M..2.*FX200.|
00000060  00 3c 08 eb 31 33 35 0d  00 46 87 63 68 72 25 3d  |.<..135..F.chr%=|
00000070  26 38 30 3a 61 64 64 72  25 3d 26 38 31 3a 74 6b  |&80:addr%=&81:tk|
00000080  6e 25 3d 26 38 33 3a 74  65 6d 70 25 3d 26 38 34  |n%=&83:temp%=&84|
00000090  3a 69 6e 73 76 3d 26 32  32 41 3a 6f 73 62 79 74  |:insv=&22A:osbyt|
000000a0  65 3d 26 46 46 46 34 3a  6f 73 63 6c 69 3d 26 46  |e=&FFF4:oscli=&F|
000000b0  46 46 37 3a 6f 6c 64 76  3d 21 69 6e 73 76 20 80  |FF7:oldv=!insv .|
000000c0  26 46 46 46 46 3a 62 61  73 65 25 3d a4 42 61 73  |&FFFF:base%=.Bas|
000000d0  65 3a f2 61 73 73 65 6d  62 6c 65 3a e7 6f 6c 64  |e:.assemble:.old|
000000e0  76 3d 71 74 79 70 65 20  8c 20 d6 21 2d 34 0d 00  |v=qtype . .!-4..|
000000f0  50 09 2a 46 58 31 38 0d  00 5a 2f f1 27 22 50 72  |P.*FX18..Z/.'"Pr|
00000100  65 73 73 20 53 50 41 43  45 20 74 6f 20 73 61 76  |ess SPACE to sav|
00000110  65 20 63 6f 64 65 20 61  73 20 51 74 79 70 65 22  |e code as Qtype"|
00000120  3a 2a 46 58 32 31 0d 00  64 38 f5 fd a5 3d 33 32  |:*FX21..d8...=32|
00000130  3a 24 26 37 30 30 3d 22  53 41 56 45 20 51 74 79  |:$&700="SAVE Qty|
00000140  70 65 20 39 30 30 20 22  2b c3 7e 50 25 3a 58 25  |pe 900 "+.~P%:X%|
00000150  3d 30 3a 59 25 3d 37 3a  d6 6f 73 63 6c 69 0d 00  |=0:Y%=7:.oscli..|
00000160  6e 09 d6 69 6e 69 74 0d  00 78 05 e0 0d 00 82 0e  |n..init..x......|
00000170  dd f2 61 73 73 65 6d 62  6c 65 0d 00 8c 22 e3 70  |..assemble...".p|
00000180  61 73 73 25 3d 30 b8 32  88 32 3a 50 25 3d 26 39  |ass%=0.2.2:P%=&9|
00000190  30 30 3a 5b 4f 50 54 70  61 73 73 25 0d 00 96 45  |00:[OPTpass%...E|
000001a0  2e 69 6e 69 74 20 4c 44  58 23 71 74 79 70 65 20  |.init LDX#qtype |
000001b0  83 32 35 36 3a 4c 44 59  23 71 74 79 70 65 20 81  |.256:LDY#qtype .|
000001c0  32 35 36 3a 53 45 49 3a  53 54 58 69 6e 73 76 3a  |256:SEI:STXinsv:|
000001d0  53 54 59 69 6e 73 76 2b  31 3a 43 4c 49 3a 52 54  |STYinsv+1:CLI:RT|
000001e0  53 0d 00 a0 58 2e 71 74  79 70 65 20 50 48 50 3a  |S...X.qtype PHP:|
000001f0  53 54 41 20 63 68 72 25  3a 54 58 41 3a 42 4e 45  |STA chr%:TXA:BNE|
00000200  20 6e 6f 74 5f 6b 65 79  3a 50 48 41 3a 54 59 41  | not_key:PHA:TYA|
00000210  3a 50 48 41 3a 4c 44 41  20 63 68 72 25 3a 43 4d  |:PHA:LDA chr%:CM|
00000220  50 23 97 22 20 22 3a 42  45 51 20 63 68 65 63 6b  |P#." ":BEQ check|
00000230  3a 53 54 58 20 74 6b 6e  25 0d 00 aa 4c 2e 66 69  |:STX tkn%...L.fi|
00000240  6e 64 74 6b 6e 20 43 4d  50 23 97 22 21 22 3a 42  |ndtkn CMP#."!":B|
00000250  43 43 20 65 78 69 74 3a  43 4d 50 23 97 22 60 22  |CC exit:CMP#."`"|
00000260  2b 31 3a 42 43 53 20 6f  74 68 65 72 73 3a 53 45  |+1:BCS others:SE|
00000270  43 3a 53 42 43 23 97 22  21 22 3a 42 50 4c 20 67  |C:SBC#."!":BPL g|
00000280  65 74 74 6b 6e 0d 00 b4  4c 2e 6f 74 68 65 72 73  |ettkn...L.others|
00000290  20 80 23 26 44 46 3a 43  4d 50 23 97 22 5b 22 3a  | .#&DF:CMP#."[":|
000002a0  42 43 43 20 6c 6f 77 65  72 3a 43 4d 50 23 97 22  |BCC lower:CMP#."|
000002b0  5f 22 3a 42 43 53 20 65  78 69 74 3a 53 45 43 3a  |_":BCS exit:SEC:|
000002c0  53 42 43 23 32 37 3a 42  50 4c 20 67 65 74 74 6b  |SBC#27:BPL gettk|
000002d0  6e 0d 00 be 38 2e 6c 6f  77 65 72 20 53 45 43 3a  |n...8.lower SEC:|
000002e0  53 42 43 23 97 22 21 22  3a 2e 67 65 74 74 6b 6e  |SBC#."!":.gettkn|
000002f0  20 54 41 58 3a 4c 44 41  20 74 61 62 6c 65 2c 58  | TAX:LDA table,X|
00000300  3a 53 54 41 20 74 6b 6e  25 0d 00 c8 38 2e 65 78  |:STA tkn%...8.ex|
00000310  69 74 20 50 4c 41 3a 54  41 59 3a 50 4c 41 3a 2e  |it PLA:TAY:PLA:.|
00000320  6e 6f 74 5f 6b 65 79 20  54 41 58 3a 4c 44 41 20  |not_key TAX:LDA |
00000330  63 68 72 25 3a 50 4c 50  3a 4a 4d 50 20 6f 6c 64  |chr%:PLP:JMP old|
00000340  76 0d 00 d2 44 2e 63 68  65 63 6b 20 4c 44 41 23  |v...D.check LDA#|
00000350  26 37 39 3a 4c 44 58 23  26 38 30 3a 4a 53 52 20  |&79:LDX#&80:JSR |
00000360  6f 73 62 79 74 65 3a 54  58 41 3a 42 50 4c 20 65  |osbyte:TXA:BPL e|
00000370  78 69 74 3a 4c 44 41 20  74 6b 6e 25 3a 42 45 51  |xit:LDA tkn%:BEQ|
00000380  20 65 78 69 74 0d 00 dc  40 2e 72 65 73 65 74 20  | exit...@.reset |
00000390  4c 44 58 23 6f 6c 64 76  20 83 32 35 36 3a 4c 44  |LDX#oldv .256:LD|
000003a0  59 23 6f 6c 64 76 20 81  32 35 36 3a 53 45 49 3a  |Y#oldv .256:SEI:|
000003b0  53 54 58 69 6e 73 76 3a  53 54 59 69 6e 73 76 2b  |STXinsv:STYinsv+|
000003c0  31 3a 43 4c 49 0d 00 e6  52 2e 64 65 6c 65 74 65  |1:CLI...R.delete|
000003d0  20 4c 44 41 23 26 37 46  3a 4a 53 52 20 69 6e 73  | LDA#&7F:JSR ins|
000003e0  65 72 74 3a 4c 44 41 23  62 61 73 65 25 20 83 32  |ert:LDA#base% .2|
000003f0  35 36 3a 53 54 41 20 61  64 64 72 25 3a 4c 44 41  |56:STA addr%:LDA|
00000400  23 62 61 73 65 25 20 81  32 35 36 3a 53 54 41 20  |#base% .256:STA |
00000410  61 64 64 72 25 2b 31 0d  00 f0 4a 2e 66 69 6e 64  |addr%+1...J.find|
00000420  77 6f 72 64 20 4c 44 59  23 26 46 46 3a 2e 6c 6f  |word LDY#&FF:.lo|
00000430  6f 70 31 20 49 4e 59 3a  4c 44 41 28 61 64 64 72  |op1 INY:LDA(addr|
00000440  25 29 2c 59 3a 42 50 4c  20 6c 6f 6f 70 31 3a 43  |%),Y:BPL loop1:C|
00000450  4d 50 20 74 6b 6e 25 3a  42 45 51 20 66 6f 75 6e  |MP tkn%:BEQ foun|
00000460  64 0d 00 fa 53 2e 69 6e  63 61 64 64 72 25 20 49  |d...S.incaddr% I|
00000470  4e 59 3a 54 59 41 3a 53  45 43 3a 41 44 43 20 61  |NY:TYA:SEC:ADC a|
00000480  64 64 72 25 3a 53 54 41  20 61 64 64 72 25 3a 42  |ddr%:STA addr%:B|
00000490  43 43 20 66 69 6e 64 77  6f 72 64 3a 49 4e 43 20  |CC findword:INC |
000004a0  61 64 64 72 25 2b 31 3a  42 43 53 20 66 69 6e 64  |addr%+1:BCS find|
000004b0  77 6f 72 64 0d 01 04 59  2e 66 6f 75 6e 64 20 4c  |word...Y.found L|
000004c0  44 59 23 30 3a 2e 6c 6f  6f 70 32 20 4c 44 41 28  |DY#0:.loop2 LDA(|
000004d0  61 64 64 72 25 29 2c 59  3a 42 4d 49 20 64 6f 6e  |addr%),Y:BMI don|
000004e0  65 3a 53 54 59 20 74 65  6d 70 25 3a 4a 53 52 20  |e:STY temp%:JSR |
000004f0  69 6e 73 65 72 74 3a 4c  44 59 20 74 65 6d 70 25  |insert:LDY temp%|
00000500  3a 49 4e 59 3a 42 4e 45  6c 6f 6f 70 32 0d 01 0e  |:INY:BNEloop2...|
00000510  40 2e 64 6f 6e 65 20 43  4d 50 23 26 43 42 3a 42  |@.done CMP#&CB:B|
00000520  45 51 20 63 72 3a 43 4d  50 23 26 46 39 3a 42 4e  |EQ cr:CMP#&F9:BN|
00000530  45 20 6e 6f 5f 63 72 3a  2e 63 72 20 4c 44 41 23  |E no_cr:.cr LDA#|
00000540  31 33 3a 4a 53 52 20 69  6e 73 65 72 74 0d 01 18  |13:JSR insert...|
00000550  33 2e 6e 6f 5f 63 72 20  4a 53 52 69 6e 69 74 3a  |3.no_cr JSRinit:|
00000560  4c 44 41 23 30 3a 53 54  41 20 74 6b 6e 25 3a 53  |LDA#0:STA tkn%:S|
00000570  54 41 20 63 68 72 25 3a  4a 4d 50 20 65 78 69 74  |TA chr%:JMP exit|
00000580  0d 01 22 3a 2e 69 6e 73  65 72 74 20 54 41 59 3a  |..":.insert TAY:|
00000590  4c 44 41 23 31 33 38 3a  4c 44 58 23 30 3a 4a 4d  |LDA#138:LDX#0:JM|
000005a0  50 6f 73 62 79 74 65 3a  2e 74 61 62 6c 65 20 4f  |Posbyte:.table O|
000005b0  50 54 20 a4 54 6f 6b 65  6e 73 0d 01 2c 0e 5d 3a  |PT .Tokens..,.]:|
000005c0  ed 70 61 73 73 25 3a e1  0d 01 36 30 dd a4 42 61  |.pass%:...60..Ba|
000005d0  73 65 3a 41 25 3d 26 38  30 30 30 3a f5 3a 41 25  |se:A%=&8000:.:A%|
000005e0  3d 41 25 2b 31 3a fd 21  41 25 3d 26 38 30 34 34  |=A%+1:.!A%=&8044|
000005f0  34 45 34 31 3a 3d 41 25  0d 01 40 47 dd a4 54 6f  |4E41:=A%..@G..To|
00000600  6b 65 6e 73 3a f7 3a f3  64 24 3a 74 25 3d 30 3a  |kens:.:.d$:t%=0:|
00000610  e3 69 25 3d 31 b8 31 33  36 88 32 3a 3f 50 25 3d  |.i%=1.136.2:?P%=|
00000620  a0 28 22 26 22 2b c1 64  24 2c 69 25 2c 32 29 29  |.("&"+.d$,i%,2))|
00000630  3a 74 25 3d 74 25 2b 28  3f 50 25 2a 69 25 29 0d  |:t%=t%+(?P%*i%).|
00000640  01 4a 31 50 25 3d 50 25  2b 31 3a ed 3a f3 43 25  |.J1P%=P%+1:.:.C%|
00000650  3a e7 74 25 3c 3e 43 25  20 f1 22 44 61 74 61 20  |:.t%<>C% ."Data |
00000660  45 72 72 6f 72 22 3a e0  20 8b 3d 70 61 73 73 25  |Error":. .=pass%|
00000670  0d 01 54 11 f4 20 54 6f  6b 65 6e 73 20 44 61 74  |..T.. Tokens Dat|
00000680  61 0d 01 5e 95 dc 20 41  44 41 45 45 31 44 39 39  |a..^.. ADAEE1D99|
00000690  41 44 35 39 33 39 32 39  30 45 34 42 39 43 38 38  |AD5939290E4B9C88|
000006a0  35 43 44 46 31 38 41 42  44 42 45 41 37 43 30 43  |5CDF18ABDBEA7C0C|
000006b0  31 42 30 43 32 43 34 43  33 46 38 41 33 45 32 41  |1B0C2C4C3F8A3E2A|
000006c0  30 44 34 39 36 44 36 43  36 43 43 46 42 44 46 38  |0D496D6C6CCFBDF8|
000006d0  42 45 33 45 35 39 44 45  38 42 32 44 37 43 39 45  |BE3E59DE8B2D7C9E|
000006e0  42 45 44 43 42 46 30 45  41 46 39 38 38 38 43 46  |BEDCBF0EAF9888CF|
000006f0  44 45 46 46 37 46 32 46  35 45 30 45 43 46 43 44  |DEFF7F2F5E0ECFCD|
00000700  43 46 36 45 36 43 37 41  36 39 31 46 33 44 38 2c  |CF6E6C7A691F3D8,|
00000710  26 45 43 42 46 37 0d ff                           |&ECBF7..|
00000718
Quick.m0
Quick.m1
Quick.m2
Quick.m4
Quick.m5