LB€'ШSoftlife Keypad Software V2.00(C) 1985 by Softlife Ltd.Щ№Щ№ Щ№Щ № Щ №Щ№ `LLњ€L:LiL…HŠH˜HЂБђ)пЩKаШБђ)пЩ!*на€ашШLz€ЂhЈHБђ)пЩKаШБђ)пЩ!нд€ашШLš€На€ал м€LШ€Нд€а $LШ€hЈhЊh`hЈhЊhЉ`PADRELEASEЉ№bўЉ@nўЉlўЉnўЂ Љ єџ`H­mў0)аh`ŠH˜H­`ў)ЊМ*ЂЉŠ єџhЈhЊhЉ`Љnў`-923817 6.E504H˜H ЙO№ уџШL?hЈh`Softlife Numeric Keypad H˜IХєЉ€…іЉ†…їЅєI…ѕhЉ`h`HЅѕIХєаѕ БіЈціацїhЉ`HБђЩ аSЂНДшЩџ№G уџLІ Softlife numeric keypad software V2.00 Normal Programmable џh`Ђ˜HБђ)пЩ! н8‚а шШLћН8‚аLL‚hHЈЂБђ)пЩ! н?‚а шШL‚Н?‚аLx‚hЈh`NORMALPROGRAMMABLEЅpHЅqH Љš…pЉ‚…qБpЩџ№ уџцpацqL\‚h…qh…phЈh`ЅpHЅqH Љš…pЉ„…qБpЩџ№р уџцpацqLˆ‚ The Softlife numeric keypad should be connected to the user port on the micro and the EPROM containing the software should be inserted in one of the sideways ROM sockets on the right of the main circuit board (or on a ROM expansion board). Once this is fitted, the keypad may be bought into operation using *PAD and stopped by using *RELEASE Either of these commands may be prefixed by "K" (*KPAD, *KRELEASE) in case of clash with other sideways ROMs. Please refer to the manual for more detail if required. џ Please see the manual for details of creation of the programmable software. Once produced, the software may be *RUN. The keypad will now produce the characters as set up. To disable the software, type *LINE followed by . Please see the manual for more details. џHardware design by Andrew Thomson, software design by Alastair France. All rights reserved. (C) 1984 and 1985 by Softlife Ltd., 7 Rose Crescent, CAMBRIDGE, CB2 3LL. Many thanks to all involved with the project.*MAKEKEYџџ#€џџ”ОЖ jє(C) Softlife Ltd. 7 Rose Crescent Cambridge CB2 3LL. This version written by Alastair France 9/10/84 є ALL RIGHTS RESERVED ы7 ( уP%=0И1 2+ђCENTRE(Н141+"Softlife Numeric Keypad") <э Fё"Programming Procedure" Pё''"Use cursor keys to move эК#to the positionsrequired. When there, press the key"'"on the BBC keyboard that you want to"'"use on the BBC." Z‰ё'"If you wish to use a key that is not"'"available on the BBC keyboard, press"'"the TAB key, and then enter that value in decimal." d1ё'''"PX#ress once keys have been set." n&ёŠ10,23)"PressˆSPACE‰to continue"; x ѕ§Ѕ=32 ‚л Œ оA%(3,3) –/уB%=0И3:уC%=0И3:A%(B%,C%)=—(У~(4*B%+C%)):э,   ю…хtxA Њ *FX4,1 Дя23,1,0;0;0;0; О X%=0:Y%=0 Шѕ вёŠ0,24)‰(30); муB%=0И3:ёŠ0,20-2*B%)‰(5);:эГ# цёŠY%*5+12,24)"^"; №ёŠ0,20-2*X%)"]"; њд1,-8,100,1  *FX21,0 уB%=3 И 0 ˆ -1  уC%=0 И 3 "„чA%(B%,C%)>32 € A%(B%,C%)<127 Œ ёŠ10+5*C%,20-2*B%)"‰‡";НA%(B%,C%);" "; ‹ ёŠ10+5*C%,20-2*B%)"‰†";У(A%(B%,C%));‰(3-ЉУ(A%(B%,C%))) ,э, 6ёŠ10+5*Y%,20-2*XыС#%)"ˆ"; @Z%=Ѕ JчZ%=137€Y%<3ŒY%=Y%+1 TчZ%=136€Y%>0ŒY%=Y%-1 ^чZ%=138€X%>0ŒX%=X%-1 hчZ%=139€X%<3ŒX%=X%+1 rчZ%>135€Z%<140ŒtnA |чZ%<>9ŒA%(X%,Y%)=Z%:хtnA †ёŠ0,5)"Select number :";  ш†""I% šёŠ0,5)‰(39); Є$чI%<0„I%>255ŒtFA ‹ A%(X%,Y%)=I% Ў‡#§0 И *FX4,0 Тю…‡ Ь M%=&70 ж%уB%=0И15:ѓX%,Y%:M%?B%=A%(Y%,X%):э ры7 ъи є г=&3000 ўuserv=&200 irq1v=&204 ё"Softlife Numeric Keypad" ё"Programming Operation" & S%=&3000 0уPASS=0И2ˆ2 :ђASS Dэ Nи Xuserv=&200 birq1v=&204 lrom_nRў#umber=?&80 v S%=&4001 €уPASS=0И2ˆ2 ŠђASS ”э žS%=P%-&4001 Јё'"Address for code? &"; В ш†""A$ МO%= ("&"+A$) ЦуT%=0ИS%-1 ачT%?&3000=T%?&4001Œ dnB кxчT%?&3000=&30 € T%?&4001=&40 Œ D%=M%+256*(T%?&3000):D%=D%-&3000+O%:L%?&3000=D%:T%?&3000=D% Ц=# 256 ‹ M%=T%?&3000:L%=T% фM%=T%?&3000:L%=T% юэ ј*ё''"Please select your filing system:" ш†"*"$&4000  X%=0:Y%=&40:ж&FFF7 *уcount%=0И15:count%?&3000=count%?&70:э  ё"Save Filename :"; * ш†""A$ 4O%=O% „ &FF0000 >C$&4000=("SAVE "+A$+" 3000 +"ƒв#+У~S%+" "+У~(O%+OK-&4001)+" "+У~O%) H ж&FFF7 Rр \6нЄYN:ъY%:ѕ:Y%=Ѕ€31:§Y%=25„Y%=14:ёН(Y%+64):=(Y%=25) fнЄEQUW(A%) p ?P%=A% zP%?1=A%  256 „ P%=P%+2 Ž =PASS ˜нЄEQUS(A$) ЂъJ% Ќ уJ%=1ИЉA$ Ж?P%=—(СA$,J%,1)) Р P%=P%+1 Ъэ д =PASS о нђASS шЉd# P%=S% ђ [OPT PASS ќ/.lookup_table OPT ЄEQUS("F7E56D4CB3A12908") .init_pgm BCS OK RTS .OK $пPHP:SEI:LDAirq1v:STAirqsavvec:LDAirq1v+1:STAirqsavvec+1:LDA#&F0:STA&FE62:LDA#&40:STA&FE6E:LDA#&8:STA&FE6C:LDA#&90:STA&FE6E:LDA#&7F:STA&FE6D:LDX#0:LDY#0:/k#LDA#&81:JSR&FFF4:LDAuserv:STAusersavvec:LDA userv+1:STAusersavvec+1 .ЦLDA#lineinp ƒ 256:STA userv:LDA #lineinp  256:STA userv+1:LDA #inrtpt ƒ 256:STA irq1v:LDA #inrtpt  256:STA irq1v+1:PLP:LDA#247:LDX#&4C:LDY#0:JSR&FFF4:LDA#248:LDX# init_pgm € 255:LDY#0ЯД#:JSR&FFF4 82LDA#249:LDX# init_pgm  256:LDY#0:JSR&FFF4:RTS BL.lineinp CMP#1:BNE out1:LDA #&10:STA &FE6E:LDA #247:LDX#0:LDY#0:JMP&FFF4 L.out1 JMP (usersavvec) V.irqsavvec OPT ЄEQUW(0) `.usersavvec OPT ЄEQUW(0) j6.inrtpt PHA:LDA&FE6D:BMIintok1:PLA:J†#MP (irqsavvec) tPLA:JMP (irqsavvec) ~/.intok1 €#&10:BNEintok2:PLA:JMP (irqsavvec) ˆr.intok2 TXA:PHA:TYA:PHA:LDA&FE60:€#&F:TAX:LDY lookup_table,X:LDX #0:LDA #138:JSR &FFF4:PLA:TAY:PLA:TAX:PLA:RTI ’ ] œс ІнђCENTRE(A$) АёŠ20-ЉA$2)A$ Кс ФDм3,3,яњ*MAKEKEYџџ#€џџ =€”4r3,1,2,3,1,1,2,1,1,3,0,1,0,3,3,2,3,0,2,2,1,0,2,0,1,2,0,0,0,2 џбЯ+џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџ