IMD 1.16: 31/05/2007 19:49:24 FOGCPM.101 --FOGCPM101KEYSET34COM} KEYSET34DOC !"KEYSET34DOC"#$%&'-07-00 86 -CPM101 DOCQWIKSET COM$()*+,QWIKSET DOC -.QWIKSET AQM/0123456789:;<=>QWIKSET AQM0?@ABCDQWIKSET2COM'EFGHIQWIKSET2AQMJKLMNOPQRSTUVWXYQWIKSET2AQM;Z[\]^_`aSAVKEY COMbSETKEY COMcSET-SAV DOC deSUBSET1 COMfghSUBSET2 COMijkSUBSET C lmSUPRSET1COM8nopqrstSUPRSET2COM8uvwxyz{SUPERSETDOC|}~SUPERSETDSCSUPERSETC {SET COMSET DOCESET-O1 COMSET-O1 AQMuSETUP DOCThis is the disk name. Ì%G/G/G/- ++++ +%+*+/+4+9+)))))))))));ā2;,!,-!,-*:|N,>,H:7=<>,NǴ:7=<2;ā2;!,-,\,"H*;|t,d,H];a;:=ʋ,>H;H{HNo Fatal error(s) Warning(s):;GHk+-!,-,REPT/IRP/IRPC/MACROUnterminated -!&--> > :7=<> NG> NG!,w:7=?Q!9~#Q!!9s#rt`i^!<?ʀ!9~#€!!9s#r`i#DM^! ?“`i^! ?ʖt`i!9s#r`i#DM~`i^! ?`i^! ?!`i#DM+sà!9^#VA-!9~# !! 9^#V>+!9s#r#!! 9^#V^+!9s#r!9^#V!?}! !9!9^#V!X:!/!X:!:!!3! ͜)`i*k#"k+)s#r`i#DM~!9~#`i^! ?`i^! ?!`i#DM+s`i^!"?!`i#DM+sÔë!*k1͜)Can't open file for redirection: ! 9^#V!?N!͜):!!9s#rp!9~#fo#s#r+!9^#V! 9~#fo_!9^#V)!9~#fo^#V^!-?!9^#V)!9~#fo^#V#^{!9^#V)!9~#fo^#V#^!9s#r!9~#fo#s#r)!9~#fo^#V!9^#VͿ! !9~#fo#s#r)!9~#fo^#V!ͱ!9~#fo#s#r)!9~#fo^#V!ͱ!9~#fo#s#r)!9~#fo^#V!9~#fo#s#r)!9~#fo^#V!ͼ!9~#fo#s#r)!9~#fo^#V!ͼ!!ͼ!9~#fo#s#r)!9~#fo^#V!ͼ͆!9~#fo#s#r)!9~#fo^#Vp!1 !͜)!h!^#Vhhhhhhh6hhh?<hh#Nyhhh0hB_!͜)wrDUMMYInvalid Operator!*D^#V!9s#r*<!9~#foS!9s#r! 1 *H^zW ! 1 Ó *H^!?q ! 1 Ó *H^!?ʋ ! 1 Ó !1 1 *H^!z *J!9s#r !9~#fo#s#r+*F^*J!9^#Vͳ !9^#V^ð !Q 1 *B! 9s#r!! 9s#r2 ! 9~#fo##s#r++! 9~#fo#s#r+! 9^#V*Dͳ ! 9^#V! ? !! 9^#Ve 1 !!:! 9^#V^#V!9s#rÛ !9~#fo#s#r+! 9^#V##^#V!9^#Vͳ !9^#V^Ê !T 1  !V 1 !s 1 !9^#V^! 1 !9~#fo#s#r^! 1 !9~#fo#s#r^! 1 !9~#fo#s#r^! 1 !9^#V!?u ! 1 !9^#V!?ʍ ! 1 ! 1 !!9^#Ve 1 ! 1  Keyset v3.4 Z-Lab Soft Systems (c)1984 )No Boot Command.( )Cold Boot Command (: )Warm Boot Command (: )Cold/Warm Boot Command (: )l Arrow Keys m( (U))p(: (R))ight(: (D))own(: (L))eft(:  Boot command string too long.  Key definition too long. )There are( )characters currently available.(!9^#V~d !! 9~#fo#s#r+^6 ! 9^#V!yʍ ! 9^#V! 9s#r!!9s#r! 9^#V! ͓0!9~#fo#s#r+!9~#fos! ! 9~#fo%s#r!z˜ !!9^#V!9~#fos! 9^#V'!!9^#V!9~#fos! 9^#V!!9s#r!9^#V:+!9s#rq!9~#fo#s#r+!9~#fo+s#r#!9^#V!9~#foy!9^#V!9~#fo^!9s#r!9^#V!9~#fo^!9^#V!9~#fos!9^#V!9^#V!9~#fosO!9^! ?!9^! ?!1 !9^!?,!1 !9^zH!! Î!9^! y}!!^!! 9^!@Î!! 9^)()(!!`9s#r!!^9s#r!`9~#fo#s#r+!^9~#fo#s#r+!f9^#V:!b9^#V_ʠ!f9^#V!`9~#fo^!^?J!`9~#fo#s#r!f9~#fo^!!`9^#V!9sÝ!f9^#V!`9~#fo^!<?{! !`9^#V!9sÝ!f9^#V!`9~#fo^!`9^#V!9s!9!h9^#V9!f9^#V:!n!9s*B!9s#r*B!9s#r!9^#VÉ!9^#V!)!9~#fos#r!!9~#fos#r!a!9s!!9~#fos#r!a!9s!!9~#fos#r!a!9s!!9~#fos#r!a!9s~0123456789DKLjR,U !9^#V##!9s#r!9^#V^#V!9^#V^#VS!9s#r*D^#V!9s#r*<!9~#foS!9~#fo! 9s#r!9^#V͢!9^#V:!9s#r!9^!a?f!! 9s#r!9^#V! 9~#fozʃ! !9^#V!9~#foS! 9s#r!9^#V^#V!9^#V^#VS!9s#r!9^#V!9^#V^#V!Nx9!9^#V!9^#V! 9^#V!Nx9!9^#V^#V!9^#VS!9^#V^#V! 9^#V!9~#foNx9!9^#V^#V*D^#VS!9~#fo!N!9^#V^#Vx9!9^#V*Dͦʰ! 9^#V!9~#fo##s#r++~#fos#rv*B!9s#r!9^#V! 9s#r!9^#V͢!9^#V:! 9s#r! 9^#V!z!1 !͜)!9^#V!9^#V!9s#rzA!1 !͜)!9^#V^z! 9^#V*Dͦʏ!9^#V!9^#V^#V͖!! 9~#fo##s#r++P!9^#V^#V!9s#r*D^#V!9^#Vͦ!9^#V!9^#V^!!9~#fo#s#r+áÉ! 9^#V*Dͦ%!9^#VG !9^#Vs#r! 9~#fo##s#r++!9^#V^#V!9s#r*D^#V!9^#Vͦw!9^#V͗ !9^#Vs!9~#fo#s#r+7É~wPr!9^#V}" Improper file name.Can't open file*J!9s#r!! 9s#r*F^!9s#r!*Fs*B!9s#r*B!9s#r!9^#V^#V!9s#r*D^#V!9s#r*<!9~#foS!9~#fo!9s#r!9^!z!9^#V͢!9^#V:! 9s#r! 9~#fo#s#r+! 9^#V*Fs! *F^! 9~#fos! 9^#V!9~#foz!9^#V*Fs! ! 9^#V! 9^#V!Nx9!9^#V^#V!9^#VS!9^#V^#V!9^#V!Nx9!9^#V^#V!9^#VS! 9~#fo!N!9^#Vx9!9^#V! 9~#fo!9^#Vs#r!9^#V! 9~#fo!9~#foS! 9s#r!9^#V##!9s#r!9^#V*Dͦ! 9^#V!9~#fo##s#r++~#fos#rç!9^*Hs!!9s#r!9^#V^! 9s#r!9^#V͢!9^#V^[!! 9s#rj!! 9s#rj!v1 !͜)j~A,B:H! 9^#V!ͤ%:*:!9s#r:>o&!9s#rë!9~#fo#s#r+:?o&!9^#V_d:@o&!9s#r!9~#fo#s#r+:Ao&!9^#V_a!!9^#V! ͸%!!9^#V! ͸%!! 9^#V! ͸%!!!͸%!!9~#fos#rÚ! 9^#V!ͤ% Invalid drive*:i!9s#r!9^#V^!U?ʿ!V!9^#Vs!9^#V^!V?!U!9^#Vs*:h!9s#r!9^#V^!?!!9^#Vs9!9^#V^z9!!9^#Vs!!9s#r!9^#V^#V":!*:S":*:#!9s#r!9^#V^#V!9s#r!!9s#r*:k"B*:"D*:"<!9^#V*:Sy*:"H*:"F*:"J!}2>!}2?!}2@!}2Ao*:"H*:"F*:"J!9^#V^!S!}2>!}2?!}2@!}2Ao!}2>!}2?!}2@!}2A!l!9s#r*:j!9s#r! 9^#V8!9s!9^!z!9^!y!!9s!9^!9^#Vs!9^!9^#VsÈEL|g}o|/g}/o^#V#DM!99`i|z2ͤ:}ͽ}}I|X!}X|I!}|q}|?>o&zo&|}|>o&|o&z2ͤ:||/g}/o#z/W{/_ýDM!>2))#}o|g :=2}:=2}DM!>)) =}}/o|/g#}|XI|g}o{_P||7g}o6{_P)K}}o|gN#F# N#F#zt{x##^#VBK^#Vz#yʘ###Æ#x“#~#fo}|>?o&}|>o&{_P|g}o|g}o~# x!9~#!|! DM`i~3`i DMͥ0!! 9^#V#^!+?!9s#r! 9^#V^6!9~#l!o!! 9^#V^+! s!?ʐ!I!9~#ʣ!æ!!! 9^#V^+! s!?!I!9~#!!!! 9^#V^+! s!? !!́;ͮ;! ^6!9I!"!~r\wa,!! s!! s#r!`is#r! s#r! s#r`i!9N#F`i~ʭ!`i#DM+^?ʪ!Ã!! !9N#F`i~! 9^#V`i#DM+^?!!!9N#F!PYDM`i ?8 ! 9^#V! !?8 !! 9^#V!! 9^#V͗ DM?€ ! 9^#V͗ !9s#r!?ʄ !!9^#V!CPY!! 9N#F! ^#V`i^#Vͥf!! ^! !!`in&s`i~# n$! ^#V! ^#V! ^\0!9s#r!_I!!9~#0!!3!!`in&!s!! ^#V`is#r!9~#fo! s#r`i~#fo#s#r+^!!#! 9^#V!!9N#F! 9^#V!yʾ!!! 9^#V`i!y!!`i! 9N#F! ^#V`i^#Vͥ"!9^#V!#!9^#V`i~#fo#s#r+s!!! 9^#V#! DM`iͳ|"`i DM}"\"! 9N#F!!9s#r`i~ #! ^!"!#!9s#r! ^A-!9~#fo!s#r! ^! #*! ^#Vs#r! ^#V"!! s!9^#V! 9N#F! ^!ʑ#! ^#V`i^#VS!9s#r!9^#V! ^#V! ^3?ʑ#!`in&!s!! 9^#V!?#!`in&s!`is#r! s#r!`i~##n$! ^#V!?$!!9! ^3?x#! 9^#V! ^#V`is#r! ^#V! ^#V! s#r!`in&!s! 9^#V`i~#fo#s#r+s!! 9N#F! ^#V!?ʙ$`i! s#r*|ʹ$*!9s#r*^#V"$! ^#V%!9s#rz$!! s#rÊ$!`in&!s!9^#V! s#r*%|#%!v&"%"%*%DM!9^#V*%"%PYͳH%`i"%!*%*%ʹʇ%*%*%S!9s#rv&?%!9^#V*%"%`i?*mÓ%ͧ%*DM*o&%o&**+++*DM*!9N#F#^#Vkb6#> 6 #=%>6#=% : >,& Af&[&@)&af&{f&`w# .G&`&/&m&w#0&{o|g `&m&w#Q&!!|a{ !9^#V*%!9}|ژ&*%"%|!8C!MO.39C!MO.40C!MO.41PC!&MO.43C!)MO.42C!3MO.44C!kMO.45PC!YMO.47C!hMO.46FtMOCLOSE_C!MO.48^WFMOCREAT_C!MO.49EMOOPEN!!!&x9!:o&&s!w)"&!&DM!"Y'*Y'yd)`i^! ?'`i^! ?'`i#DMæ'`i^zd)`i^!>?'!!9s#r (`i^!<?)!!9s#r`i#DM^! ?((`i^! ?+( (`i!9s#r`i#DM~m(`i^! ?[(`i^! ?j(!`i#DM+sm(5(!9^#VA-!9~#ʟ(!!9^#V>+!9s#rø(!!9^#V^+!9s#r!9^#V!?)!x)!9!9^#V!X:!)!X:!:!!3! ͜)a)`i*Y'#"Y'+)&s#r`i#DM~a)`i^! ?O)`i^! ?^)!`i#DM+sa)))Ù'!&*Y'1͜)Can't open file for redirection: R"!9~#ʶ)!)ͦ8͓%A:$$$.SUB!"!!FaMOWRTSYSC!2MO.86FaOBOOTSYC!]MO.87C!MO.88MO.89C!MO.90EaMOBAUD_C!MO.91UFauMOAUTOSCC!MO2C!MO.93C!MO.94FaMCRSIZC!MO.95Ea MOPRTS_!$MO.96TC MO.98CLM.SBC!GMO.97C!MO.99D!&MO.100con:CON:lst:LST:prn:PRN:pun:PUN:rdr:RDR:! 9^#V!! 9^#V^+!! 9s#r!!9s#rÝ+! 9~#fos#r!9~#fo#s#r!9^#V! y+! 9^#V!^#V!)?+|+!"!!DM+`iDM`i~#,!9^#V`i^#Vʹ9,+! ^#V!9s#r!9^#V!#!9s#r!9^#V![,!9^#V^! 9^#Vsz[,!"!!9^#V!ʒ,!9^#V#^! 9^#V#sz’,!"!! ^#V! 9^#V!s#r!9^#V##^! 9^#V##s!9^#V###^! 9^#V###s!G/! 9^#V!s#r! 9^#V!9^#V!9^#V!9^#V!9^#V!^#V! 9!y8-!!9^#V!9^#V!yf-!9^#V! zp-!"!!9^#V)))DM! ^#V! ^#V!9s#r!! s! s! s`is!)! s#r!9^#V!)DM-`i&DM`i +ͳ-!% ^z.-!"!! 9^#V%.!"!! 9^#V!6.!ͤ%!ͤ%?y.! 9^#V!l.!ͤ%?v.!"!Ù.! 9^#V!?ʙ.!"!!!! s#r!# s!$ s`i!9^#V!s#r! 9^#V!#!% s!.!$/!9^#V!s#r/! /!9^#V!s#r!!! 9^#V!%s!!9N#F!ͤ%!!% s!!)02h368D!MO.169D!)MO.138FNFOPEN_D!MO.170D! MO.171YD!MO.173D!MO.174D!"MO.175YENPUTW_D!4MO.176D!vMO.177E^NPUTC_D!MO.172D!yMO.178D!yMO.179D!MO.180s;ͽ<ͮ;!$ ^>;D<;͈;D<͛;7!"́;~K7777!!# s! 9͈;s;>8!!! s#r!$ s!"́;! 9͈; ?!$ s! 9͈;s;< ?!! s#r! 9͈;!b8"*!"*›8*!48#4*+"}c8o&"*!9!.9^#V%!9!ͤ%! 9N#F!!9s#r`i^!-?9`i#DM!!9s#r9`i^!+?9`i#DM!!9s#r`i^;W9!9^#V! `i#DM+^!9s#r"9!9~#o9!9^#Vw9!9^#V! 9F+N+V+^+~+ngxʖ9w# É9!9^#V#N#F#nxʲ9s# ç9!9^#V#~#fox999# 9!9!}!}!9^#V#~#fox:~:# 9!9~#fo':#:}!9^#V#^#V#N#F9!9^#V#^#V#N#F9!9^#V#~#fox:~y:# j:9!9^#V#^#V#N#Fj:!9^#V#n~ʬ:ʲ:#ß:!|!9^#V#n:#:xʬ: +~:ò:!9~ ; ; ;;!9~A;[;!}!9~a;{;!!9~0;:;;!9~a@;{@; o&!9~AV;[V; o&9^#V##DM! 9^#V!*Ì;!*w#w#w#w*~#~#~#~"[;*V+^+V+^*[;"[;*s#r#s#r*[;**""*>w#;*~º>#;ï>=ɯ<**###-<<1< < <<+3<**#O<**#e<**#z<**#<**#¤<*~/w#´<*~?G*^#V#~#fo))<# 2f;!g;~w#¸=Ok;!o;#=y=!g;4!f;5²=!f;5>!g;~w#=Ok;!o;#>y==k;!o;##>*o;~#6>*k;~#F>!g;w#T>> 2f;!g;~w#e>Ґ>g;!o;#y>Ґ>„>!f;5_>*g;w#Ÿ><ʺ>!<ʯ>!<<>ï><>ʺ>ï><>ú><>ʯ>ú>*s#r#6#6*s#r#z>6#6*^#V5_>*g;w#Ÿ><ʺ>!<ʯ>!<<>ï><>ʺ>ï><>ú><>ʯ>ú>*s#r#6#6*s#r#;!*w#w#w#w*~#~#~#~"[;*V+^+V+^*[;"[;*s#r#s#r*[;**""*>w#;*~º>#;ï>=ɯ<**###-<<1< < <<+3<**#O<**#e<**#z<**#<**#¤<*~/w#´<*~?G*^#V#~#fo))<#KS -s Thi wil displa th boo command i any an indicat whethe i i warm cold both o neither th functio ke definitions th arro ke definition an tel yo ho man character ar lef unuse i the function definition table. Defining Arrow Keys Definin arro key i littl mor comple bu ha simila synta fo th comman line T indicat whic arro ke i t b define jus us th firs lette o th ke nam (L R U,an D) Fo example definin th Lef arro a bac spac (CTR H): A>KS -L "^H" T ente th definitio us '^ (SHIF-6 followe b th characte desired. The following characters will give the effects shown: ^H backspace (CP/M & WordStar) ^S backspace (WordStar only) ^R Abort current line and display the characters that have been entered and allow additional characters to be typed. (CP/M). ^X Abort current line, backspace/erase to start of line (CP/M). Move down one line (WordStar). ^L Line feed (same as RETURN key in CP/M). ^I Advance to next tab column. ^M Carriage return. ^P Toggle printer on/off (CP/M). ^E Up one line (Wordstar). ^D Right one character (WordStar). ^U Abort current line, start over on next line (CP/M). Page 3 KEYSET v3.4 Defining Function Keys T defin on o th functio key (0-9 ther i simpl synta tha mus b use s tha KEYSE wil kno wha yo wan done definitio fo th '1 ke migh loo lik this: A>KS -1 "DIR *.*<" Thi wil defin CTR- (^1 a 'DI *.*' Th optiona '< wil b converte t carriag retur wheneve i i foun i th comman line Th desire definitio mus b enclose i doubl quote o i will not be accepted. Setting The Boot Command T se th boo command on o fou das option mus b use an th comman mus b enclose i doubl quote jus a i th functio ke definitions S th comman lin t se th col boo comman woul b lik this: A>KS -c "DIR *.*<" Th '-c optio tell KEYSE t se th col boo comman t th definitio foun i th quotes Her agai th '< i converte t carriage return. The dash options related to the boot command are: -c "definition" Sets the cold boot command and it executes only on a cold boot. (Not very useful unless installed in the system tracks). -w "definition" Sets the warm boot command and will  execute when ever a program terminates with a warm boot or when ever a CTRL C is typed on the console. -b "definition" Sets the boot command to execute on both warm and cold boot (Once again not very useful unless written to the system tracks). -n Sets no boot command and does not accept any definition. This will turn off any warm boot command in memory and will not affec th col boo comman unles i i writte t th syste tracks Thi functio war boot whe completed ignorin th res o th comman line.  Page 4 KEYSET v3.4 Creating A Function Key File An o th definition entere wit KEYSE tak immediat effec becaus the ar pu directl int th workin functio table Howeve ther ma b time whe differen set o functio ke definition ma b require an th one i memor save fo quic recal whe neede again Wit tha i min KEYSE ca sav th definition currentl i memor t dis fil wit nam o you choice. This is another of the dash options used with KEYSET. A>KS -m "d:filename" Th '-m tell KEYSE t mak th functio ke definitio tabl t th fil name i quote o th specifie driv (driv specificatio i optional) Th filenam an driv convention ar th sam a thos require b CP/ an WordStar Loading From A Function Key File Loadin functio ke defin ition fro dis fil i muc th sam a creatin definitio file Th onl differenc i th das optio used. A>KS -o "d:filename" Th '-o tell KEYSE t ope th fil name i quote o th specifie driv (driv specificatio i optional an loa th functio ke definitio tabl int memor Th filenam an driv convention ar th sam a thos require b CP/ an WordStar Putting Definitions On The System Tracks Thi das optio allow yo t mak th definition residin i memor permanentl par o th syste (unti yo chang the again s tha they are in memory when you boot the system. A>KS -p "A" Th '-p tell KEYSE t mak th definition permanen o th driv specifie i quotes Th nex tim tha dis i use t boo th syste wit col boo thos definition wil b activ i memory Thi i th optio tha wil als se th ne col boo comman fo disk. Page 5 KEYSET v3.4 Multiple Options KEYSE allow mor tha on option t b entere o th comman lin a time Thi i don b typin i eac option, separate b space jus a yo woul ente the on a time Th numbe o option tha ca b entere i limite b th siz o th CP/ command buffer (127 characters) and not more than 30 separate strings. Characte string withi quotes (i.e "cha string" ar considere on string Th orde tha th options occu i th comman lin i th orde o execution Options ma als b repeate i th sam comman lin a man time yo wan (withou exceedin th maximu o 3 option and/o 12 characters) It no likel tha yo wil eve enter enough options at one time to exceed the limits. Let' loo a a exampl o multipl option i comman lin (i bol print entere a th A promp o CP/: A>K - "definition1 - "definition2 - "definition3 - Thi comman lin wil se th '^1 functio ke t 'definition1' th '^4 functio ke t 'definition2' th '^3 functio ke t 'definition3' an the displa th functio ke table An example of repetitiv command ma look like this: A>KS -m "B:first" -5 "^QS^KB^X^KK^QC^KV^QV" -m "A:second" Thi comman wil sav th curren functio key i th fil 'first o driv 'B' chang th '^5 functio ke t '^QS^KB^X^KK^QC^KV^QV' and save the new function key table as file 'second' on drive 'A'. Page 6 Summary of Dash Options Boot Command Options -c "definition" Sets the Cold boot command and it executes only on a cold boot. (Not very useful unless installed in the system tracks). -w "definition" Sets the Warm boot command and will execute when ever a program terminates with a warm boot or when ever a CTRL C is typed on the console. -b "definition" Sets the boot command to execute on Both warm and cold boot (Once again not very useful unless written to the system tracks). -n Sets No boot command and does not accept any definition. This will turn off any warm boot command in memory and will not affec th col boo comman unles i is written to the system tracks. Display Function -s Shows the special function keys and the boot command. Also shows the number of characters available in the function key table. Page 7 Summary of Dash Options Defining Arrow Keys -l "^?" Sets the Left arrow key to the (?) desired control character or any other characte desired Thi functio wil define only one character for an arrow key  (the '^' does not count as a char- acter). -r "^?" Sets the Right arrow key to the (?) desired control character or any other characte desired Thi functio wil define only one character for an arrow key (the '^' does not count as a char- acter). -u "^?" Sets the Up arrow key to the (?) desired control character or any other characte desired Thi functio wil define only one character for an arrow key (the '^' does not count as a char- acter). -d "^?" Sets the Down arrow key to the (?)  desired control character or any other characte desired Thi functio wil define only one character for an arrow key (the '^' does not count as a char- acter). Page 8 Summary of Dash Options Special Function Key File Functions -m "d:filename.typ" Makes a function key file from the def- initions currently in memory. The drive designation and file type are optional. -o "d:filename.typ" Opens a function key file and loads the definitions into memory. The drive designation and file type are optional.  Saving to System Tracks - "d Put th specia functio ke defin- ition currentl i memor ont th sys- tem tracks of the designated drive (d). Defining Function Keys -# "definition" Defines the special function keys, where '# i digi (0 - 9) I t man charac- ters are used KEYSET will display the key tabl an indicat th numbe o charac- ters available. -A Wil toggl Aut scrol o an off War boot o completon. -X Wil toggl th baudrat fro 30 t 1200 War boot o completon. -Z "nn" Wil se th scree siZ t th valu specifie b "nn (fro 1-128) I th valu i greate tha 12 o les tha th valu wil b se t 128 Page 9 Summary of Dash Options Multible Command Syntax Th followin comman entere a th A promp o CP/ A>K - "definition1 - "definition2 - "definition3 - wil se th '^1 functio ke t 'definition1' th '^4 functio ke t 'definition2' th '^3 functio ke t 'definition3' an the displa th functio ke table Repetitiv command ma b entere a well: A>KS -m "B:first" -5 "^QS^KB^X^KK^QC^KV^QV" -m "A:second" Thi comman wil sav th curren functio key i th fil 'first o driv 'B' chang th '^5 functio ke t '^QS^KB^X^KK^QC^KV^QV' and save the new function key table as file 'second' on drive 'A'. Page 10  Page 9 Summary of Dash Options Multible Command Syntax Th followin comman entere a th A promp o CP/ A>K - "definition1 - "definition2 - "definition3 - wil se th '^1 functio ke t 'definition1' th '^4 functio ke t 'definition2' th '^3 functio ke t 'definition3' an the displa th functio ke table Repetitiv command ma b entere a well: A>KS -m "B:first" -5 "^QS^KB^X^KK^QC^KV^QV" -m "A:second" Thi comman wil sav th curren functio key i th fil 'first o driv 'B' chang th '^5 functio ke t <  **** QWIKSET **** Version 1.1 02/22/85 W. M. Steele $ ---------- FUNCTION KEY ASSIGNMENTS -------- CTRL0- $ CTRL1- $ CTRL2- $ CTRL3- $ CTRL4- $ CTRL5- $ CTRL6- $ CTRL7- $ CTRL8- $ CTRL9- $ -UP--> $ -RT--> $ <--DN- $ <--LT- $ PORT-Serial $ PORT-Centronics $ PORT-IEEE448 $ Port is improperly selected $PROTOCOL-Standard (None) $PROTOCOL-Qume-ETX/ACK $PROTOCOL-Diablo-XON/XOFF $ Protocol is improperly selected $ HORIZON.SCROLL-On $ HORIZON.SCROLL-Off $ Horizonal Scrolling is improperly selected $BAUD RATE-1200 $BAUD RATE-300 $ Baud Rate is improperly set $ LOG.SCRN.SIZE-128 $ LOG.SCRN.SIZE- 80 $ LOG.SCRN.SIZE- 52 $ Logical Screen Size is improperly set $PHY.SCRN.SIZE-104 $PHY.SCRN.SIZE- 80 $PHY.SCRN.SIZE- 52 $ Physical Screen Size is improperly selected $ Press any key for MENU or ^C for CP/M $(QWIKSET MENU for OSBORNE-1 by:W.M.Steele 02-20-85 )*****DIMMED Entries are Modes to be set in BIOS ***** ((A) FKEYS & ARROWS-( (1) CP/M ((2) Wordstar ((3) Supercalc ( ( (4) MBASIC ((5) CBASIC ((6) dBASEII ((B) PRINTER PORT -( (1) Serial ((2) Centronic ((3) IEE448 ((C) PRTR.PROTOCOL -( (1) Std.(None)((2) ETX/ACK ((3) XON/XOFF ( WARNING!Printer must be installed on new PORT before changing either PRTR.PORT or PROTOCOL ((D) PRTR. OKIDATA -( (1) Standard ((2) Correspond((3) Compressed ((E) PRTR. EPSON -( (1) Standard ((2) Correspond((3) Compressed ((F) HORIZON.SCROLL-( (1) On ((2) Off ((G) BAUD RATE -( (1) 1200 ((2) 300 ((H) LOG.SCRN.SIZE -( (1) 128 Col. ((2) 80 Col. ((3) 52 Col. ((I) PHY.SCRN.SIZE -( (1) 104 Col. ((2) 80 Col. ((3) 52 Col. ((Z) Enter Changes to BIOS & Exit to CP/M (^C) USE CTRL-C To Exit Without Changing BIOS MAKE SELECTION:(LTR.+NO.,Z,or ^C)--- $A6F66 B6F66 A8F88 MHFp0QPlCB PHEp1QHlCB PHFp0QICX DIRCHK B: XDIR XDIR B: RPIPV SWEEP ERAA B:UNERA B:LIST B:DISPLAY B:OKDSKLBL B: C To Exit With0/LB:/GB/ODA1:/FC /FR /B /E SUM(/SB:/=A1 or ^C)--- $A6F66 B6F66 A8F88  B: N BC KS VDLRREp1QHlCB PHFp0QICX DIRCHK B: XDIR XDIR B: RPIPV SWERUN "PRINT CHR$(26) PRINTLPRINTUSINGCLR$LISTSAVE "SAVE "B:LOAD " :/GB/ODA1:/FC /FR /B /E SU0123456789 or ^C)--- $A6F66 B6F66 A8F88  B: N BC KS VDLRREp10A P P E E D I T L O C AD I S PC O N TS K I P789 RPIPV SWERUN "PRINT CHR$(26) PRINTLPRINTU*.f"+.<"."-."1|g."#*+!͢`*-!*͢nYn*-3 O~ @^|_| |ö _| ʾ #Ô  n{ _zW#Ï !~@ ! 7 M cn!~ *  * ' * n!~< J G  J n!~U\ Mj Vg ]j ln! ~| Õ P‡ Õ 4’ Õ n*1~§  ²   ½  /n^nn[ ZA  ͼ1 ͭ!6)͊Q͓ 20 ͭ!$6) ͓͊ 3L ͭ!46)\ ͊o͓ 4h ͭ![6) ͓͊ 5„ ͭ!m6)| ͓͊ 6 ͭ!}6) ͓͊ B ͼ1½ !6)!6@ 2 !6)!6 3 !6)!6 C.ͼ1!6)!6 2!6)!6 3 !6)!6 Dxͼ1L!6)͜ 2b!6)͜ 3 !6)͜ Eͼ1–!6)͜ 2¬!6)͜ 3 !6)͜ Fͼ1!;6(!)6)!6 2 !)6(!;6)!6 G.ͼ1!r6(!`6)!6U 2 !`6(!r6)!6V Huͼ1K !6)! 6 2` !6)! 6P 3 !6)! 64 I ͼ1’!6)*16 2§!6)*16 3 !6)*16 :ü#*+͢`**-͢:2: 2l:O!~_# !  w3#'<#$ !3͢*-" 3!  ##wg+Y+V `!*â! â!w# x¢!6(!$6(!46(![6(!m6(!}6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(3#'<#$ !3͢*-"     & . 5 ? J K L M N \ ] a j n r v z ~  ! 0 5 ; @ D H N V \ ] ^ _ ` | } ~        @U!6(!6(!6(!6(!6(!6(3#'<#$ !3͢*-"     & . 5 ? J K L M N \ ] a j n r v z ~  1!r6(!`6)!6U 2 !`6(!r6)!6V Huͼ1K !6)! 6 2` !6)! 6P 3 !6)! 64 I ͼ1’!6)*16 2§!6)*16 3 !6)*16 :ü#*+͢`**-͢:2: 2l:O!~_# !  w3#'<#$ !3͢*-" 3!  ##wg+Y+V `!*â! â!w# x¢!6(!$6(!46(![6(!m6(!}6(!6(!6(!6(!6(!6(!6(!6(!6(!6(!6(  W. M. STEELE CULLMAN, ALA 205-739-1064 MAR. 15,1985 QWIKSET and QWIKSET2 are two variations of the same program which allow selection of preset arrows, function keys, printer port,printer protocol, hori- zontal scroll, baud-rate,and screen-size. QWIKSET2 also permits the selection of different combinations of data-bits, parity, and stop-bits as well as a baud-rate of 19200. QWIKSET2 probably should be placed in a HACKER's File because the author has not taken the opportunity to completely verify the added functions of setting the 19200 baud rate or the different no. of data-bits, parity , and number of stop bits. The Source Codes are heavily commented with instruct- ions for editing to your personal requirements. A complete familiarization with assembly language is not required to edit these files. A fundamental understanding of WORDSTAR will make the editing easier. See the Source Codes for more detailed information. They were prepared with the 'Non-document' mode of WORDSTAR andmay be viewed using CP/M TYPE, DISPLAY .COM, SWEEP.COM, etc. or WORDSTAR. The following *.COM files have been assembled: QWIKSET.COM - assembled to reset BIOS keys, arrows, printer port, protocol, screen-size, horizontal scroll, printer initial- ization, baud rate from a menu. QWIKSET2.COM- as above but including in addition, 19200 baud and various combinations of data-bits, parity, and stop-bits. ove but including in addition, ompletely verify the added functions of setting the 19200 baud rate or the different no. of data-bits, parity , and number of stop bits. The Source Codes are heavily commented with instruct- ions for editing to your personal requirements. A complete familiarization with assembly language is not required to edit these files. A fundamental understanding of WORDSTAR will make the editing easier. See the Source Codes for more detailed information. They were prepared with the 'Non-document' modevQWIKSET.ASMd  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPoQRSTUVWXYZ[\]^_`abcyh$8_ooWw-> t o{f^pGժRRf7[\YGftŏU|t&8wVX4qcGRT5LAETX;R$qyfz~w~]pzyl)x8aY094 8iROiPxԲsQ"2crqΒ|~rqⰟcxUg|%|MAi9a?~{`r:MKrՓ_.9۳WxXTS%$'8MrU]_޸$SLUO.ق6MtVpF:QA ݠt DRpz9_V3ꠤ+ BE$ EoUš\%ʎP(u f63&WJ_ ɡZjoKΒùxg:C!RpڑRdv:ȭz4.'7G7s|S_;#<=)7;[|);p..W_o[ApN-TV&iEA&9w(r+8 xxoSBҲ#~_ .y6*~ޟtS ΂3\]]p2+%ʎpVISp6&Tq6V+⽒19 `Pv/Ǫv[}+Nt:Lʄ!M:5Վ* RmQp'˻ 7x>=zr7YrH>v4(IߏPvn߿QPv/!J>RzV3V*A;ғPQ eB5r+8 x>䐌:L *#i%ʎpy|0hG)Hrczsx;.ߣ{'8a#GaHH%Pv$7ݳk=w3K-.SU`Ҏ,RƂ3>Żίߣ{'8+pHSK:,8''Vx7ׇ'wWx\oOwϞ].39>z8zvz7;_n?+x o߮og=_Ο|y7<oG 8 yFK7%_SI[E[E+Ⱏ"xqү)̼Uqq&W@Ⱏgg@ ݔ1#.yvMIpxE@0u߲> .o>+|lR@xEG1{c6pGQ&2ѻ $k Wxt!foۦ(P&\ϑt`Y{_Shhanh647.MܑGYp.~MatAv$.Lt/wVW5C}$7@0ATЯ)|@8#25Eri?!t$.5w%PEG&_S2ky$'qZЯ)l:Ȋ$ʄ]ݏ~Ma󣃬H(Lx?gOiawswۙ>I wMmcү)6VλLxw1 JD_Swyz?Gy ƂMmGyz?GUmJ:&(c,8 θ>|;<Cr U K6M _Nm2(u [e_- ΂m1%iG_}ſίf-nq.,ǶDWLp<(u j ) 8(u (}c V`0 DW쬴G/~>YO?|>?|{r{nG @tΊMiwF+ MCL;+7]]?W 芝.ﮟmV 芝.ﮟ]c+L;+7]]?;[V0+vVoJ~v`0 DWHߔvyw ?4]"}S+ @tΊMiwV 芝.ﮟXV0+vVoJyZÏ`0 DWHߔvu}ZÏ`0 DWHߔWOV 芝jn[|IWI?F4 DW쬴7՜Vpd3F4 DW쬴7Ւt)׏IW4]V|o[R1i bgINVڥP(VpLc4 7rl5> |%*5ٌ4\_ӊVWw?/⣯[K2Ujr1F@{s/VolZ?~~lQpL4]޸$SLB].쀊,E I?VjҏM;+v?{ďlƦ芝gd;_^=[g3 N*:[4]~INR%kuVڥP(VpcԤ#x}~w7~l7JM6cD@8V~l7JM.ƈ芝v$ uUT**S&4]>ΗOßUy@ VQ*5ٌM;+|yd;?Zc+XEubhYim' 7[*S&gcD btJ,MtVڥPď,Xpq3*S&cD b{v~sGg:Uj|hhoc;_^?V0`թRcD@{v~s ~lN<M;+M7(ytDDv&gTd)J2L,ZVj2FD@tΊƑRÀOiYrx{'&mpy?t hɻB*J$`hzsx;۫'?qU6v;DpYmFV0+vV쬐btu? <ׇ۫xӤ;dHL*.9G @tΊ k*ӒJx{97U+@iT5iIE|ٿͧ[|`L4NK*+|Q;VՁL4NK*ˋW8䢷]3` }MqZRij[ȟ4@*J㴤"<{a` }MqZRi_޿|~X⣯`c0 8-/B8_ؖ芝 k*ӒJr oOf}j[` }MqZRi_pNN{l` }MqZRi_n^ᒂt)舭`5c0 8-//^}mKtiT5iI}|7wۛ~VՁb?k*ӒJsi/@ZV1HE_SiTڗWxu-"/` }MqZRi_^'_@lKtiT5iI4 }S7OO}q:HrXMĆP%d0 tě]+L; 64K0v>Lt iّÛÛ~ @tiT5iI}\]oqW`~ RT%e Al[l` }MqZRi_n^29GNd.` }MqZRi_^ejGJiKtiT5iI}y o﮷xu3?AU+@ԏ4@*J㴤"_\`3`f RT%.sL+@t1k*ӒJ.SU;RL[+v&L4NK*gd;_^=[4` }MqZRi_p4ی4@*J㴤Ҿܼlk[+v&L4NK*opq5^]Y4` }MqZRi_ߌF_[Vl` }MqZRi_n^hk[+v&L4NK*/v~\luiT5iIE|ٿ~d`u1HE_SiTڗW0e[Dl[iT5iI}y 7Lvmؙ,Xpq3` }MqZRi_^͗l'ZVL4NK*-3\&El[Ho` }MqZRi_n^nlu }1k*ӒJop]3 ΂4`gT5iI4_ۗ^Up0!2Ⱏxeͧ۶DWL0k-_.ﮟxj%ѲKS·\V0+vV쬴op~jyw?|vw}d-JrߖV~lgOwg?w]|ί^g}ݿ=>;9\O{Ypƥ%v:Hl9:otG;ﶟtؾ:f~j+jI7;ﶟtx+RTVp+%a`@*J{ θLUH)2;λ'^Ao:^pejGJdlg|%K }M :MK8N?%L b5K+8UUw^LVWWUyOd0f+RT7.I T5[o\:o1f+RTz cՁe@*Jha%8#λʻ+RTڿ}#8#λʻ+RTZۖF;ﶟG-;RTHE_SijHpFĐPiCXy7AHE_Sim[F3wOV£k*y CB aDڶg|VRtk*HE_Si7hu I->@*J;jg|>~B@*JHE_Simy\pƇ:T k*틇HE_Simyxqi;6ٌ@7NIc* ҚTDϼ;:nF#YpFMF*t( TKa쒎i:h Έ1R[Ø N V~c׺Vf9fgD VS%zᓟϞVpG_*i`SWHE_SiB*J RTϟ%2 ΂ocrn +=uT5vRT`0 Ҿx-ѕHpڍ4?t7]!}M=o k*C+L/]g/+i`B*J{ۖ~iiT5E[HE_SiQ+LaTHE_Sim[F4@*Jl%2 ΂_ɹ1޴(_Z` }Mj k*mݷ4@*JW[o k*m˃`0 .yFcU1޴/_Z` }M}RTz k*_m/6T5Ж`0 .P+ "x (;Y6ul)S+' zCQn+8#!TItTypbÄoZW P&-6$!q,9\܎Pvn˛A+YrdG߿?ZOiRz* Rm]JXB% ua?%.Έ:Ⱏ3cua?gg%.c{(8༼t/!J`ܹtķ4Rz* R,xys;i}}^~yq[܏$)`h߿>\%: IcG{˛Lׇk\f177c0 7hKt#6$qsqCl v-A~Ƌ{˛1ګs\["cx}>@9.-|6G7`hw㣯x?x]a a~"wϿ ^iݿ}=l r#?1>ConAvZ4оmWg /ﮟ ^:9@]:~z&xyskLmWg /ﮟͭc0 _٨˻g/7ѦȕwOR0f(}cIp M`ys;z|A֦#JXBR%8 iMnmN}0x\:[\)= g<_`hG-@I@RzȬV+e?@b+;2LoO\MDK^ILϗc0 ^,y$<_4~zqݖ@|y?@iRT1OWm!}M%:@1ۗ-@>/tT;R:LbNM$%x1@yߖ 'ſ^ /LU:uPԕUCNݗ1l;5MV~plQ|iLvu6ϗV4٨<_Rc0 F W=UH`%Y0$7rtDKRgMrFI4DS@ ;@W:u} ~3>@oWgZoc0 QWV1}:unO1ګvu6;9@]:o&4оoWgN𛹕c0 vu6Sc0 F W=UH`%Y0$77 {ko,KۅW:iR>6Q*Yp^._LC:sois$T/1Q C ^)= d/Lm ^.6c0 Vrq1@{ ^.`hZL}+xx>@\|i ^.`hZŏ1bZ4оmWgNrLvu6/&4vu6/V4~iWgNrAIѦȕwOR0f(}cIp M`=~>6Q*Yp6 pN}0x\:[\)= gf1i9@ғ@FYc0 x7xm( aQCfix;lKtuP$zT,fq1@ NlHʎPY4оl;|P 61% ޵t:LwN `x>@;Ƿx#9uTl`ha l?`hbZ4^Q',i}ݮF`0a }:u1y:u͂#M+*`0Pƒ,Y?u[(}c ]J,8ίpo߮ogK6M 8#Έ:`py;! X]JHMK!~GJf I{%4a?1n;s£w*Do#K\ϯF  0OHѻ N7ƑRi?sI մFG% Y7!fwZ ΂i.b9f$ʄS~.M$Tg O;B-+ZƸ, `vmⰟ L"2l)SPƒ`P5 }c ;B-g`3a?FiF8 lHL8(u $Tg HXPK  ΂A`q3P4#8 lHL8(u $Tg HXPKP4#A^~{vi6S$Q&A-*pfD0P.AV~G`}$.9Jb'!mQ o4\t'$qqϱfT@J; xȈ2"u7.l>6>>E`vmwg4:ꀵꬁM D{>Rz7P0c7ZJb3HBJ; v+dcrgWwEQ$#'^YpƩH)L"gSNA ΂VC6ZQғPQ Ҡ]k4l$lhz6MV`ZUmVj)8 6ZOiPcFҀiR^)= ]k0e6 QdCջ^I:Jz'CւѪ~Ȉi`P&lV`LMC=dC;%h-@ @V~G`5 }c wda?GXƸ`k MyJrWw&lTmGcƯTSDvzgnPukh2bWw`' TudP X<@*ˆ^aL 6_*_my N9JgjdQ&`6V`x|>_myI0Do-j dDUm *-Y>6$cV0Do-j dDhU[?˪j{/UiGM;4Zf uVG>ECւѪ~ dDUm ب^D @;hR pyj{hReG/U-tXC**8!cV0\V5U `$ بڞN54]ħ4؉5~ @ŧ8K)Tz d=C=ʎF܀Z").#U$; #Z˂d`S  ZZKlh@!zkhU[?dUm MtZK:`X; GKa J;7eBC Ȉ2at(* U %ZH0TiF wn >jdDo G܀2 Uځ) #OQ&4 @V~G`a @j.ZbIpY`TmGޥi0'^YQMsj hU[?`9!JI(H%8 Щђ$PO4Tb3H Uڡ/PdDQNbldPKT䴷e8NRm vtRhU[?`&`jt`6cQB-[K` ' Tbth-]k4j']&)4ZXF0\V5N^NcQuY+WWWgge8Ng9ڥP vt\@HUm\˪Ft``MIWdUm!tV`k]$.H I0Ti@u@G< 0V%*rς2vmrHE`k@LRVVj ˪IC5 kZgpNP;.rHE`k@Ll  jd#.k'baV%?Y߿xY0\N3R IbRMH h .TdUm\˪Iw6h .TdUm N*:ۏV`k]K OHbwR% I0Ti@u@G< 0:ܝTtb e8AwR @H7` vN*:[Iy UVVj ˪8 N*:ZhKlY0\t'!$.쀊`k@wRJM6RVVj U qܝTtblM\@6ZX nV`k]OyB?5Kf$C_Ȉ: XkV%` 'hRn@k)Z)'+5!jԤ U *S/1Nnk ;jgpN'/rHCXT*5qR T1ZXF0\V5N=8y1h 4JM. jBԏ!zkhU[?d&:z*UD5vTtDyBUtD Cv TQt4sk  kZby ` 'PQ69"݀R0صFS@EuԤ<*hR^0\V5N9vbZ VQ6cQB-a1igpN:]䐊tZK`MթR T1ZXF0\V5NUT1ZYB-~1igpN:  eG蛴#`MթR bR pYՠ: VQ`MթR3YⰟ#*BS0z&8 3\l$XEuCH` Fgz~ޟ VQ`:@D:6$Ƹ`} WiG P&x.bV%3N> p9@H7` vPQ*5<*hR{pYPdӄZ VQ!.:j#N> p;@H7` vPQ*5yy UVVj\0\V5.4UTcQB-~1igpN:=JH0PvI; vPQ*5y URᲪvɦ :=5*S&VVj)=.4c`]k4he&hU[? JMCւѪ~ Nc,k) +CBc Q0\TRplTmt,Z)PQdUm)EUm 8 Vd)J+X0T;StR:И:Jk Q:V%.ﮟ IEk-@ DpyV0h;޹A0ZC}d) :đPv>`,.#@h*59^& ja3r准PK6abdE)(-ITk&y Uh%MjmD0<}0;&~.8 Ί,ES4OiPsQ ΂c}>Xkh[R؞e8A9"݀ [ ,E y?Xkh +%e8A79$n`ZhTitzk]k X{ȈFWx j*`tu? vX܎]$6$ #Uʎ*`Mͭl,@6Zf2`CBvTmrvJ0\V5Uۡ0bݴ2 !zkqZR/ZcW@~ NcU~$Z)f>ȆVw P&T`ZҎ WiG(;]k4ec]$6$ #j#UᲪ)bhe8ACB㴤^0صƮՁ^0T;U`k|9ȆVw P&T`ZҎ WiG(;]k4KXlhz+ eBE譅**eG`j0CEa*8gcȊ,Ege8ArH(݀!zkqZRRqzI  v+`u (; htgi ]ݏ]k4n#lhz+ eBE譅*rvJ0صFSv! Vz%$L(PU\pY`TmTpk }+. b}\0Do-4NK]k X?CX0 h ,#lhz+ eBE譅*rvJ0صFS`ȆVw P&T`ZҎ @ҎPvT ˪j;Tc}| >oe8Q* S8- v+`u q/ƪH0صFS,FjWAʄ [ UQ*eG`kYdCջ^IlI(* F0Do-TiG WiG(;eUQ* SYpVd)Jq:Hrxz1Xkh-@Vd)J\| ^䐊t.Cւ"KQqck mdEEY0\z!t.6!zkqZ J[+ZcW@M(; ht^0T;U`k]-I0T;UQ9-*% U Fv(LzC5V0\zq!%m]k X<CX0 ЩђCXxu[KY`j0CEa*8֋1ZC{ pj;T!zkqZF0صƮՁǽ`vFW#`:5Z`v8Y`j0CEa*8 Ί,E7NIo\)&+8 r .[R,. b T0Z E Uzُ!ھȊ,E` 'rCB\nCB㴤 <*ӓNR@o`k]qQv `vFW#` j*0fioQ(˪j;Tc܌!M+. b [ Ӓ.]k X(ni ]ݏ]k .H'ƪ-*%pY`TmTpc Fv(LCB㴤 `V{P4VG5vj NcU`RdeUQ* SYpVd)Jq:HrxZjoK,8֯k  +%,. bU_dh-Cւ"KQqcC5} Y_e8A_orH(݀7!zkqZ@HI')V0صƮՁL(; ht{|U0T;U`k ߢ>`ZҎ RdeUQ* S~C5V0\`Zht&ZcW@f NcU~$Z)sycrTI0Do-TiG@FTd)J2ᲪXC5` '0CEa*% :x j*`tu? vؿU-TՎ"# #*%pY`TmTp1ZC{dEīς2 /rHE`ZPd)P5Np~ ` 'U} [ Ӓ]k Xǽ`vFW#`M4{T [ UQuY`j0CEa*8Vf nZpNB0Do-4NK: v+`u <CX0 h xs{9Ru B$PUQ(˪j;T 8Vbhe8Q* S8- ]k X.i ]ݏ]k4^USU;R`ZҎ RdeUQ* SYpVd)J> ytZYp_!-@Vd)J|Y0\@H7` [ ,E ~ -@Vd)J| ~G" b#ZcW@@4NO:I_lCXh$ZcW@q ˎ]`vFW#`IE`v٬'RdeUQ* S~C5V0\Uۡ0 v+`uY NcUqZ`k]6{P4VG5v.YP4VF _@E$#.PQ ΂"KQO ^{IXC5ZR` 'Rn@k)A(C8֏!ھȊ,E+pX#CB v+`uq JCXh`k]M=>,; htzP4VG5v?5N j*p~3"KQ U Fv(Lf nZpN`TmT0صƮՁ&^0T;UiI5v4<CX0 h8)ƪ _FRdeUQ* SYpVd)J|&:zg2XkhY(gYⰟ#pN`TmT0g`=a?F2` Fgz~ޟ` 'U}! )=Cւ"KQqcC5} YѿpXCB [ ӒTitzk]k X?3(~WP4VG5vTtDi <:o0&;BE$#.PQ bݴ2 _.CB㴤{`V6{P4VG5vTtDi ܏:0˜ Y`j0CEa*8_.k E+. PQ 譅iI5v]<CX0 Pѩ j*pq dUPRdeUQ* SYⰟgg"KQb JGoQEGP ΂cUk Ȋ,Eς2)䐊#9ueB4CEa*Y2TЏ!ھȊ,E3>pNG# x譅iITitzk]k XH{|Qv =>*ƪH0P. j*waLvZ,EIF0\V5Uۡ0C5V0\Ī>\譅iI]k XHoi ]ݏ:`v@~aLvZ,EIF0\V5Uۡ0p1Xkh/ZpN`TmT0Do-4NKz.ZcW@q/ƪH0P. j*0c*(Td)J2Ც` Fg,EƍC Ҏ0UtaP&\s`OyBSKB&x.X*D&?5cZQ;\O%j:`m}lI f=ͧ[Ҏ+YZ.H7Ƭ[}"P(ɠN`k]Z:% wvzW;Dptc|rv eB/r(>YrH`N`>Yr A`5m @N& 'P~Gi6S$do-zcښZKLVJb3H@k :c$6$L3N1nᲪAMzlgaDo ΂QI50fYr8U:7FKFA0صțlI e*H0صSec!ZJb3HBPQ05t) v";ȝ]yceBGCւxg-u cGJB0zi6S$`5 }c ׎jecqzc)YG9{%㶂i0eD@6 H Д4؉ 7qz+ lH Е@GXȝ]N'o, cv6@`3HRXCo#y9Zwnٌ OHb3H44)@`3H4Co#kr=u@GX:%ZKPTdDo# #aM1n+.Oz&*1n[*Zkh26qz AL &&lIX;zcV0\V5xc61 A썹 @NhR NhREvБP*Zkh26qz+ %L &]$6$N1n+.1=@F ~ujq=U갃[&ZIrJ0SՁTuj!S[%''$v&[:` [ I Z :|:h ;R29BG$9%TCTCБjX0SA;h$C=UXOU`vb1w'$1zk1!zk1I\0ԩّ֩:`S S :~@GRpմY4:BJ;fP&'VޑW3Ҏ~v)|Ai ʄUڑ`k]F'% ;oʄ" ˪?:ҎZcSrHf 2av$ZcW Q61wvzq[Q$#pY'^UQu1:!mABJ; v+PK`j2HzG0k IlI(ViGJ;\A5tu* ѦNA0F0u* 5hSR L\CPtTQ4HrJ;#)8 nt1:Pi 6NK v+`uyj*8-I0صƮՁV;UiIБ7NK:]k XX4V% :A%76 614a?Oi@Kqj+XN4`H)L3\sA-V`7j[[I(;pqcG}z c*` JGoQEG@F]tg#Nu7(EQ q4PGVnP:z*:`'LTdrd#G40ϞғB  lH*YV6v ˛M7Ʃml)SP0#,on{^)= TA0zK ˛ d[\s8R>``=``}.79A0#,ons ˛['Q0#,onM ˛[+9斒ϗc0G/Gk7iiROiG_9|CJI(HU ʄ8^ srG91"@0#̗ 3 =s`0G/ sA0#̗?9|99|$ s`0_Z)KJRpf.;s7M7Ʃml)SW`fCJI(HU ʄ8^ s7 d[\s8R>`f~ 9›=s7`0Gx3 o?9› oN`0Gx37A0#[))IYB6v M7Ʃml)SW`p!{$T*SEemZ/ 9b%(Ⱏ7ƑRsss=ss`p.nvC0#.`0G]8va`0G]X)n,x9r1\I8M3MC:|J>*WJOBEA2UdP&ƩP0#,>ʩ8q)|a`\`0GX.A0#,9r]0#,a!i- 'Q0#,&sJ`\P`9Y nRm1Nm gNҀ s!{$T*SEemZ/ 9Yl (Ⱏ7ƑRs``g 9Y< f]0#Ń`0G0,`0G0 'Q0# , fAI Έ78ywgWcYpGvi7PIBpqqq? ΂]Gh-ABcÄ 6ʎƥꀵz%8yS@!Ҏ ʄ~.8 ֩ђpl8ug9-NIQ0dEè;o-Y`ȊQuxG]ptcDHuپ kdɾ Yw״"|~d~+ߛ_k؄/_x%;FYY=:۪蒵:L0D Y=u8KC..YDp1;Ȋh;%6~jԉ`xugay@&:z+"~,9|M Y}q,9ߠM:Ǝ(،:ȁ(}c ҠPzc 3ę pqH)R caήҠ ʎN d FoJ0dZ/`I2r-.9zc 3C 01+ёRP&l#:Ȅ~.8 ntRc70pq- xT +%|ϝKG|Kz$@(HViGeBiޑGP0Q흗: *ȠL8炳Z:%dlڥViG Y NIt:Li`4*dPvZMKꀵ;/u (6$LQ + eBNInM*`h9;`NIlF C uuR{O^P+Td)J23 ` ߏI50  **** QWIKSET **** Version 1.1 02/22/85 W. M. Steele $ ---------- FUNCTION KEY ASSIGNMENTS -------- CTRL0- $ CTRL1- $ CTRL2- $ CTRL3- $ CTRL4- $ CTRL5- $ CTRL6- $ CTRL7- $ CTRL8- $ CTRL9- $ -UP--> $ -RT--> $ <--DN- $ <--LT- $ PORT-Serial $ PORT-Centronics $ PORT-IEEE448 $ Port is improperly selected $PROTOCOL-Standard (None) $PROTOCOL-Qume-ETX/ACK $PROTOCOL-Diablo-XON/XOFF $ Protocol is improperly selected $ HORIZON.SCROLL-On $ HORIZON.SCROLL-Off $ Horizonal Scrolling is improperly selected $ LOG.SCRN.SIZE-128 $ LOG.SCRN.SIZE- 80 $ LOG.SCRN.SIZE- 52 $ Logical Screen Size is improperly set $PHY.SCRN.SIZE-104 $PHY.SCRN.SIZE- 80 $PHY.SCRN.SIZE- 52 $ Physical Screen Size is improperly selected $ Press any key for MENU or ^C for CP/M $(QWIKSET2 MENU for OSBORNE-1 by:W.M.Steele 03-07-85 )*****DIMMED Entries are Modes to be set in BIOS ***** ((A) FKEYS & ARROWS-( (1) CP/M ((2) Wordstar ((3) Supercalc ( ( (4) MBASIC ((5) CBASIC ((6) dBASEII ((B) PRINTER PORT -( (1) Serial ((2) Centronic ((3) IEE448 ((C) PRTR.PROTOCOL -( (1) Std.(None)((2) ETX/ACK ((3) XON/XOFF ( WARNING!Printer must be installed on new PORT before changing either PRTR.PORT or PROTOCOL ((D) PRTR. OKIDATA -( (1) Standard ((2) Correspond((3) Compressed ((E) PRTR. EPSON -( (1) Standard ((2) Correspond((3) Compressed ((F) HORIZON.SCROLL-( (1) On ((2) Off ((G) BAUD RATE -( (1) 300 ((2) 1200 ((3) 19200 ((H) NO.DATA BITS-PARITY(None,Even,Odd)-NO.STOP BITS ( (1) 8-N-1 ((2) 8-N-2 ((3) 8-E-1 ((4) 8-O-2 ( (5) 7-E-2 ((6) 7-O-2 ((7) 7-E-1 ((8) 7-O-1 ((I) LOG.SCRN.SIZE -( (1) 128 Col. ((2) 80 Col. ((3) 52 Col. ((J) PHY.SCRN.SIZE -( (1) 104 Col. ((2) 80 Col. ((3) 52 Col. ((Z) Enter Changes to BIOS & Exit to CP/M (^C) USE CTRL-C To Exit Without Changing BIOS  MAKE SELECTION:(LTR.+NO.,Z,or ^C)--- $A6F66 B6F66 A8F88 MHFp0QPlCB PHEp1QHlCB PHFp0QICX DIRCHK B: XDIR XDIR B: RPIPV SWEEP ERAA B:UNERA B:LIST B:DISPLAY B:OKDSKLBL B: C To Exit With0/LB:/GB/ODA1:/FC /FR /B /E SUM(/SB:/=A1 or ^C)--- $A6F66 B6F66 A8F88  B: N BC KS VDLRREp1QHlCB PHFp0QICX DIRCHK B: XDIR XDIR B: RPIPV SWERUN "PRINT CHR$(26) PRINTLPRINTUSINGCLR$LISTSAVE "SAVE "B:LOAD " :/GB/ODA1:/FC /FR /B /E SU0123456789 or ^C)--- $A6F66 B6F66 A8F88  B: N BC KS VDLRREp10A P P E E D I T D I S PC O N TS K I P6789DIR B: RPIPV SWERUN "PRINT CHR$(26) PRINTLPRINTU*.f".<">."."|g."U#*!}`*!ZͬYͬ* O~ C @^ͺ_ͺ ͺH _ͺ P #& i ͬ{ _zW#! !}~@x !Ñ ƒ 7Ñ Ž MÑ cͬ!~~£ ü ® ü ¹ ü ͬ!~    ͬ!~ M P c 4 y ͬ*~ 2 $ 2 / 2 ͬ ͬTJͬT[] ZA1† !6) E 2¢ !6)N E 3¾ !6) E 4 !6) #E 5 !/6) AE 6E !?6)n _E BY1/ !f6)!}6@E 2D !x6)!}6E 3E !6)!}6E C 1v!6)!~6E 2‹!6)!~6E 3E !6)!~6E D1¾*!Y6)( E 2*!k6)4 E 3E *!{6)@ E E41*!6)L E 2*!6)b E 3E *!6)x E Fj1S!6(!6)!6E 2E !6(!6)!6E G±1‡I!"6)!6E 2œI!46)!6E 3E I!D6)!6E Ha1Y!6)!6VE 2Y!6)!6RE 3Y!6)!6ZE 4 Y!6)!6^E 5"Y!6)!6BE 67Y!6)!6FE 7LY!6)!6JE 8E Y!6)!6NE I¨1~͂!)6)!6E 2“͂!;6)!6PE 3E ͂!K6)!64E JE 1͒!r6)*6E 2͒!6)*6E 3E ͒!6)*6E T:Z:G:2#}*`*:}2:2l:O!~T_#C! wq#ez#b!*"! ##wʥ+×+Ô `!!!w# x!6(!6(!6(!6(!/6(!?6(!f6(!x6(!6(!6(!6(!6(!Y6(!k6(!{6(!6(!6(!6(!"6(!46(!D6(!6(!6(!6(!6(!6(!6(!6(!6(!)6(!;6(!K6(!r6(!6(!6(+Ô           N S U W Y [ ] _ a c e f g h i                n o x @V!)6(!;6(!K6(!r6(!6(!6(+Ô          “͂!;6)!6PE 3E ͂!K6)!64E JE 1͒!r6)*6E 2͒!6)*6E 3E ͒!6)*6E T:vv=QWIKSET2.ASMc  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPoQRSTUVWXYZ[\]^_`abHp9|X\mw{|FNmFG>^ yby+|RwPD>ߎ^;1NW(»Nj]9_𤣀^k*!Q4֎4)\ς+|yɸu}yxf_],ɘp\qJhx"UΥ#9JpkoƤqDž 3Cj~E\4n k ZiTH p|__l_`;=}5"F_;9^'^K*d^dl:;hLFoWGźޠvA ).67 J-BƐ}*aCPTdw+<(<Ơ7:aMH#d(*)I Z>adPP7LB`Yp:K!RpJHkX;Np52\w76wb"k#ʀ\^L_K O7;.\uR"]$$K/2^,w}F,_m( _;&\MvK)mBA&9wj'\!_..IE>ʸ:(cr+\Np%C w?w/T:lYp.OZٌ>EKP7+T20Ө"C;ts, JPp%CW7w#~'^bqxxirH>vӧg4hjR;f>}?}#_CT2|Fz,WX((#p.ZB4z,Np%‹"daQ5i"&Ys,Yd RB7ןqJ"5MWV/כÇnG:r\rUG)(r\[}|x9|X\EQp UG|T En"'כÇWtWi0vIFo|\ /xwy>f}y_𸸻xu\/koweƻx}vsq/_-^8#^|xܿyy^<%z b||w/xwya㷷o W'Jp\L Os Q1p&~џ~a&@FHRupu/Q:h qu/&A_@?ǠܘB\Jp5hzgqsW^&%s 0uUrxWII nl@?xMֺ]⚢JU)(7V9kzGf2ZRPx< GFTT 7ן|BpL@?0j||kI 1~tP)-G҂F@8%9F蝓~FH] ys CQL:~o:HG_;9~a{AI(J82( ZAjs TW2( ZAp% 2#cnvhhwU͝`[ys m~VcN% 6ZBc]u~Fjn\Mh59яԵjdJxw/ 7oG`HnPd qѤYqJ3 J+G`fih;`h '7;O貙 @ic~'f;\("Ce3\ CT2= 8d |cԵ` D4'~=nGp/xX=_>-p?Z`.iVh_Zqm lY&6]6Ӭ|6]6Ӭ|9~im lY&s @tLMn7w7/ 貙fnn^>V0foryn_Z`.iV6]6Ӭ|s @tLMn翮 貙fo 貙f|q_Z`.iV/'.\;办D@tLs{/Io|iNg m l7KAFOiNgD@tLs{.//OOoɿ}iNgD@tLs{BQڥPVpJE ~9_(w?@/K+vIg ~9k\h~y>\Rѳ ~9-}cWEK*=;m lvI J.̀ EE='貙g[ln/_K+;Lѳ6]6ܾw~:/3E'貙}r7.# FYjjrf@M"_Z:cѳ~h.in_roouǢg m l}[lnwß9ގuǢgD@tLsrm<?s"~i먏EN'A貙e .# GBQڥP/J_uǢgWD b{_vnqs9G>={:A e<?sVX6^bs[\j_Z:cѳ m l-7(B FYjjrf@M"_Z RgD D4ini> &09&\ . DCeה' @כÇ/49/Vy0y-!GW` D4i&}Mr5 ?k I}Q%l5)W6]6l6@:r㤢>x>\777y+@mt5IEE|޿{|`#l)7N* |;Vl)7N*7]6S` }MqRQnlȟN6@:r㤢">?}aO &` }MqRQn_bq`# 8(ϟ@X\貙 kʍr|ow7xC  8( ''[Fj 8(Ϸ/pCAdV HG_SnT/pyyzzO9l6@:r㤢>߼뛻nٿy+@mt5IEE|޿)ЋVvה'^}|`# HG_SnT/Wm.` 8H0orA2 BƐ0 ^oZ`.` (䶡ira& I^7w^V0f*l)7N*/fw8o 8(P>X,b+@v;kʍr|79u ld {>kʍrnRiMe3 ה' bVmt5IEE|޿zg[Fl)7N* $H)V|ה' ܤR;Қlf*l)7N*W/g[ln/_[F 8(?ZFn'` }MqRQno_~:|e3 ה'o..?`# HG_SnT[ <ɿ 4N6@:r㤢>߾~;ohv>Akʍr?Qf*l)7N*/q{}qwb~}qs)P\S{k_6q[qu[9l6->-62PO6@:r㤢">_qc+@vה'[l;mt5IE}~o[FN'h }MqRQn~mstLm?Z|?[ldjה' |7oldm)7N*/|?b+@ݻ HG_SnT^V HG_SnT/|?]6SD` }MqRQn^bs[\ld O6@:r㤢">_`M2;Vvה'ގp[F 8(_7e3\ S\T0HG_SnT[lnwßK tO6@:r㤢">_`?:M2;Vζ 8(Ϸ/vdv 62l)7N*xM2;DlstLSr* 3ͤ)7N* '>/"·iT WKP%\ostLmɿZ\|w /R4V|0ahm lLs{//7w˻~l^s W7ǻ<</.G\fr'+^Wlm{2kEIG_Sn6@:r6GG#mrO]&}M]t5i+l)>msty4\ v ]mIG_Sn/L:r{ k6GG#W ]&}MosIG_Sn߷6@:rͤ) הۿ|;ʤ)#` }Mݴ]W_}ɹ .^ͤ)[` }Ml3kmݷ6@:rWm3kʭi` ni.F+>R .^ʤ)[` }M}fהz k_mϷt5` n|{ˣ |G}r:ɘt" Lр^k9 5i'Rw;YrXZeq3;KYP% 6"ؐ q49\ߏPunE 49L#>}g4r wo V)2_s WǶ˂+Dpu/)z_u2_S W?^ Pp|!*`¹th , JJ~4@pyW6GU?fPQmp蠺BlEoo ^np5istP"6"_oܞ \ߟO6\[)b3(s7 7m"no<mդ>WO7O'`h=^\jBuO+">HlWw^7^m}}X\\MZ"+ >;O \mxrWG|ۼ}؁mOG@y9 xs}lv~:K{&`hn秣ݼ-xs}olv~:{{JjVhTŻg)XLST1$ `s}?zx:ƤT1."\-57_CT2s?ЀZY(\f4@;jk-g|> _&-@ucൖ@rfNbmmyPV5Whk)|M*v/6 _ݴ9:\M6~^t5@bteIG_SPbnvy P],6:i +vb5ilǚ,ʀ?ImostP%,? ^lle;?u(7ƥ!\blv~:;9N4?`C8dw(xaS;?u&`ht^l( X mPi`1MQƐJ0$7ftTޘt7ХTW7YWL}x\:4r W,F /jr ~'`h?QU+b;@W;?uݴ,'`h?Q7 ڿfq5@V ڿVŻ };?u} ~m޴,~L6M+b\O6^Q'© t ~aS;?u,m]Q'͂0vUF o Cr3x=<u7&!t)~嵌j)/K'ZBJj4@{|'`howy6G'~m9<޵W /owl[+~u5@yy|z:@k߯M6..%k+~u;@oI+~c5k+~5'`h?Q'~lv~:߯lm:+&`h߷Q'~EIMjm;xL#i7W!ܯFOG@I'|c]JEp%ڬ_CT2s?ЀZY(\ ެF  )z,Y }+xN6n[ly+x:m=moVW WlVfn]+xmmoV?&`h7q=@:S /Y0@w;?u7+&`h߷Q'x&VhTŻg)XLST1$ `=<u7&!t)ʮ_CT2s?ЀZY(\ lB ^k9 dU?@{xZ:! H>v;|Tv_A%&У}$&vu8 x^P0Æ Q@Ց`:mx0vȡ :lWW n0C,z9g$خN6>m*GjBF9ű&+خM6оklm+خ~L6hոml秣N]95@:velv~:ەQ v~:%5AF*=Hb!`Hnv5zx:*oL:ACR*+f^p%vɤW+D0zM|,iM6cBJhRWȒa@o#Ic3aVXa_n7uwN֑.Ѩv錅kzV3Rx]ASu`(k&ӧ`SM Ua@Mj>zQvAwƂ&ukBW% 籃*Mc~. $tg,ƏCkBkֺJ0)E>PMaw瘦SM U8D%Sg4!;cATگ   "E: e-dawSM U8D%Sg4!;cATگ B@ʩJ0)Ez*Z0O;VߝbN5)T Lр7CPi&J0Da:VߝbN5)T n2z}$? 3 HPi&J0FjF W{3v( /;fpu/3vX@5v>C`(k&È:—)4V2ʀʹ H=V>XT<Jj D``Tp%’ք~h@BAi֑֤Q%vi|\ d؞wUHfPQ%,iMtƂ&uՌzkNƐ`XnʀV P%,iM,%vdj"3GoۡJ(\`3/`0KM i 4%I0XP1PH_3k-ga|c2v3e@K^+lE&` LZ5|[v:$$7 \EoxEu5T҂+1cLA [k3x3J]?`;GAZB4)>A h34K#4KXHk?#1VR(J6~xF@e 8d 赖P((-RqJ4B#?Q+`Rb6XT B+um@V0UV) Thd Pu~M(`0|c vX~1u;`3STM?Z3PNյMX `fC T~eXZ0ȰBl|1R3LuJ'~M(ƚ08(rM?sf0vd@/|nT?#cG(Ub9C=~M(ZL0ZvTj5zʙ] S IqQ%R(`S >h3R3yk||&p:*b‹p@oλ`(k TQ9CiACƀ6~BhCIkp@oλJ!zcJ]?lBR%Pnt#aCjh0vCƀ6~BZkpVj6ٸԘllC+um l'Pj}PHa @TP%1`6~lum'`P@;vhS pvks PycЦ@_3K-dXBPєqF -λ`8+5X]M(Aյ9@jh󏁖 `f %4U(>irH`Sգ(` (5jR,յIs*DZJ& uT󏁖 ɰ32`R6~f2-H0,PECa 5LUBK[ U:ɠP%;%JZeP!)Z*42`(i >[J^)F |08z޹UB/JZB'6>>C z;kB K-T gk3|8K]~e\ 6IuNORTGK^k9 ҂+` 25R@5#2c9U=V CIk @(: @%:Jj 59Wp  ).R h3Ng=TlY/J S,vp;*Q*Ɛ*d:Bʱ{ T,% S4Zk,z g) |0Wp )@RIaRM I h3NgP 6~gS,RP;办Be))O zcJ]?e]P 3 Qt4 k BMNzU0#N-@RVn@K%RPRѳtF+umEzpVj:: r Z¨*Qj4|*j9@RVn@K%RPRѳ-TVmY;L/vʝO FOW_Y8B;B!)]ə5)`m%Ceٹ`8+5tGN DvIgPYk,zv*;L?R,%v.jF .lE5 BP0Zh:KS*lrZ*`m3EzJ]?`ѳ^0t^pwљ$F:d0M_Y8Bwљs*ڥP f)f::Sl @:6~g[pVjQ{QGg'f)f::S*+umEQO zcJ]?T&dutaYJ2)#a3( %g( h!nG@%5Jc2Wp>nrZ*`mY@:6~g`8+5訏WU(>@K!->n'k Wd%诂,AG}<B hYJtǢg[J]?`ѳ`8+5訏Wu ZiPIRc2Wp>T!e ))7iM,% :cѳsJ]?`ѳspVjQ먏0K6XTp%XNqu/`j!Ղ)X9\ S\t$XG}@H` VNWW?=>^M zcJ]? }$jF H [v5 *iM Pfx!b-*Q*G p)@RVn@K%R͠>=j J]?`ѳ+pVj]2iFK먏O'k @%5J#ɌK_Y8 )+7` f)fQ=j Ե={*J K&h)`b-aTRTxŘ̸U0#訏UH9@:Bߤ5 h3訏EA5VX`8+5.4Tu DAG},zv 6~g S%fj"7Ե`0K6-*zPYkTXL0Do XkPcg4Pxp>a.`hl҂!r& #ԳBKWP(',% RX(A0Do Zk`M2MCYK @5# E%S MZp2q3`8;B=+ HgTn? Xp.hX_L ڋd(*l/گ,!+*܀  EJ@%} Pi2^_Y8B/UH܀[18ҹqr)  f)`d ?P!ZY e-d\YJ6#| A %UIkBQ f)f\߫TV P%`(iMe P&TpVj6C0b-ݶ,!!zcqRQ/Rb@~ X2XYF,% o#| A %UIkBQ f)fxP,{J)X1PҚ*iM:*`umBa c}q>XKh[pS18 f)`d  X2XYF,% 4fP*`C@Ik*=@UҚPuTYJ| A %lք"J Vf(Ƃc}q:XKhO[J`8 G@*7ŕ`hTT89e02?}BTũ`(k%j$RpTV P%`(iMJZ`0K6J54fP*`C@Ik*[5ꨀ`8+5X]P b-jY8B/ 荁IE`0K]#^0Ēr5 f)fجFc6"T 5+7JZSք"RͰYTV P%`(iMe P&TpVj6C0닧i+P(C@㤢^0.Ӈ^0Ēr5 f)f@ei>k͠UBM 荁Tz5h3ؕj @ei>k͠UBM 荁TUIkBQ gk3 cJɠurJp%8֫ ZBj*MWp @RVn`d(P'8֫~-@PT pXUH܀`hTҹqr)  f)`dBT e-d\YJ2HE% 7PTdQ0P(z@%V0#zu.7'mYJ2>􂡬% V`0K]H0ĒvTw2PTdY XpW gVf(Ƃ!zcqRV0.^0Ēr5 f) S# X2PTdY Xp%d(*v2(rxJ1Xo&k 4 7_Y8B_T!e T!zc@BiXo ZB۷&CQ*bT!rn!zcqR9@5΍NQ@o`0K]# Quʂ^0Ēr5 f)P`(k%è;MNz EEV0P(z@%V0#zs.7' e02P>􂡬% V`0K]CYK,F}P]}_l>&CQ gk3 cޜO V0#X]P 荁IE,%v zPK+H0.Cr% mP}??_BM"+J Vf(Ƃ+&CQᵓACJz#^Wczоn*M_Y8B,%@ܐ-`d(P'8֯ ZB۷&CQ`8 G-@*7`hTt P sS#Rb@BT| e-d\YJj 荁T*DM"+J Vf(Ƃcz;XKh`8 Gs18T0. e-d\YJbr#]`)D %T EEV0P(b-=oY8յ `hTt*Rb@ e-d\YJb@1ڑdC@Ik*&CQ gk3 cԗ4 / pXB hCƀ&CQ8ԗb-[pK} NYJ2^0Ēr5 f)fxI+ PZ`!zc5s Q Rյ Xb-ݶ,!\0Do 4N*: f)`d >􂡬% V`0K6ëO19P19GNR$7JZS95`8+5X]PX ZB{pk3 c18YJ2zPK+H0DէXjP1ڑdC@Ik*&CQ gk3 cJ}r%cWcjоj*MW_Y8BT!e T!zc@BiX'k mT E,!֯DT!r e02tC5΍NQW[PKIE,%v 4z|(_% V`0K]KF0Ēa4v5`8+5X]P b-ݶ, X0.C/Zb8H0.ۇ^0Ēr5 f)utX2F@ 5`8+5X]P W E+?x b-T E߾ pXB hC h2U(ob-[J[|po[|UH܀߶!zcqRѕ`0K]#G: heo`(k%j$RbcT/Zb05`8+5X]P b-ݶ,!C@㤢+` FmzPK+H0.C֩^0ĒawUP Rյ X;@%`8 G6C0 YJ2hv X2XYF,%v?N% mP?j2YpVj6C0\ 4 CY<6R錵wR !J56RiX@%[pK} PT4NpoY8BoC@㤢,%v `(k%j$Rbc`(k%qޣ&CQ gk3 c~@%V0#`hTT0.C/Zb`e eh:%Zbp}P[d(*`umBa,8'k y+bT0Do 4N*z*Rb@C/Zb`e eh:%Zbpu_{d(*`umBa,8O'k i+bJ0Do 4N*z*Rb@C/Zb`e eh:%Zbpu=j2YpVj6C0W g~T0Do 4N*z*Rb@C/Zb`e eh:%Zbp}P_ηPTdY Xp?@%O[pC@㤢,%v =}CYK,,W#` [CYK,N-j2YpVj6C0&k V0#`hTT0.w`(k%j$Rbc`(k%{rޣ&CQ gk3 c~;XKho[p`umBa,7'= f)`d e-d\YJ24~l e-d8|P=j2YpVj6C0\ >L C Pi2 )E> gVf(Ƃ)X9\ S\t$P(Sr*,:)pX P0R `Tp%74* >o*MCC0#R?P[18>j 'g` FCOBT'CYK,,W#` ::}$PKQP[ɌKШPTdY Xp,a;XKh`8 G> 荁IEYJ2HnzPK+H0.NI0ĒjT#ɌKШPTdY Xp,|О, X0Do 4N*z'Rb@ e-d\YJ2CYK,O;j1q 5`8+5X]P )Ez*d(*A jy$X=XKhn*M¿ pk3 cBʎT X0Do h2U( ZB۷&CQa?:O!bg*7H0Do 4N*'\ sS#Rb@gCOBT=>.Zb`e  }$PK)d%hd(*`umBa,8o'k  g\0Do 4N* f)`dC/Zb`e  }$PKaLf\FM"+J Vf(Ƃcb-=oY8յ `hTt+Rb@g`(k%j$Lg,hCYK,F@uŘ̸ EEV0P(Sr*PT4n"ZbC@c 3pvzVh)`!0zk FM)0. Eّ Z"eh )7>>ӵ$Zb`k;*D,*7`hlyYABiJ0ҤD0Do Fox%SPEoxESMJ '+4@':|cH0cTPHa),ʩ$'JZcT'·il:H0c@5#[𤓱ÐNT҂ Y<6RyTijl҂Ah*=nQaIVN%9ƏSg(6~l\ JZzciT WaԤƵJ0&B5"*aIk`m4fP*`M[`u;Q$&1g^5a3(҂,%6:*]3(Ҩ&`lndҪ1PY?Za3(BPStƂ!3%c5zkN%tII0Do *iM J0AF*f0 HE( /VFyP&T {djEX::}$jF .<ʠlw!0T>X,iMutaP%\ `ƏSՌ:Ə-:e`(i1JZJ* p#X7~l'10>vU=V(ʀ{k.v3kge'|7ןﱤ5+2HU+#adPD5,jd ek j%P&lEzPŎ3&,)jd #ԳBK*ZJ*I %fБA z;*ׄuA e-!fU+4)\/0zcC@clBCj)l||uA 2,-6"pVj wi,Ap%ZJ5\ S\Tpf}`)]uU|ݰ1os`=nNXB͠Q`n(7<6"LS,2)XPJU=V e@'1`T6:I 4[Hkpv=n;b3(BYB0R Kh*2&͠H0ȰBLSF9QO,2)XpVj=nT8K 6XlEQ|6:U Z)`8;kJө&ƠM2- 2,h^+lEh[vA%t? A)N&ZCpVjF ˀ0RW_SN5)=J5aN5)p e@oT2'Zk`b3(Ҩ&`ltc6"T 5+RB`f3GoۡJ(\`3/JV**o-*Bo#IJ4jRZ0XP1PՎj49J%S 3T>7:kZ e-uM(d!-RB`f^+lESMJ0.:Q3[v2_!~e-hT[lEkru`X:{k0/fabN5)mPyka֑ւA%tU=V e@'1A%tWhCIk(TZGZ @e kru;pvo9@%hSh[v\0Ȱ&b3(4jR%tvf> AN&Z goBo-nfP{k'` P@u;)`pG1hSYuБh Kh*l| AZ*Lө&%l\BPagV v29ֺ`8+5xk{ }hAp%J]?L'o;_zcLjEN z;oPbjՌ.0zcP!zcIT6TN54oN5ZiԊ u{u'oё\ Rۉ`ǺZz;~MAG39-Ez;lCYK&vA5#)` M\/CjhbjP9*9BG3 u{u'oё\ 4V2F5a3(Ҩֳ*w O,%6:B5"*aIk f)ȤUc|[v*HrMg^%l'` =uPkҨ&` NTcn:$$J ~e\ҚRb i 4%I0.CVnUgZS Ekg^ `fP*aIk %dUIkB K蠒!:*:AW2 B%CtT((LƢI+`q TBAaL sՌ4ʀ^0$!B;PNѦ@,ϼ PvH08Rn)JpPKc%i,!ءd X(W895J;-eTT&CQWHS ,WN:EA`,E)W>9yLAy1O\u^zG` Y<* B.PT2Ic% Pp㤢~f)`d ?o%YJ2oXKIE,%v XKIE,%v OXKIE,%v XKIE,%v >o%ޢ#%8h;e02P?o%#.CZb8H0.-ĒqR[tW'O,%v -ĒqR`0K]#CZb8H0.CZb8-:R+N'` FCZb8H0.e-dlT$Rb@e-dlT$Rb@?o%YJ2[,k%c"` F-ĒqR[tW']M,%v 4XKIE,%v 4>o%YJ2hvпŲX26N*zJp㤢0K]#uCZb8H0.CZb8H0.-ĒqR`0K]#u[,k%c"` FXKIE,%v =}bYK,' e02Pe-dlT$Rb@CZb8-:R+M,%v $-ĒqR`0K]#CZb8H0.CZb8-:R+r~џ nTt;e02YпŲX26N*' f)`dCZb8C0.XKIEoёLʩJp\|ċ ƏS60uPz(©K?N49L#'*DsF*I5~UJ&ua ֑֘:I5j[N X [4a8D%Sg4hT1$X5[&V*o#1Mqu/3Pzk .#MjBu5)ݠeutapjL0T׳+TԸ:u`G}rc2-7# Bw(#ɌKޠ( q4PNFu7hAQh03M-T)TҨUrd#G60_/_F tIij lGPnVvZwiqJh@`O`s}C嵖P((ǚ,ћ86^`'B{~ZGZ'  lA0\ߟ`'`O`s}T0\߿ 6`'ׂ) 66{{==%%بLb3v:KSCT2|F>. ,6=T^k9 yɢJc`'lQa@o#I s S + bN0Xln=`'،k`O`q =`O`1J0Xl()7 ՘ xAUYykޥ)N!*>| ,zr XE0z+B`Ob j zkiM`'fq){oW  Y< , {o`Ob\ {oN`'fa`'fa`'fAI ߯Tc&`O~5v:KSCT2|F>. ܯzr XE0z+B`O~'|Tcopu/[Hk=9{S WW  ܯ {wV0_ WZ0_9`O~e`'pW7+՘ جFPnVvZwiqJh'=ͪk-gPP:5YT 7ql" 6-T>7:u5i|fufu fufT0ج {խ`'Y 6q- lVN`'Y  lVF {%%lW1'`W#j7+;oӻ48D%Sg4]Py, J&*a&W]mQa@o#I =:`O@0] V0]k`OB`Ol (`O() ..~]Dp%'vI7P+Fpu/pu/>W0R6"·YlTK3 ʀz.J*aCXҚ,~!,S#6p:Ҥ~:7X;9DPiRoGyc`dP@IQK|k FTQZvI PiROW^JIqi QG60N;4ߣ..# S@DPiRGaH%%cd n:5*Mico^0T﫫aco^0T﫧N?v8&`uPiRoGN~{&dF0TQv&dF0TM :QհuP:AC:7[N0T8N+JcTzkiMZ0T3g4茪cMU.ћ8 Wd1MFG5WN@S1CƩ4,Ha@&*aCXҚ,ʠJp#VX OGTNP)~/P((-*M"р ~r*FKZEPuRwQ U+ aIkJpVn6 ]ڥKZFM"AC 3`hJ:ѤLeQW2T  (FPi UBNEn mj`hU fh; 6)A VC?ꠒA*W0R6"·YlTK3 ʀz.J*aCXҚ,~!,S#6p:Ҥ~:7X;9DPiRoGyc`dP@IQK|k FTQZvI PiROW^JIqi QG60N;4ߣ..# S@DPiRGaH%%cd n:5*Mico^0T﫫aco^0T﫧N?v8&`uPiRoGN~{&dF0TQv&dF0TM :QհuP:AC:7[N0T8N+JcTzkiMZ0T3g4茪cMU.ћ8 1`m_  *ɀ\\>2h\\\\~#!PP:]AҮ!k\$!:2~~!!]f!te.<=OB!\l!uE7.P`WN` Write keys in file of type KEY and name? :$ File exists. Backup or Overwrite (B/O)? :$ KEYBAK >!U!P>1`D_  \1ɀ\\!P:]Aw!:2~~(!e<’bP>5P KEY file name is? :$ No file by that name$ KEY>!PU!>.. Disk documention FROM: Gordon Wilk 6707 Springpark Ave Los Angeles CA 90056 (213) 645-6419 SETKEY SAVKEY These were written as a simple way to switch the definitions of the arrow keys and the control key settings of the numeric pad. Copy the file SAVKEY.COM to the disk on which you keep SETUP.COM Use SETUP to configure the arrow and function keys, save them in the normal manner, then re-boot the disk to get the definitions in the standard memory locations. Run SAVKEY giving it (either in the command line or in answer to its question) an appropriate file name to which it will add the Type ".KEY" ( use WS.KEY and CPM.KEY for example). Copy the file SETKEY along with the "KEY" type files you created to your other disks. Now you can switch between key settings by running SETKEY. The file to set from can either be provided in the command line (i.e SETKEY WS will set the keys to Wordstar configuration) or in answer to the question the program will ask if there is no file in the command line. Since each file will be only 1k, a number of them can be kept on a disk at little cost. reSAVKEY These were written as a simple way to switch the definitions of the arrow keys and the control key settings of the numeric pad. Copy the file SAVKEY.COM to the disk on which you keep SETUP.COM Use SETUP to configure the arrow and function keys, save them in the normal manner, then re-boot the disk to get the definitions in the standard memory locations. Run SAVKEY giving it (either in the command line or in answer to its question) an appropriate file name to which it will add the Type ".KEY" ( use WS.KEY and CPM.KEY for example). Copy the file SETKEY along with the "KEY" type files you created to your other disks. Now you can switch between key settings by running SETKEY. The file to set from can either be provided in the command line (i.e SETKEY WS will set the keys to Wordstar configuration) or in answer to the question the program will ask if there*+%"H%"F%"D " " "y 6"C+6+!^6 F+N+<!* !!9~#ʗ RO"k'k +}|+#~ʂu6#~#<ʷ>!4R6#6*!* |ʴ!ͯ"r! ͯ" R Can't open > or < file.$èw*6 )! 9!"6ɻ *:B<*C 2B ́F  €> _*C~+#4N s> > !+:EºF2B_~ý   > G ʘG!* ͟> !+}  > _con:rdr:pun:lst: ==_~O7 !"# !  #¾i& ~º!h~#~#F6%pw6237!9Ly=S>wD<!gs 6#6 ~+|s#r{{ ڟ!+#^{!!Pw#w!g~<6 !|~r!N!nL}*eyb>w#%!=)${=Sbtx h&{ !~!nN#F{p+pH#x¯ ڽ+!9~ !~b!5> 6> *e w`i#Q᯾%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>****!k"! "! 9Lʍ ! 9L##L! ͯ"*|N *F|K *#"+F- ͨ!"*ʅ n *#"+T ***}c *""""Bad filename; try again. rb%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>****!k"! "! 9*+%"H%"F%"D " " "y 6"C+6+!^6 F+N+<!* !!9~#ʗ RO"k'k +}|+#~ʂu6#~#<ʷ>!4R6#6*!* |ʴ!ͯ"r! ͯ" R Can't open > or < file.$èw*6 )! 9!"6ɻ *:B<*C 2B ́F  €> _*C~+#4N s> > !+:EºF2B_~ý   > G ʘG!* ͟> !+}  > _con:rdr:pun:lst: ==_~O7 !"# !  #¾i& ~º!h~#~#F6%pw6237!9Ly=S>wD<!gs 6#6 ~+|s#r{{ ڟ!+#^{!!Pw#w!g~<6 !|~r!N!nL}*eyb>w#%!=)${=Sbtx h&{ !~!nN#F{p+pH#x¯ ڽ+!9~ !~b!5> 6> *e w`i#Q᯾%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>****!k"! "! 9Lʍ ! 9L##L! ͯ"*|N *F|K *#"+F- ͨ!"*ʅ n *#"+T ***}c *""""Bad filename; try again. rb%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>****!k"! "! 9/* C/80 source code for SUBSET version 1.0, 10/5/83 by David B. Ring, 1248 Truman Street, Redwood City, California 94061. Copyright (c) 1983 by David B. Ring. SUBSET may be used, copied and distributed freely for noncommercial purposes, providing that a copy of this notice is included. No commercial use of SUBSET may be made without the author's express written permission. SUBSET was written and compiled using C/80 3.0 from the Software Toolworks. Appreciation is due to Walt Bilofsky for allowing free distribution of programs compiled with C/80. SUBSET is intended for use with the companion program SUPERSET. Sets of special function key definitions created and saved as CP/M files using SUPERSET may be loaded for use by SUBSET. (SUPERSET also provides the loading capability, but occupies more disk space than SUBSET.) Comments, suggestions and fixes are appreciated and may be sent to the address above. /****** HEADER SECTION ***********************************************/ /* Macros specific for single or double density. The set actually used is toggled by #defining SD or DD (but not both!). */ #define SD #ifdef DD #define KEYTABL 0XE16B #define LIMIT 0XE1FA #endif #ifdef SD #define KEYTABL 0XE56B #define LIMIT 0XE600 #endif /****** MAIN PROGRAM **********************************************/ /* The only allowed usage of SUBSET is "SUBSET filename". The named file will be accessed and the key definitions specified by that file will be overlaid on current memory. */ main(argc, argv) int argc; char *argv[]; { int i, chan; char *keytabl, *errmess; keytabl = KEYTABL; errmess = "Bad filename; try again.\n"; if (argc > 1) { chan = fopen(argv[1], "rb"); if (chan == 0) { while (*errmess) putchar(*errmess++); exit(); } for (i = 0; i < LIMIT - KEYTABL; i++) { *(keytabl + i) = getc(chan); } fclose(chan); } }*+%"H%"F%"D " " "y 6"C+6+!^6 F+N+<!* !!9~#ʗ RO"k'k +}|+#~ʂu6#~#<ʷ>!4R6#6*! * |ʴ!ͯ"r! ͯ" R Can't open > or < file.$èw*6 )! 9!"6ɜ*:B<*C 2B ́F  €> _*C~+#4N s> > !+:EºF2B_~ý   > G ʘG!* ͟> !+}  > _con:rdr:pun:lst: ==_~O7 !"# !  #¾i& ~º!h~#~#F6%pw6237!9Ly=S>wD<!gs 6#6 ~+|s#r{{ ڟ!+#^{!!Pw#w!g~<6 !|~r!N!nL}*eyb>w#%!=)${=Sbtx h&{ !~!nN#F{p+pH#x¯ ڽ+!9~ !~b!5> 6> *e w`i#Q᯾%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>>!9"*++"Lt !9* ! *++"LL *++"L}2:G*++"L͆ *++"L"**++"L͟ !!9L͆ !9F}2!9L"ͻ !9L"!!9L͆ *F͓ *F͓͓ *#"+F û :G; !9FK *#"+!9F}*6K !9F:G͟K K Y  ! *#"+F|] !"*F0~ *F9͓ʥ * s*#"+F"c ! }2! ""!"*#"+Fa !"!9L ~ !0}2!"!9L ~ !0}2!"!9L ~ !9L ~ !9LF|S !9L#Q+F *+"% ! ͵ ~ ~ Y d u o x c% sͻ !9L ʠ !9L0ï !9LA *+" :G õ * !9L" *+"#*| * .|g| *+"#* >" !"** / * ͓S ͵ *|H !- * ͂ *ͯm * !(Ñ *ͯʇ * ! ͏Ñ * !( *ͯʱ * ! ͏ü *+* ͉͂ " * * !9Lh !9L##L!?ͯ !9LLF" * ͨh !9L##L!CͯH yͨ͟h !9L##L!k!!HuV!|E" * * ??y?͟?ͨ!!x!!R!!R!!R!K?Y 0 1 2 3 4 5 6 7 8 9 U R D L F B S Xä Vk " " *T*R*P*N!!i!k"P!"T*P ré*P##"P++*T#"T+Å*T !*T-*T|!-*T|!-*T|!-*T|-!*PL"N*P##L*N dV*N#"N+6*NF͐K!Ô!!x!!R!!R!!R!!!"N"P"R"T;*******!k"!9Lk!9L)*"è*"è*"è*"è*"èèY01234567894UARND[L*##"*L*L4"!"!9*LQ!!9L4*"!!x!!R!!R!!R!G*!s!9L!9F*1"**4"*L*L**L!9L4!9F*L***##"++L*Qô"""""""3!9!!x!!R!!R!!R!y!9!ͭ!9!k!!u!9*w*u*s*q!"q!"s!"u!!x!!R!!R!!R!!"w*sF+*w *w#"w+*u*wF!*s! 9!ͭ#}! 9*u*sF!!9}*q! 9F}"q"s"u"w******!"*F"!!x!!R!!R!!R!! 9!ͭ! 9Fæ!"ö!"ö!!x!!R!!R!!R!H""""""öY,A5B>!*͖!"!"*a*#"+!"*^ *#"+! *!! *!! *!!!!*"!*͖É*s*q! 9L!9Lͯ"s*s|·!p"q"sÅ!H!9L͛!!9L͓͛!"q!9L*q*q#"q+! 9L*q*s}Å!!9L͛>!!9L͓͛ʅ!"q!9L*qʅi*q#"q+J! 9L*qF*s͟^*së!9L !!)!^!9L@!!(!9L!9L*!"*ͯ "*"*/*-*+!"/"-"+!9L+Q{"-͓x*+͓͓͓ʤ*/#"/+! 9L*-"+}͐I*-|·*/+"/*/"+"-"/*!9L! 9L4,!9L+Q)!9L!9L! 9L!9LF}s!"!9L*sQ*#"+2!9L*! 9L*F}F"!!=!9L !9L **!"!9L+Q9"͓͓*#"+!9L*}û!9L*6*""*!"!9L*F!9L*F͛q*#"+!9LF|n!"&!9L*F!9L*F4gogy "!)*+++!*ogy !9La!!9Lz͓6!9LQ!9LKEYBOOTrbKey not definable; try again.SUPERSET v 1.0 (c) 10/1/83 by David B. Ring %2d: U: R: D: L: Type 0-9, U, R, D, L to change key definition, B to change boot, F to save key defs as file, S to save changes to system tracks, X to exit.%d character spaces available for this key %c: Disk:filename.typ for saving keys: wbCurrent boot sequence is: Command to be issued on boot (<= 7 char): Issue on 1=cold boot, 2=warm, 3=both, 0=neither: Drive on which to save current settings: Invalid drive ; press any key to go on.Bad filename; press any key to go on.RBWB*+%"H%"F%"D " " "y 6"C+6+!^6 F+N+<!* !!9~#ʗ RO"k'k +}|+#~ʂu6#~#<ʷ>!4R6#6*! * |ʴ!ͯ"r! ͯ" R Can't open > or < file.$èw*6 )! 9!"6ɜ*:B<*C 2B ́F  €> _*C~+#4N s> > !+:EºF2B_~ý   > G ʘG!* ͟> !+}  > _con:rdr:pun:lst: ==_~O7 !"# !  #¾i& ~º!h~#~#F6%pw6237!9Ly=S>wD<!gs 6#6 ~+|s#r{{ ڟ!+#^{!!Pw#w!g~<6 !|~r!N!nL}*eyb>w#%!=)${=Sbtx h&{ !~!nN#F{p+pH#x¯ ڽ+!9~ !~b!5> 6> *e w`i#Q᯾%,!$|!!9n&:ʟɯ2>[!9L):|!PwL#4!^w>2>2-:Ecx:-O”! DMi:- !Write error - Disk full $`i7.!9~=+SV+^+F+N "I> w+ w w##w w #~+:&~##K@~#.7K&*I++Kw#=a O! ~_#V!$r+sbk#|}o|g}o|g}o|g|!,|}!­­,ɯ|ʙ!|}!-z{!,zz{!-|!|g|}! -ɵz{!-||g}o).{ozg+|/g}/o~og~#fos#rN#F#xr~#~#[[`iDM!z>‚S\))Ҋ =‚ɯßz>|>MD!x<³z>ڸjS\>))#  =¸>>>!9"*++"Lt !9* ! *++"LL *++"L}2:G*++"L͆ *++"L"**++"L͟ !!9L͆ !9F}2!9L"ͻ !9L"!!9L͆ *F͓ *F͓͓ *#"+F û :G; !9FK *#"+!9F}*6K !9F:G͟K K Y  ! *#"+F|] !"*F0~ *F9͓ʥ * s*#"+F"c ! }2! ""!"*#"+Fa !"!9L ~ !0}2!"!9L ~ !0}2!"!9L ~ !9L ~ !9LF|S !9L#Q+F *+"% ! ͵ ~ ~ Y d u o x c% sͻ !9L ʠ !9L0ï !9LA *+" :G õ * !9L" *+"#*| * .|g| *+"#* >" !"** / * ͓S ͵ *|H !- * ͂ *ͯm * !(Ñ *ͯʇ * ! ͏Ñ * !( *ͯʱ * ! ͏ü *+* ͉͂ " * * !9Lh !9L##L!?ͯ !9LLF" * ͨh !9L##L!CͯH yͨ͟h !9L##L!k!!HuV!|E" * * ??y?͟?ͨ!!x!!R!!R!!R!K?Y 0 1 2 3 4 5 6 7 8 9 U R D L F B S Xä Vk " " *T*R*P*N!!i!k"P!"T*P ré*P##"P++*T#"T+Å*T !*T-*T|!-*T|!-*T|!-*T|-!*PL"N*P##L*N dV*N#"N+6*NF͐K!Ô!!x!!R!!R!!R!!!"N"P"R"T;*******!k"!9Lk!9L)*"è*"è*"è*"è*"èèY01234567894UARND[L*##"*L*L4"!"!9*LQ!!9L4*"!!x!!R!!R!!R!G*!s!9L!9F*1"**4"*L*L**L!9L4!9F*L***##"++L*Qô"""""""3!9!!x!!R!!R!!R!y!9!ͭ!9!k!!u!9*w*u*s*q!"q!"s!"u!!x!!R!!R!!R!!"w*sF+*w *w#"w+*u*wF!*s! 9!ͭ#}! 9*u*sF!!9}*q! 9F}"q"s"u"w******!"*F"!!x!!R!!R!!R!! 9!ͭ! 9Fæ!"ö!"ö!!x!!R!!R!!R!H""""""öY,A5B>!*͖!"!"*a*#"+!"*^ *#"+! *!! *!! *!!!!*"!*͖É*s*q! 9L!9Lͯ"s*s|·!p"q"sÅ!H!9L͛!!9L͓͛!"q!9L*q*q#"q+! 9L*q*s}Å!!9L͛>!!9L͓͛ʅ!"q!9L*qʅi*q#"q+J! 9L*qF*s͟^*së!9L !!)!^!9L@!!(!9L!9L*!"*ͯ "*"*/*-*+!"/"-"+!9L+Q{"-͓x*+͓͓͓ʤ*/#"/+! 9L*-"+}͐I*-|·*/+"/*/"+"-"/*!9L! 9L4,!9L+Q)!9L!9L! 9L!9LF}s!"!9L*sQ*#"+2!9L*! 9L*F}F"!!=!9L !9L **!"!9L+Q9"͓͓*#"+!9L*}û!9L*6*""*!"!9L*F!9L*F͛q*#"+!9LF|n!"&!9L*F!9L*F4gogy "!)*+++!*ogy !9La!!9Lz͓6!9LQ!9LKEYBOOTrbKey not definable; try again.SUPERSET v 1.0 (c) 10/1/83 by David B. Ring %2d: U: R: D: L: Type 0-9, U, R, D, L to change key definition, B to change boot, F to save key defs as file, S to save changes to system tracks, X to exit.%d character spaces available for this key %c: Disk:filename.typ for saving keys: wbCurrent boot sequence is: Command to be issued on boot (<= 7 char): Issue on 1=cold boot, 2=warm, 3=both, 0=neither: Drive on which to save current settings: Invalid drive ; press any key to go on.Bad filename; press any key to go on.RBWBSUPERSET and SUBSET were written out of frustration with the limitations of the Osborne SETUP utility. The present versions are not a complete replacement for SETUP, but offer the following enhanced features: 1) Sets of special function key definitions (including arrow keys) may be saved as CP/M files, which occupy 1K on double density and 2K on single density. You can save as many of these files on a disk as you have room for, and you can easily change the set of definitions in use. 2) SUPERSET also allows display and alteration of the command issued on cold boot, warm boot or both. When function key definitions are saved as a file, the boot command is also saved. 3) The command SUPERSET alone displays key settings and allows menu driven alterations, but command line arguments can also be used for abbreviated operations. SUPERSET FILENAME will load key definitions from the named file. (I.e., you can set SFK ^9 to "SUPERSET KEYDEFS2.KEY^M" so that hitting key ^9 will rapidly load an alternate definition set.) SUPERSET KEY K will allow editing of key K only with immediate exit. SUPERSET BOOT will allow changing the boot command only. 4) SUPERSET and SUBSET are written in Software Toolworks C/80. I have not checked whether they are compatible with the version of small C in the FOG library (probably not). Those with some knowledge of C should have little trouble in making their own modifications to the source code, which is included. A .ASM file for each program is also supplied, but note that these files require the C/80 AS assembler and will NOT assemble as is with the CP/M ASM.COM. 5) SUPERSET and SUBSET can easily be configured for single or double density by #defining the word SD or DD in the header section, as explained in the .C file. The density version of .COM files supplied is indicated by a 1 or 2 in the name. Users with a BIOS that does not start at E500 or E100 will have to make the required adjustments to the macro table in the header section and recompile the .c file. Be careful with the function syswrit(), which writes edited definitions to the system tracks of a diskette, and could trash your system tracks if the addresses are wrong. 6) SUBSET.COM is smaller than SUPERSET.COM (3k versus 7k) and includes only the ability to load files of key definitions created by SUPERSET. It may be included on disks where you want to use multiple predefined key sets, but don't have enough space for SUPERSET. SUPERSET and SUBSET are copyrighted, but may be used, copied and distributed freely for noncommercial purposes. These programs may not be sold or distributed in connection with any kind of charge except by the express written permission of the author. Permission has been granted to FOG (First Osborne Group) to distribute SUPERSET and SUBSET on FOG library disks free or for the usual copy charge to members who cannot obtain it from a local group. SUPERSET will display and permit modification of the special function and arrow keys for the Osborne 1. The configuration of these keys may be saved in a file. SUBSET (as well as SUPERSET) will permit key values to be reset from a previously created key configuration file. SUPERSET will also permit redefinition of the program (nominally AUTOST) automatically run at boot time (cold, warm, or both). SUPERSET.C and SUBSET.C are source code files written in Software Toolworks C/80. SUPRSET1.COM and SUBSET1.COM are the executable command files configured for single-density. SUPRSET2.COM and SUBSET2.COM are the executable command files configured for double-density. Refer to SUPERSET.DOC for examples of use. These programs were submitted by Dave Ring. /* C/80 source code for SUPERSET version 1.0, 10/1/83 by David B. Ring, 1248 Truman Street, Redwood City, California 94061. Copyright (c) 1983 by David B. Ring. SUPERSET may be used, copied and distributed freely for noncommercial purposes, providing that a copy of this notice is included. No commercial use of SUPERSET may be made without the author's express written permission. SUPERSET was written and compiled using C/80 3.0 from the Software Toolworks. Appreciation is due to Walt Bilofsky for allowing free distribution of programs compiled with C/80. Appreciation is also expressed to Terje Bolstad for his public contribution of the CP/M bdos and bios calls used in the function syswrit(). SUPERSET extends the Osborne SETUP program by allowing sets of special function key definitions to be saved and loaded as CP/M files. Unlike SETUP, SUPERSET also provides display and editing of the arrow key definitions and the command issued on boot. Comments, suggestions and fixes are appreciated and may be sent to the address above. WARNING: SUPERSET offers the option of recording edited soft features to the system tracks of a diskette. If the #define options specifying track and sector are not properly configured for your system, a syswrit() operation could render your disk unbootable, in which case you will have to repair it by using SYSGEN. */ /****** HEADER SECTION **********************************************/ #include "a:tprintf.c" /* short form of printf() */ /* Macros which apply to either single or double density. */ #define ESC '\033' #define CLEAR putchar('\032') #define DIM putchar(ESC); putchar(')') #define BRIGHT putchar(ESC); putchar('(') #define WIPEL putchar(ESC); putchar('R') #define PROMPT cursor(21,0); WIPEL; WIPEL; WIPEL #define FILENAME 14 #define SELDISK 14 #define SETTRK 10 #define SETSEC 11 #define SETDMA 12 #define WRITE 14 #define CURDRIVE 0X0004 /* Explanation of #defines: ESC escape character CLEAR clear video screen DIM turn on dim video attribute BRIGHT turn on bright video attribute WIPEL clear current line on video screen PROMPT move cursor to line 21 and clear 3 lines FILENAME maximum size of CP/M filename SELDISK select disk bdos service SETTRK set track bios call SETSEC set sector bios call SETDMA set buffer address for disk I/O WRITE write sector bios call CURDRIVE address containing current drive # */ /* Macros specific for single or double density. The set actually used is toggled by #defining SD or DD (but not both!). */ #define DD #ifdef DD #define KEYTABL 0XE16B #define ENDTABL 0XE187 #define LIMIT 0XE1FA #define BOOTSWITCH 0XE19C #define BOOTLENGTH 0XE19D #define BOOTCOMMAND 0XE19E #define BIOS 0XE100 #define FSTTRK 1 #define LSTTRK 1 #define FSTSEC 4 #define LSTSEC 5 #endif #ifdef SD #define KEYTABL 0XE56B #define ENDTABL 0XE587 #define LIMIT 0XE600 #define BOOTSWITCH 0XE589 #define BOOTLENGTH 0XE58A #define BOOTCOMMAND 0XE58B #define BIOS 0XE500 #define FSTTRK 2 #define LSTTRK 2 #define FSTSEC 4 #define LSTSEC 6 #endif /* Explanation of #defines: KEYTABL address of jump table to key defs ENDTABL end of jump table LIMIT first location AFTER key defs BOOTSWITCH contains warm/cold/both/none choice BOOTLENGTH # of chars in boot command + 1 BOOTCOMMAND starting address of boot command BIOS starting address of bios FSTTRK first track to write LSTTRK last track to write FSTTRK first sector to write LSTTRK last sector to write */ /****** MAIN PROGRAM ************************************************/ /* The command "SUPERSET" without arguments shows the key definitions currently in memory. "SUPERSET FILENAME" starts by loading new definitions from the name file. "SUPERSET KEY K" (where K is 0-9, U, R, D, L) allows alteration of key K only, without display. "SUPERSET BOOT" allows changing the cold or warm boot sequence. */ main(argc, argv) int argc; char *argv[]; { int c; char *s; /* First, check for and handle command line arguments. */ if (argc > 1) { if (!strcmp(argv[1], "KEY")) { c = argv[2][0]; newkey(c); exit(); } else if (!strcmp(argv[1], "BOOT")) { setboot(); syswrit(); exit(); } else overlay(argv[1], KEYTABL, LIMIT - KEYTABL,"rb"); } /* Then, display current function key settings and menu. */ showkeys(); /* Now, respond to menu choice. */ while (1) { c = toupper(inkey()); switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case 'U': case 'R': case 'D': case 'L': newkey(c); /* insert a new def */ break; case 'F': filekeys(); /* save defs as file */ break; case 'B': setboot(); /* change boot command */ break; case 'S': syswrit(); /* save changes to disk */ break; case 'X': exit(); /* return to CP/M */ default: PROMPT; printf("Key not definable; try again."); } showkeys(); } } /****** FUNCTIONS CORRESPONDING TO PROGRAM MODULES ******************/ /* Showkeys displays the Osborne special function keys as well as the four arrow keys. */ showkeys() { char *key, **offset, *s; int i; CLEAR; printf("SUPERSET v 1.0 (c) 10/1/83 by David B. Ring\n\n"); for (offset = KEYTABL, i = 0; offset < ENDTABL; offset++, i++) { if (i < 10) printf("%2d: ", i); else if (i == 10) printf(" U: "); else if (i == 11) printf(" R: "); else if (i == 12) printf(" D: "); else if (i == 13) printf(" L: "); for (key = *offset; key < *(offset + 1); key++) { showchar(*key); } printf("\n"); } PROMPT; printf("Type 0-9, U, R, D, L to change key definition,\n"); printf("B to change boot, F to save key defs as file,\n"); printf("S to save changes to system tracks, X to exit."); } /* Newkey() allows entry of a new function or arrow key definition, and also inserts the new definition into the function key table in BIOS, moving old definitions and adjusting pointers as needed. */ newkey(c) int c; { char **pkey, **pnext, **endtabl, s; int oldlen, newlen, free, diff; unsigned last; pkey = KEYTABL; switch (c) { case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': pkey += (c - '0'); break; case 'U': pkey += 10; break; case 'R': pkey += 11; break; case 'D': pkey += 12; break; case 'L': pkey += 13; break; } pnext = pkey + 1; oldlen = *pnext - *pkey; endtabl = ENDTABL; last = *endtabl; free = LIMIT - last + oldlen; PROMPT; printf("%d character spaces available for this key\n", free); printf("%c: ", c); newlen = getbytes(s, free); diff = newlen - oldlen; cmove(*pnext, *pnext + diff, (int) (last - (unsigned) *pnext)); cmove(s, *pkey, newlen); while ((unsigned) pnext <= ENDTABL) *pnext++ += diff; } /* Filekeys() prompts for a filename and then writes the chunk of BIOS containing function key pointers and definitions to that file. Except for a length maximum of 14 characters, filekeys() does not check validity of filenames. */ filekeys() { char filename[FILENAME]; PROMPT; printf("Disk:filename.typ for saving keys: "); getstr(filename, FILENAME); overlay(filename, KEYTABL, LIMIT - KEYTABL, "wb"); } /* Setboot() provides display and editing of the command issued on cold or warm boot. By setting a toggle in memory, the command can be issued only on cold boot, only on warm boot, on both, or on neither. */ setboot() { char s[7], *pswitch, *plen, *pcom, c; int i; pswitch = BOOTSWITCH; plen = BOOTLENGTH; pcom = BOOTCOMMAND; PROMPT; printf("Current boot sequence is: "); for (i = 0; i < *plen - 1; i++) putchar(pcom[i]); printf("\nCommand to be issued on boot (<= 7 char): "); *plen = getstr(s, 7) + 1; cmove(s, pcom, *plen); printf("Issue on 1=cold boot, 2=warm, 3=both, 0=neither: "); c = inkey(); *pswitch = c - '0'; } /* Syswrit() writes the section of BIOS containing key definitions and boot command to the system tracks of the specified disk. */ syswrit() { char s[2], *curdrive; int olddrive, drive, dma, track, sector; curdrive = CURDRIVE; olddrive = *curdrive; PROMPT; printf("Drive on which to save current settings: "); getstr(s, 2); switch (toupper(s[0])) { case 'A': drive = 0; break; case 'B': drive = 1; break; default: PROMPT; printf("Invalid drive; press any key to go on."); inkey(); return; } bdos(SELDISK, drive); dma = BIOS; for (track = FSTTRK; track <= LSTTRK; track++) { for (sector = FSTSEC; sector <= LSTSEC; sector++) { bios(SETTRK, track, 0); bios(SETSEC, sector, 0); bios(SETDMA, dma, 0); bios(WRITE, 1, 0); dma += 128; } } bdos(SELDISK, olddrive); } /****** LOW LEVEL FUNCTIONS *****************************************/ /* Inkey() uses BDOS service 6 to get a character from the console without echoing it to the video display. If no character is ready, the BDOS call returns 0, but the while loop waits until a nonzero character is returned. */ inkey() { int c; c = 0; while (c == 0) c = key(); return(c); } key() { #asm LXI B,6 ;PUT FUNCTION #6 (DIRECT CONSOLE I/O) IN B LXI D,255 ;PUT PARAMETER IN D (CONSOLE INPUT) CALL 5 ;BDOS CALL RET #endasm } /* Toupper() converts alphabetical characters to upper case. */ toupper(c) int c; { if (c >= 'a' && c <= 'z') c += 'A' - 'a'; return(c); } /* Showchar feeds through normal printing characters, but converts low ASCII nonprinting characters to their offset alphabetic equivalents. The special characters are preceded by "^" and highlighted with the dim video feature. */ showchar(c) int c; { if (c < 32) { DIM; putchar('^'); putchar(c + 64); BRIGHT; } else if (c < 128) putchar(c); } /* Cursor() moves the cursor to the specified position. */ cursor(y, x) int y, x; { putchar(ESC); putchar('='); putchar(y + 32); putchar(x + 32); } /* Getstr() gets a string terminated by or excess length from the console. In this program it is used to read in filenames. */ getstr(s, lim) char s[]; int lim; { int c, i; i = 0; while (--lim > 0 && (c = getchar()) != '\n') s[i++] = c; s[i] = '\0'; return(i); } /* Getbytes() accepts a string of normal and control characters until terminated by or the length limit. */ getbytes(s, lim) char s[]; int lim; { int oldchar, c, i; oldchar = c = i = 0; while (--lim > 0 && ((c = inkey()) != ESC || oldchar != ESC)) { showchar(s[i++] = oldchar = c); } if (c == ESC) --i; return(i); } /* Strcmp() is straight out of K&R. It returns 0 if string s equals string t, or a negative or positive number if s is lexicographically less than or greater than t. */ strcmp(s, t) char s[], t[]; { int i; i = 0; while (s[i] == t[i]) if (s[i++] == '\0') return(0); return(s[i] - t[i]); } /* Overlay() either overlays the specified RAM address with the contents of the name file, or writes a block of RAM to a new file, prompting for the filename. No testing for overflow of available RAM is performed. Overlay() performs a similar function to the C/80 library functions read() and write(), but works with specified lengths rather than blocks of 128 characters. */ overlay(filename, address, length, mode) char *filename, *address, *mode; int length; { int i, chan; chan = fopen(filename, mode); if (chan == 0) { printf("Bad filename; press any key to go on."); inkey(); return; } else if (mode == "rb" || mode == "RB") for (i = 0; i < length; i++) { *(address + i) = getc(chan); } else if (mode == "wb" || mode == "WB") for (i = 0; i < length; i++) { putc(*(address + i), chan); } fclose(chan); } /* Cmove() behaves like the same word in FORTH, i.e. it moves a block of n bytes residing at address 1 to address 2. This version is smart enough to note the direction of short moves and move bytes from the proper end to avoid propagation. Cmove() does no range checking and will over-write anything. */ cmove(addr1, addr2, n) char *addr1, *addr2; int n; { int i; if (addr2 - addr1 >= 0) { while (--n >= 0) { *(addr2 + n) = *(addr1 + n); } } else { for (i = 0; i < n; i++) { *(addr2 + i) = *(addr1 + i); } } } /* The following CP/M bdos and bios calls for C/80 were contributed to the June, 1983 issue of Dr. Dobb's Journal by Terje Bolstad and generously made available for public use. The following contribution notice is included as requested. */ /* CP/M BDOS AND BIOS CALLS FOR C/80 Contributed by T. Bolstad, ELEKTROKONSULT AS Konnerudgaten. 3, N-3000 Drammen, NORWAY. Date: January 17, 1983. */ bdos(funct, arg) /* corresponds to bdos((BC),(DE)) */ int funct, arg; { #asm CPBASE EQU 0 ;NORMAL 0-ORG'ED CP/M CPNTRY EQU CPBASE+5 ;BDOS ENTRY POP H ;GET RETURN ADDRESS POP D ;GET ARG (INFORMATION ADDRESS) POP B ;GET FUNCTION # PUSH B ;RESTORE STACK PUSH D PUSH H PUSH B ;SAVE FUNCTION # ON STACK CALL CPNTRY ;BDOS CALL XCHG ;SAVE HL IN DE MOV L,A ;SAVE A IN L ;SIGN EXTENSION TO H: RLC ; GET SIGN BIT INTO CY SBB A ; IF CY=0, RESULT AFTER SBB IS 0 ; IF CY=1, RESULT IS -1 (IE, ALL ONES) MOV H,A ; A IS MOVED TO HL WITH SIGN EXTENSION POP B ;GET FUNCTION # IN BC MOV A,C ;GET FUNCTION # IN A CPI 12 ;WAS IT 'RETURN VERSION #' ? JZ RETHL1 CPI 24 ;RETURN LOGIN VECTOR ? JZ RETHL1 CPI 27 ;GET ALLOCATION ADDRESS ? JZ RETHL1 CPI 29 ;GET READ/ONLY VECTOR ? JZ RETHL1 CPI 31 ;GET DISK PARAMETER ADDRESS ? JZ RETHL1 JMP BDOSRET RETHL1: XCHG BDOSRET: RET ;WITH RETURNED VALUE IN HL #endasm } bios(funct, arg1, arg2) /* corresponds to bios(function, (BC), (DE)) */ int funct, arg1, arg2; { #asm POP D ;RETURN ADDRESS POP H ;ARGUMENT 2 SHLD ARG2S ;SAVE IT POP B ;ARGUMENT 1 XCHG ;GET RETURN ADDRESS INTO HL POP D ;FUNCTION # PUSH D ;RESTORE SP PUSH B PUSH B PUSH H ;RESTORE RETURN ADDRESS PUSH D ;SAVE FUNCTION # ON STACK LXI H,0 ;CALCULATE OFFSET ADDRESS FROM FUNCTION: DAD D ; GET FUNCTION # (OFFSET) IN HL DAD H ; 2*OFFSET DAD D ; 3*OFFSET XCHG ; SAVE OFFSET ADDRESS IN DE LHLD CPBASE+1 ;GET POINTER TO BIOS WBOOT ENTRY DCX H ;DECREMENT TO DCX H ; POINT TO DCX H ; START OF BIOS ENTRY JUMP TABLE DAD D ;ADD OFFSET (RESULT IN HL) XCHG ;GET RESULT IN DE LXI H,RET1 PUSH H ;SAVE RETURN ADDRESS ON STACK LHLD ARG2S ;GET ARGUMENT 2 XCHG ;GET ARGUMENT 2 INTO DE ; AND BIOS FUNCTION ENTRY ADDRESS INTO HL PCHL ;GO TO BIOS RET1: XCHG ;SAVE HL IN DE MOV L,A RLC ;GET SIGN BIT INTO CY SBB A ; IF CY=0, RESULT AFTER SUBB IS 0 ; IF CY=1, RESULT AFTER SUBB IS -1 (ALL ONES) MOV H,A POP B ;GET BIOS FUNCTION # IN BC MOV A,C CPI 9 ;SELECT DISK FUNCTION ? JZ RETHL2 CPI 16 ;SECTOR TRANSLATION FUNCTION ? JZ RETHL2 JMP RETBIOS RETHL2: XCHG ;RETURN VALUE IN HL RETBIOS: RET ARG2S: DS 2 #endasm }N # ON STACK LXI H,0 ;CALCULATE OFFSET ADDRESS FROM FUNCTION: DAD D ; GET FUNCTION # (OFFSET) IN HL DAD H ; 2*OFFSET DAD D ; 3*OFFSET XCHG ; SAVE OFFSET ADDRESS IN DE LHLD CPBASE+1 ;GET POINTER TO BIOS WBOOT ENTRY DCX H ;DECREMENT TO DCX H ; POINT TO DCX H ; START OF BIOS ENTRY JUMP TABLE DAD D ;ADD OFFSET (RESULT IN HL) XCHG ;GET RESULT IN DE LXI H,RET1 PUSH H ;SAVE RETURN ADDRESS ON STACK LHLD ARG2S ;GET ARGUMENT 2 XCHG ;GET ARGUMENT 2 INTO DE ; AND BIOS FUNCTION ENTRY ADDRESS INTO HL PCHL ;GO TO BIOS RET1: XCHG ;SAVE HL IN DE MOV L,A RLC ;GET SIGN BIT INTO CY  The SET Utility -- Version 3.0 For the O1 -- (C) 1983 M.J. Guerra, VROOM, INC. ** OPTIONS ** SET Arrows Wordstar, or Cpm, or Special SET Baud 300, or 1200, or 19200 SET Hxxxx xx, or SET Hxxxx xxxx, to change memory SET Logical 52, or 80, or 128 SET Printer Serial, or Parallel, or Ieee, or Osborne SET Printer Top-of-form, or Formfeed SET Printer /Etx/ack, or /Xon/xoff, or /Normal SET Printer Compressed, or Wide, or Emphasized, or Normal SET Scroll ON, or OFf$ SET Width 52, or 80, or 104 Only Upper Case Letters or Special Symbols Required Examples: SET P S sets printer to serial port SET B 300 sets baud rate to 300 $ BIOS base invalid for this version of SET.$!>#> {  s 1 &(&(.>þ..|2:] (AZBHYLDPDSWʥ|2`*:mC(TW(S6#6#6#S(66Special$WordStar$CP/M arrow keys loaded.$6 #6 #6 #6|2:m3(1:n9(U% SV +ST< [Baud rate is now $300.$1200.$19,200 (unsynchronized).$.g:mS(/P(FI(QO(\F(eT(a/(lCLETW\Nd:?@͋ 2:?͋:?͋:?͋ ͎:nE( X(N(>w͎>w͎w͎*.h:mO:nN(F6 Scrolling off.$66Scrolling on.$!l:m5(8(16u64u6Pu{Logical screen width is now $52.$80.$128.$!> #>:m!5(8(1 >w{ >Printer set to $serial.$parallel.$IEEE.$Osborne.$top-of-form.$ETX/ACK.$X-ON/X-OFF.$no protocol.$_0? ?0 ))))o:b ($f --- Invalid address or data.$!:^ (78:_ ʺ78:` ʺ78:a ʺ78"|8( 0$ <--- Address not accepted.$ !:m `7`:n (578:o ()78:p ( 78:q *"6SE}*w Done.$!!!!F#^͎compressed.$emphasized.$expanded.$normal.$Q!N" Documentation for The SET Program for the Osborne 1 Copyright (C) 1983 by MJ Guerra, VROOM INC. SET is a program to immediately and temporarily change almost all of the parameters (settings) of your computer (and some of the parameters of your printer as well). In a way, it functions like the SETUP program included with your computer, but it is quicker, easier to use, and does more. With SET, you can: Set your arrow keys to WordStar, CP/M, or a special setting that may eliminate the need for either WordStar or CP/M arrow keys for you. Set the baud rate on your serial port instantly to any of three settings -- 300, 1200, or 19200. Change the logical width of your Osborne screen from 52 to 80 to 128 characters per line. Set the physical width of your Osborne screen or external monitor (on those Osbornes with the 80-column upgrade from Osborne) to 52, 80, or 104 columns displayed. Set horizontal scrolling off for programs like SuperCalc, or set scrolling on for programs like WordStar. Set the LST: (printer) device to be the serial port, the parallel port, the IEEE-488 port, or even your Osborne screen (very useful if you don't have a printer, or don't want to waste paper). Set the protocol of your serial printer to be ETX/ACK, or XON/XOFF, or no protocol. Set your printer to top-of-form by sending it a formfeed command. Set your Epson or Okidata dot-matrix printer to compressed, expanded, emphasized, or normal printing (without MBASIC!). Set any memory location in your computer's memory to a desired value, like CP/M's IOBYTE for special applications, or those locations for "speeding up" your drives, locking and unlocking your keyboard, etc. A list of such reserved memory locations is included. This program is designed to be both useful and easy to use. It may easily become one of your most favorite utilities for your computer, and its 2K size may make it a resident of all your program diskettes. .pa How to Use SET: First follow the instructions for backing up the Utilities diskette that we've sent you. Then copy SET.COM onto the disk(s) of your choice with PIP or other file-copying program. "Boot" your computer so that you see the CP/M prompt on the screen, either an "A>" or a "B>". Put the disk with SET.COM into this drive if it is not already there. Type the letters "SET" followed by a carriage return key to see a list of options you can choose from. Should you ever enter a command that the program does not understand, this is the menu that you will see. Try the following command. This is the long form of the command; the short form will be shown later. SET ARROWS WORDSTAR where means press the carriage return key. Your drive will turn on for a moment and a message will be displayed: WordStar arrow keys loaded. Test this out by hitting the left-arrow key; you should see a "^S" appear every time you hit the key. Hit the down-arrow key (^X) to make the "^S" characters disappear. Now type in the following command: SET ARROWS CPM You will see the message: CP/M arrow keys loaded. You can prove this by typing some characters and then deleting them with the left-arrow key, which is now CP/M's backspace key (^H). The short form of the command is simply the initials of the arguments, in most cases. For example: SET A C will set the arrows to CP/M, and SET A W will set the arrows to WordStar's configuration. (There is a special combination of WordStar and CP/M arrow keys that I call Special -- the left arrow key is CP/M's backspace, while the rest of the arrow keys are configured for WordStar. This works well with SuperCalc, dBASE II, and most other programs, as well as CP/M and WordStar.) The one exception to single-letter arguments is the SET SCROLL ON or !SET SCROLL OFF command. You need at least two letters for the second argument because they both start with the letter "O". To set the different printer protocols, you need both a slash ("/") and a letter for the second argument. To set the printer to the X-on/X-off protocol, you would need the command SET P /X or SET PRINTER /XONXOFF which would return a message that the printer was set to XON/XOFF. To return the printer protocol to normal, use this command: SET P /N instead of SET P N, because this last command is to reset the Epson printer to normal after the printer had been set to compressed, emphasized, or expanded. Most of the options requiring a number argument need only the first digit to work correctly: SET B 3 will set the baud rate to 300. SET L 5 will set the logical screen width to 52 col. SET W 1 will set the physical screen width to 104 columns when the SCREEN-PAC is installed. (Note: If your OPERATING SYSTEM supports the SCREEN-PAC even if you don't have one, typing SET will display the option anyway. Executing the command won't affect operation, however.) An exception to the single-digit short form is the SET BAUD option. SET BAUD 1 will set the baud rate to 1200, but SET BAUD 19 will set it to 19,200, unsynchronized. Please don't let this confuse you. If you are not sure about an option, just type SET to see the list of options. Then try out a command. The program will tell you what it has done after it does it! The form for changing memory with the SET program is: SET Hxxxx xx, or SET Hxxxx xxxx The first form is for changing a byte. The first four x's are the address; the remaining two are the new byte, in hexadecimal. For example, SET HEF13 01 will change memory location EF13 hex to 01 hex. (You could leave off the leading zero: SET H3 0 changes your IOBYTE so that all your printer output also goes to the Osborne screen.) The second form is for changing a word (two bytes) at a time. In this instance, SET assumes an address value for the second set of x's, so it stores the word high-order-byte-last. SET H0001 E503 would store 03 hex in location 1 and E5 hex in location 2. Note: SET will protect itself from being modified with this command. Installing the SET program for your printer To reconfigure the program for a different printer (where you already know the control codes you need), you can use DDT. The program contains the strings to be sent to the printer in the following locations: 08C0 - string to initiate COMPRESSED printing 08D0 - string to initiate EMPHASIZED printing 08E0 - string to initiate EXPANDED printing 08F0 - string to restore printer to normal Each string must contain a minimum of 2 bytes. The first byte indicates the number of bytes to be sent to the printer. Following this are the bytes that are actually sent. For example, to set an Epson to emphasized mode, two bytes must be sent to the printer. Therefore, the string starting at location 08D0 (hex) is 02 (to indicate that two bytes are to follow) 1B 45. (Note: 1B is the hex code for ESC. See appendix B of any Epson MX printer manual for the Epson control codes. The manual for your printer should contain the control codes it needs.) A string can be up to 16 bytes, meaning that up to 15 bytes can be sent to the printer at any one time. When you have made your changes, use the command SAVE 8 SET.COM to save the modified version. While the SET program is currently prepared to set your printer to emphasized, compressed, and expanded modes, any string may be sent to the printer by making the appropriate modifications in the fashion outlined above. That means that if your printer will blow itself up upon receiving a certain string of characters, then modify SET to transmit that string upon the execution of SET PRINTER WIDE (if that is a command that you do not care to use). All you have to do then is remember that SET P W will make your printer blow up! .pa Some Special Osborne 1 Locations: Address Function 0003 CP/M's IOBYTE EF08 ROM/RAM cell E189 IEEE Device Address (double density only) EF13 Disk Drive Step Rate Delay cell EF59 Keyboard Lockout cell (0=locked out) EFC7 Disk Swap cell (0, normal; 1, swapped) e Step Rate Delay cell EF59 Keyboard Lochave made your changes, use the command SAVE 8 SET.COM to save the modified version. While the SET program is currently prepared to set your printer to emphasized, compressed, and expanded modes, any string may be sent to the printer by making the appropriate modifications in the fashion outlined above. That means that if your printer will blow itself up "*.l~.~2*}‰|g.l~‰.~‰.k"H~2JB]*H.m~2R.kn:Rb͒*L,Q *H.o~2R.mn:Rʅ͒*L,t *H.q~2R.on:Rʨ͒*L,× *H.s~2R.qn:R͒*L,ú *H.u~2R.sn:R͒*L, *H.w~2R.un:R͒*L, *H.y~2R.wn:R4͒*L,# *H.{~2R.yn:RW͒*L,F *H.}~2R.{n:Rz͒*L,i *H.~2R.}n:Rʝ͒*L,Ìk !Sw   0:0*HoT]o:&2&M :&!S~0G _*H.n~2K62O2T>2R2Qʂ!O6ʍ ʧ  u͖:R2R\:R<2R\:O¡<2O:Q͖:R2R\͓:R2N :N=ª:Q͖:R2R\ g g g!U:To$:Qw:T<2T!T~v*H:S0G>Oxo^,,~_:T_w <,,{$w <,,{$*Hxon:TOUw V,K!x_, wvk!K~*H.nw*H;͓4!U:Tȅ=ҡ$o~  :R=2R :R2R :R2R 2O:R2R*|92&6. ,:g}00, o"!1"!"L*H!V$o"N*L:Nw#:Ow#"L tJ:JGOXw #À'"L~ڟ^ ʺ@2P^:P_   n q    ì*H.>2&6. ,:g}00, o"!1"!"L*H!V$o"N*L:Nw#:Ow#"L tJ:JGOXw #À'"L~ڟ^SET.COM Copyright 1986, Francis H. Lewis $ There are character spaces left.T $ There's only 1 character space left.T $0Sorry, wrong version of CP/M for this version of SET.$ Current Function Keys are: 0: $ Which key would you like to change? (Enter 0-9 or RETURN to quit): $ Enter any string of characters.T (Control characters are allowed.)T Enter ESCAPE twice to end the string. $ $ $ R $ $ $ $ $ ^H$^I$ ^J$ 0: $ 1: $ 2: $ 3: $ 4: $ 5: $ 6: $ 7: $ 8: $ 9: $)($)($W$WW$WWWW$WWWWW$w #À'"L~ڟ^ ʺ@2P^:P_   n q    ì*H.>2&6. ,:g}00, o"!1"!"L*H!V$o"N*L:Nw#:Ow#"L tJ:JGOXw #À'"L~ڟ^SET.COM Copyright 1986, Francis H. Lewis $ There are character spaces left.T $ There's only 1 character space left.T $0Sorry, wrong version of CP/M for this version of SET.$ Current Function Keys are: 0: $ Which key would you like to change? (Enter 0-9 or RETURN to quit): $ Enter any string of characters.T (Control characters v#8SET-O1.ASMS  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKoLMNOPQR\(}?}/~ߧ?~㧟w?_J#$tF6Vк-\r'9Xr{mó7SI!6!M3$B7Lɘn"Lktp~bKit)indTx!Qd\D*V2 QZ2CoN"LFL7!&I1ܘKF&=M.d\Dj%wJ*|H^J[C @lU8XCv5KɈ8Klpc#[69֐])U۽w_rݚO8i?7 SbKGv/yzIűPݚɱK,N5ݍҦ*iL` ]K?ԑ.rЛÔ6U1LQS;7.yp?#@o6&)]i GnR2CG*)]"k0Kɘnz0$6.%#ȺLJ}Л iĖ";e+=F5d?k<;WuЫ5B=F7%# d\P/w&qP^2M;i0L< ɩK,Z2+Ҧ* Mdz0%#G&kd\Z/tg*%k8MJ.^'c@rքD璑h ?#@o6&)]i GnR2C @lU(S&YYJlpcЃ!u)F֥ḋ?> @o6[ɮN5d?kOAld]j#Dt\2K @IT-=Y2M;i0L< ɩK,Z2+Ҧ* Mdz0%qjtg*%k8MJ.^^uKoM(8<ѹd$=%OȻЛ -EvdWZQ*۽G*)] ,%c1Ⱥb#R2C @o6[ɮ%E`1K_F@=O%݄?47q}BoUK_G4j OBir ?iJdB/(!$bsI%#94MēPĢ%O"m,٪KF0 7 [Iȑ)׹;ݙJfK' ͻ(ٕbsI"yY PGRIJl)Yh [%kͻnɮKB^V.NMܘVtE8XSrәOǀ:OQL(jj%#94.N"7%q_Ni`(MN]bђث%6 葭 $tBirfZ2f{<\H- )m La"aQ%ȶ$&JHbXTjɸ>!m%#zX)9Ӡ5'TĔJFjRs$Gà5<OB1)'$VJFj#9z~#$q}BbגZNzX)937J|dzQrIOBkBwKOj%JFdiK%w mLFYYJm|Q٪Г%%#Cd]<Lۘ"k0 y1 O%c>@wRdB/JFdu5bJm|?a>qar&.hH{ƒ!MzdBEJ49uEKFj"&gHb\2Om@I&IhntFV)1IL%!1~%V + IL%c>YH-"&)yY}PU>vw @IT-9]Pl. =OT KH- )"&GI?ioUK< wA<`%#z=>ioH< Ť"d@sɸ>!&qēPL*bJFjHq}B0mM5'TĔHəYD)Yj=ɩK,d\MB0m܈-6%d &.hH{4M@ITCl(p4|uYJ/-$d Ť"j˒Ald]JFr#[ݙJ'!#JSXd\*Ic+HSX`/OAld]`,IE y1 O%#+F֥d$=iЃiOBF&.hɸ UWI*\29Sؼ%&ׄ%-9|uVit!$&ׄVayB0_8%C>hg"dW,%#G`,'ջdDvV _ /ēPĢt)yi5ݍ _F@wbKPL*bȋYx*)F֥d$=iЃiOBF&.hɸ UWI*\29S׼L.E4T+$]d\JSXd\;S)OBFYYJV)MN]bђi:Wua2ۼ])MN]bHli!{-9Ư $.w=U!Yuzd7â%c>аL MYhpH{4iA"ra]ܬ:QaђQU,)pɸ'g{r J2Ukd&V}49uE)1.]JFrޣi3jͻ.: jWĖxbRC^Sp5UɈ 6.%#9L-Lۘx249uEKun46JR0撐əJ5ݭ;=ȈHli GI(&1%6~s?Աt/ypɸ 4K<ēPL*bJm c p/ypɸ 4KJFFbKk8OB1)915h L+N'!#JSX`oOǀiGd]l0Llȃ"k0 ۺ _"E"k0 y1 O% _2f{d\MB0mw%#Tr0mw'&V}&<(MN]bђ1`RHY.:D$Y Sd f!/fdp%#Cd]|PK<(c |ԼKB, W[`:} Fd]<&I2B^Sɘn%ê+'DwzAȃ"k0 'z%OȻЛ -d6 @_)mb.r+q xlГ5Q&4ɱd}8=P1ܸٲdy%EnI~,T#9-ݔҦ*"7MߖFQaQEnے1tV$Endy-V8mBK@_](Lڙv_2f{@gKQhɘ2f}8XS2Qx`ؒ#qd%c1FLqdms0[aȍM5%cpJQd f!/fdYyPd f!/fdms0[$+E`bJln-ZK \tW+%#G8XS2f{<\ɨI*Iet%-'Dwl$B[2rd,J)(<.> 5 [Iȑ`Xd%c!"LnabKV]A3L q1qY]bZdtykJl+5)^%b.rd7â%@AbKFLQXZ#%#GfabK< 925 `d7@_v3Ll)n;KLKq;@wR)98OȻЛ -EvdW:=S2f{;L%QؒݔҦ*K@OSXM5Lp—+=@_8XClmLFYYJuz&#,fXd4\ǀ:#.@o6&dA5_@A~c)=`dԤHz2a,fXd\A=YClȑ)4 +Ukd(l0Llȑ)6%##*l0LlȑiA^TA˓(7;țiZTRT0f-0#߁>yJP05c5Kɘn](Llȑ"7j6-(SdP[$k|$#G&kdZJd?\ɸdJ Ni"L&+92]F5dsÖT2f{>qLӂSo6҅RT0fḋ7dWvO%#n;<>EJ, d7âZ%T"])} (tVLN>Jlpc.~G}ɘ~}3\2f{<\%a1z`bX YCnqG`dWyz0MґKun[;LNd%T$֔Kl'$=vw^2sC0m{%w]Pl. =OT jgIE 9SiU]b0Ⱥ`ؒE`Cd]<SH^SɰtPXɋYx'Q[2dZtW+%vY f)5)L*IedMq5 dJ%'?Ζ -y%-=d@HQ%]b{$ns#!%~8͍R0Ieb"%ٔ`@7vP0IedDJo)=`d\`4W3܈-w^0zb"%ِgKUW2 hl/tc]LR0.! $E(09j KunF ;SIOBHd6^$Y OB,&R~Mɘ~0q~vН3 -$dDJo)9 q%#[IȃbsI%c4Ij%!/+ d\ޔT2R 8%`4u$穆ؼQX|?G0k]|AhkĖbsIؼ  #9.z yw##%!/+,1EJFrޣi0\2sC0[ݙJ0.]ڇ!`6)9 y`4"L[#KB5ݭdc@qؼ5B$ee%FHH{4 KunFc{ ;Siݥ U0Ė5&%>XG1aE`bKɚh4.9 P"\ TZiwB> E`bKɚhG`d 6."LfwQ+ɩK,- d%;!DG*27NofXḋi0 .y&-:Hd]"LKbU7Jv3,Z2jR8JR0.W`4wlBnqPXXj _"tQJR0E`bJFM W2";Dŗ .^%bbsILbVr'_[}a%!/+/ē5)Yͦdp~vУ#=ڒq}BMK&qu*Ieb"%ٔ@7vP2aF"%ٔ0 W2sCM+ݙJmnĖjͻ[5il/O8;mcrd xF"%ٔaIDJo)5)^%b$j#9C*C< Hm6%4%cJunIc{;S͍R yw+& !g3bKɚhÚ3S yw+& q%#[IȃbsI%c4IjKB^V.V\ɸ'Ԥ)=dpK 5il67bKI S yw~.& y4(4ۃֈ-P yw+PGls\bFFKB^VYbtG`d\熚43a]PCl)YlRrMۇ5ilEFl)6jͻ[ǀ:brz yw#kbsI4Knh P@w"LKa-%k8MJIc{}?Աo @b*-´5,Ė5z)׹i0\rM1E=҅},Ė5z)ypAld]E6dWJSX4[ADKIc{wBd@lUenV(Ͱh𓯈- ^7 f4Ij\1%#g%jPwd7Zٹd\AgKB^VY$])\w C21.> d%#9Ҥ%W@_iwB,sFnEKFM WI*%`w=S&=ك(5R2";Hd](٪ܬ:QaQr d\熚4s3f{r J2Uk{SII 9Z#%G #yqZ2-MZ2sóK#=&P)Yj=ɩK,ZbK< Ť"15h `kɉՇ15CH{4 Kun0|'c@k8^KFrޣi0\2sჯ%'V c W%#94.N29:8*]FQ$o(Eے |=Ex |tu%bRS2MqO|Н`6)N5ݍJirRl.I$/+Kr|őw/jUJby%c>T2CuT+Ev\3>E˻Ql. yYdDv-@lU(0CiJޱ(mQJ%Z@q}Bl.&qߚPl4KnZҽḋ?‘5Q&T%csI^gn'ٙH`R%K@=ObFv%)Kun%yYrl.ɋ\ x&}&w҅"x60 dAĖ\L!Г5Q&-B(x6$j#C,&R~Mɸ'撼)q xlПMޓLqYC1)96 =W2+bKG*ē)JSX4  #9.3ēPl. [d\熦pɱ$Nǀi?{6ϑY#art`RlIJF|ElI*yǢE)PGls\@70&)8O)׹i0\rɝc!Guk>$BGvtd{Ȼ?a>L&Ȼd7â%qd;wY f!ґwKF|EڴY} Ҧ*ȻS1pzO8EjLZ)])}Ɉێdc4"߁SݚɱPdn69֔ W+i^7{%ՀW&Aɚ(SĢĖnR2"; Gw \2C3TrOBɚhGK _RbU"[I(MN]bђ1d8ݙJMa \2sCK4M/Nǀ:ZRi0LOq%7Mӫ1&1Maq%Ҥ'̇4^{Ô&.(I)׹a6\r`;}6R`"k0 I)׹a6\rIn͇Xh GnR'Ԉ{J.$TCr,٪[^Jv?FIS%\ZqJk8J%v͑%y'Ԉ%csIhJ&+E!vMdߖy'Ԉ{%\Zհ~:?'O~/>ҹd_O菟w!1*^Fq~.9$jĽdQm'? ǯ?B/?A_LLQw#}_?>}?) t uGqNӏ/O_~. }t.uGq~v璣O#8?~_?W׿O+KFq?y$~ȏ/>ҳyGQw~$ЗoO\r0Pw$~gGO˗? }3/;CbUïǗ_H?| KFq}ӿ!1*^FגQwǗOIbrM_}J~+}?sɨ;:6666%/[;H:666666%/՜Pw$~~~~O;666666666V2ꎭ i*d~~~~~~~~~~~-9_O;sk8N'eq~.y pBݑthX&eaxhX&KFݡaxhX&eaxhX&KFݡaxhX&eaxhX&KFݡaxhX&eaxhX&.ueaxhX&eaxߟK^zBݡaxlmߟK^ ueq~.y ~BݡaxO%'^V^V^V^V^V^V^V^V5ꎭs섺#8?;sr?H::?./O;?./N;?.N;?.oN;?.N;?.O;?.oO;?.N;?ܒPwHLy!1]8?$i0%?4v ,\rBe!1*>sU/+iTixYyHLO\rꄺCbU|^VӨSɨ;<$Qŧe!1*>sU/+iTixYyHLOCb*uG44<$Qŧq~.?=S&=ك(5R2";Hd](٪ܬ:QaQr d\熚4s3f{ȏ/>ҳyGQw~$ЗoO\r0Pw$~gGO˗? }3/;CbUïǗ_H?| KFq}ӿ!1*^FגQwǗOIbrM_}J~+}?sɨ;:6666%/[;H:666666%/՜Pw$~~~~O;666666666V2ꎭ i*d~~~~~~~~~~~-9_O;sk8N'eq~.y pBݑthX&eaxhSETUP DOCUMENT - Roger E. Banning Setup area is bytes E166 hex thru E1FF hex. Specific locations of interest are: E166 - IOBYTE: 40h = serial printer (default) 80h = parallel printer C0h = IEEE printer E167 - printer : 0 = standard serial (default) 1 = ETX/ACK (Qume) 2 = XON/XOFF (Diablo) E168 - controls auto horizontal scrolling: 00 = OFF FF = ON E169 - controls Baud Rate: 56 = 300 bps 55 = 1200 bps E16 - control scree size he equivalen o actua scree width i.e 80 128 50 80 34 52. E16 - startin addres o ke content (alway E1A5). E16D - starting address of key 1 contents. E16F - starting address of key 2 contents. E171 - starting address of key 3 contents. E173 - starting address of key 4 contents. E175 - starting address of key 5 contents. E177 - starting address of key 6 contents. E179 - starting address of key 7 contents. E17B - starting address of key 8 contents. E17D - starting address of key 9 contents. E17 - addres pointe t 1s arro key (up E18 - addres pointe t 2n arro key (right) E18 - addres pointe t 3r arro key (down E185 - address pointer to 4th arrow key. (left) E187 - end of table address. CP/ - 0B,0C,0A,08 WORDSTA - 05,04,18,13 E189 - IEEE device address. E18 - fla indicate i printe ha bee initialized. E18 - o byte i printe initializatio strin (ma 16). E18C - E19B = printer initialization string. E19C - auto command: 0 = ignore auto boot 1 = auto on cold boot (default) 2 = auto on warm boot 3 = auto on both E19D - length of auto command (07) E19E - E1A4 = auto command ('AUTOST ') E1A5 - E1FF = key contents, arrow keys Shoul b o i w pic u thes 15 byte (E16 - E1F an st&ore them as a key set.  contents. E17 - addres pointe t 1s arro key (up E18 - addres pointe t 2n arro key (right) E18 - addres pointe t 3r arro key (down E185 - address pointer to 4th arrow key. (left) E187 - end of table address. CP/ - 0B,0C,0A,08 WORDSTA - 05,04,18,13 E189 - IEEE device address. E18 - fla indicate i printe ha bee initialized. E18 - o byte i printe initializatio strin (ma 16). E18C - E19B = printer initialization string. E19C - auto command: 0 = ignore auto boot 1 = auto on cold boot (default) 2 = auto on warm boot 3 = auto on both E19D - length of auto command (07) E19E - E1A4 = auto command ('AUTOST ') E1A5 - E1FF = key contents, arrow keys Shoul b o i w pic u thes 15 byte (E16 - E1F an st This is the release date of the disk. SUBSET C lSUPRSET1COM nSUPRSET2COM uSUPERSETDOC | SUPERSETDSC SUPERSETC =SET COM SET DOC "SET-O1 COM SET-O1 AQM :SETUP DOC SET-SAV .DOC 26 5B 1152 9 SUBSET1 .COM 84 09 2304 18 SUBSET2 .COM 92 23 2304 18 SUBSET .C 57 8B 2048 16 SUPRSET1.COM ED 83 7168 56 SUPRSET2.COM 27 13 7168 56 SUPERSET.DOC 62 6D 3072 24 SUPERSET.DSC 0E CA 896 7 SUPERSET.C 53 5B 15744 123 SET .COM 29 BB 2048 16 SET .DOC 22 C6 8832 69 SET-O1 .COM 81 FA 2432 19 SET-O1  Fog Library Disk FOG-CPM.101 Copyright (1986) by Fog International Computer Users Group to the extent not copyrighted by the original author for the exclusive use and enjoyment of its members. Any reproduction or distribution for profit or personal gain is strictly forbidden. For information, contact FOG, P. O. Box 3474, Daly City, CA. 94015-0474. as part of the description of a file indicates that the program is distributed on a "try first, pay if you like it" basis. If you find the program(s) meet your need, please refer to the author's documentation for information on becoming a registered user. Only by registering and paying for the programs you like and use will the authors of such programs continue development. Often, more complete documentation, additional modules, and new releases are available only to registered users. Osborne 1 Function Key Setting Programs. Filename Description -07-00 .86 This is the release date of the disk. -CPM101 .DOC This is the description of the disk contents. KEYSET34.COM 4998 16K ver. 3.4 [KEYSET 1 of 2] Defines function keys, arrow keys, and boot command. KEYSET34.DOC 919E 21K ver. 3.4 [KEYSET 2 of 2] QWIKSET .COM 43D3 5K [Qwikset 1 of 5] Defines Osborne 1 function keys and sets screen size, baud rate, port selection, and horizontal scroll toggle. QWIKSET .DOC E125 2K [Qwikset 2 of 5] QWIKSET .AQM 00A0 22K [Qwikset 3 of 5] QWIKSET2.COM FAF6 5K [Qwikset 4 of 5] QWIKSET2.AQM 5A07 24K [Qwikset 5 of 5] SAVKEY .COM 4278 1K [SAVE-SET KEY 1 of 3] Saves Osborne 1 function key setting to a disk file. SETKEY .COM 44BB 1K [SAVE-SET KEY 2 of 3] SET-SAV .DOC 265B 2K [SAVE-SET KEY 3 of 3] SUBSET1 .COM 8409 3K [SUBSET 1 of 3] Defines function and arrow keys on Osborne 1. Note that there  are different versions for single and double density. C80 source is also included SUBSET2 .COM 9223 3K [SUBSET 2 of 3] SUBSET .C 578B 2K [SUBSET 3 of 3] SUPRSET1.COM ED83 7K [Superset 1 of 5] Sets Osborne 1 special function and arrow keys and the "boot" command to a disk file and then allows you to recall them. Two versions (single or double density) & C80 source included SUPRSET2.COM 2713 7K [Superset 2 of 5] SUPERSET.DOC 626D 3K [Superset 3 of 5] SUPERSET.DSC 0ECA 1K [Superset 4 of 5] SUPERSET.C 535B 16K [Superset 5 of 5] SET .COM 29BB 2K [SET 1 of 2] Set Osborne 1 function & arrow keys, screen size, baud rate, port selection, horizontal scroll and printer initialization. SET .DOC 22C6 9K [SET 2 of 2] SET-O1 .COM 81FA 3K [SET-O1 1 of 2] ' Sets the ten special functions keys on an Osborne 1. SET-O1 .AQM 6945 15K [SET-O1 2 of 2] SETUP .DOC 92C2 3K Details memory locations for setup area. (ft,1,2) TO mdate SET ALTE TO &malt SET ALTE ON ? filedesc SET ALTE OFF SET ALTE TO SELE A STOR diskf-"-"-SUBST(dfile,5,3)-"&mdiskno"-".DOC" TO malt SET ALTE TO &malt SET ALTE ON DO WHILE diskno="&mdiskno".AND. .NOT. EOF() IF diskno="000" IF dfile="FOG-DOS" ? "