home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
simtel
/
sigm
/
vols000
/
vol089
/
syslibi.ws
< prev
next >
Wrap
Text File
|
1985-02-09
|
9KB
|
209 lines
What is SYSLIB?
SYSLI┬á (SYSteφ LIBrary⌐ i≤ ß collectioε oµ ove≥ 13░ subrouì
tine≤ whicΦ arσ designeΣ t∩ providσ t∩ thσ CP/═ 8080/Z8░ assembl∙ ì
languagσá programme≥ ß se⌠ oµ function≤ upoε whicΦ hσá caεá builΣ ì
hi≤ programs« Thi≤ librar∙ i≤ intendeΣ t∩ relievσ thσ programme≥ ì
oµá thσ tasδ oµ frequentl∙ "reinventinτ thσ wheeló anΣ t∩ providσ ì
hiφáá witΦá aεá too∞á environmen⌠á whicΦá encourage≤áá structureΣ ì
programminτ a⌠ thσ assembl∙ languagσ level.
EacΦá subroutinσ withiε SYSLI┬ caε bσ vieweΣ a≤á ßá reliablσ ì
"blacδ box.ó Thσ subroutine≤ iε SYSLI┬ arσ completel∙ documenteΣ ì
withiεá thi≤ 100½ pagσ manua∞ anΣ thσ SYSLIBx.HL╨ files¼á anΣ thσ ì
programme≥á i≤ consistentl∙ provideΣ witΦ thσ followinτá informaì
tion:
1. Name of Subroutine
2. Function it performs
3. What its inputs are
4. What its outputs are
5. What registers are affected by it
6. What other library routines it calls upon
7. What errors can occur and how it handles them
Thσ routine≤ withiε SYSLI┬ arσ designeΣ t∩ worδ togethe≥ anΣ ì
complemen⌠á eacΦ other«á Paramete≥ passinτ i≤ consisten⌠ betweeε ì
thσ variou≤ subroutines╗ fo≥ instance¼ al∞ routine≤ whicΦ neeΣ t∩ ì
bσá passeΣá ßá pointe≥ t∩ ß Filσ Contro∞ Blocδá arσá passeΣá tha⌠ ì
pointe≥ iε thσ D┼ registe≥ pair«á Also¼á a≤ ß genera∞ rule¼ iµ ß ì
registe≥ i≤ no⌠ returneΣ a≤ aε outpu⌠ froφ thσ SYSLI┬ subroutine¼ ì
theεá it≤ valuσ i≤ no⌠ affecteΣ (i⌠ ha≤ thσ samσ valuσá wheεá thσ ì
routinσ i≤ exiteΣ a≤ i⌠ haΣ wheε thσ routinσ wa≤ called).
SYSLI┬á itselµá i≤ ß librar∙ oµ relocatablσá objec⌠á module≤ ì
createΣá iεá thσ Microsof⌠ M8░ relocatablσá objec⌠á format«á Al∞ ì
subroutine≤ withiε SYSLI┬ arσ groupeΣ withiε functionally-relateΣ ì
modules«á Oncσá ß routinσ i≤ referenceΣ (b∙ thσ EX╘ statemen⌠ iε ì
thσ M8░ assembl∙ languagσ program)¼á it≤ modulσ i≤ loadeΣ anΣá i⌠ ì
i≤á availablσá t∩ thσ programme≥ b∙ mean≤ oµ ß simplσá subroutinσ ì
call«á Al∞á othe≥ subroutine≤ withiε tha⌠ particula≥ modulσá arσ ì
als∩ loaded¼á bu⌠ the∙ arσ no⌠ availablσ t∩ thσ programme≥ unles≤ ì
hσá ha≤ als∩ referenceΣ theφ b∙ EX╘ statements«á Thσá modulσá i≤ ì
loadeΣá onl∙á once¼á regardles≤ oµ ho≈ man∙ routine≤á withiεá thσ ì
modulσá arσ referenced«á Fo≥ thi≤ reason¼á ╔ havσ designeΣá eacΦ ì
modulσá t∩ contaiε routine≤ whicΦ arσ frequentl∙ useΣ togethe≥ o≥ ì
arσá calleΣá b∙ eacΦ othe≥ (onσ routinσ withiε thσá modulσá call≤ ì
another routine within the module).
What is Needed to Use SYSLIB?
Yo⌡á neeΣ aε 8080- o≥ Z80-baseΣ microcompute≥ witΦ a⌠á leas⌠ ì
48╦á byte≤ oµ contiguou≤ memor∙ runninτ CP/═ 2.2¼á thσá Microsof⌠ ì
M8░á assemble≥ too∞ se⌠ (specifically¼á thσ M8░ assemble≥ anΣ thσ ì
L8░ linker)¼á anΣ thσ usua∞ se⌠ oµ softwarσ developmen⌠ tool≤ (aε ì
edito≥ and¼ preferably¼ ß debugger⌐ t∩ usσ SYSLIB.è
What Does SYSLIB Buy Me?
Thσ bottoφ linσ i≤ that¼á t∩ thσ experienceΣ SYSLI┬ programì
mer¼á SYSLI┬ ha≤ thσ potentia∞ oµ beinτ ß significan⌠ too∞á whicΦ ì
enable≤ hiφ to:
1. Solve his programming task quickly
-- becausσá hσ spend≤ les≤ timσ writinτá comì
áááámonly-useΣ subroutine≤ anΣ worryinτ abou⌠ ho≈ hi≤ regisì
ááááter≤á arσá affecteΣ b∙ thesσ subroutine≤ anΣá morσá timσ ì
ááááconcentratinτ oε thσ probleφ a⌠ hand
áááá 2. Write space- and speed-efficient code
áááá -- becausσá al∞ oµ thσ SYSLI┬á routine≤á havσ ì
áááábeeεá gonσ ove≥ timσ agaiε t∩ reducσ thei≥ sizσ anΣ makσ ì
áááátheφ morσ efficien⌠ iε term≤ oµ speed╗á fo≥ example¼ thσ ì
ááááSOR╘á routinσá i≤á ß Shel∞ Sor⌠ tha⌠ caεá bσá calleΣá t∩ ì
ááááperforφá thσ sor⌠ usinτ pointer≤ (iε whicΦ casσá i⌠á exì
ááááchange≤ pointer≤ rathe≥ thaε record≤ wheε i⌠ need≤ t∩ d∩ ì
ááááß swap⌐ o≥ perforφ thσ sor⌠ withou⌠ usinτ pointer≤ (wheε ì
ááááspacσ i≤ ß facto≥ anΣ therσ ma∙ no⌠ bσ enougΦ rooφ fo≥ ß ì
áááápointe≥ table)
áááá 3« Writσ morσ maintainablσ code
áááá -- becausσ SYSLI┬ i≤ designeΣ witΦ structureΣ ì
ááááprogramminτ philosoph∙ iε mind╗ eacΦ subroutinσ i≤ equiì
áááávalen⌠á t∩ ß proces≤ box¼á havinτ (1⌐ onl∙ onσá entrancσ ì
ááááanΣ onσ exit¼á (2⌐ ß precisely-defineΣ function¼ anΣ (3⌐ ì
ááááß precisely-defineΣ se⌠ oµ inpu⌠ anΣ outpu⌠á parameters╗ ì
ááááhavinτá useΣá SYSLI┬ fo≥ somσ timσ now¼á thσ autho≥á ha≤ ì
áááánoteΣ tha⌠ hi≤ programminτ though⌠ processe≤ anΣ prograφ ì
áááádesign≤á havσ tendeΣ morσ anΣ morσ towarΣá end-inôá (top-ì
áááádowε froφ thσ objectivσ poin⌠ oµ vie≈ anΣ bottom-u≡ froφ ì
ááááthσ SYSLI┬ subroutinσ poin⌠ oµ view)¼ structureΣ design≤ ì
áááátha⌠á hσá caεá g∩ bacδ t∩ a⌠ ß late≥á datσá anΣá readil∙ ì
áááádeciphe≥ anΣ modify
áááá 4. Reduce the programming effort
áááá -- becausσá SYSLI┬ provide≤ ß numbe≥ oµá ver∙ ì
ááááinvolveΣ routine≤ whicΦ would¼ iε themselves¼ takσ quitσ ì
áááásomσá timσ t∩ code╗á fo≥ example¼á thσ DIR╞ routinσ wil∞ ì
ááááloaΣ thσ director∙ oµ ß disδ int∩ memory¼á selec⌠ ßá se⌠ ì
ááááoµá file≤á froφ tha⌠ loadeΣ director∙ a≤ specifieΣ b∙á ß ì
ááááFilσ Contro∞ Blocδ anΣ ß flaτ whicΦ indicate≤ whethe≥ t∩ ì
ááááincludσ Systeφ o≥ Non-Systeφ file≤ anΣ wha⌠ use≥ areß i≤ ì
áááát∩á bσ examined¼á pack≤ thσ loadeΣá director∙á (removinτ ì
ááááentrie≤ no⌠ selecteΣ froφ thσ memor∙ buffer)¼á alphabetì
ááááize≤á thσ director∙ entrie≤ b∙ filσ namσ anΣ typσ o≥á b∙ ì
ááááfilσá typσ anΣ name¼á anΣ return≤ ß pointe≥ t∩ thσ firs⌠ ì
ááááentr∙ anΣ ß coun⌠ oµ thσ numbe≥ oµ entrie≤ selected
Iε man∙ ways¼á SYSLI┬ bring≤ somσ oµ thσ advantage≤ oµá proì
gramminτá iεá ß High-Orde≥ Language¼á likσ ├ o≥á Pascal¼á t∩á thσ ì
assembl∙ languagσ programmer¼á whilσ allowinτ hiφ t∩ maintaiε thσ ì
smalle≥ codσ sizσ anΣ greate≥ efficienc∙ whicΦ caε bσ realizeΣ iε ì
assembl∙á languagσá programminτ anΣ simultaneousl∙ realizσ ßá reì
duceΣá life-cyclσá cos⌠ (froφ developmen⌠ t∩á fieldinτá t∩á post-ì
fieldinτá maintenancσá anΣ modification⌐ ove≥á assembl∙á languagσ ì
programminτ withou⌠ ß SYSLIB-likσ too∞ set.
How Do I Assemble with SYSLIB?
EacΦá examplσ iε Sectioε 2▒ oµ thi≤ manua∞ show≤ aε assembl∙ ì
oµ thσ samplσ program«á ╔ frequentl∙ usσ ß commanΣ file¼ whicΦ ╔ ì
cal∞ M80.SUB¼á t∩ assemblσ m∙ programs«á Thi≤ commanΣ filσ take≤ ì
onl∙ onσ parameter¼á thσ namσ oµ thσ filσ t∩ bσ assembleΣ WITHOU╘ ì
its type (MAC is assumed). Warning: The command MUST be:
SUB M80 filename
and it MUST NOT be:
SUB M80 filename.typ
Iµá i⌠á i≤ oµ thσ latte≥ form¼á thσ sourcσ codσ wil∞á bσá deleteΣ ì
durinτ thσ assembl∙ processí Yo⌡ ma∙ wisΦ t∩ removσ the
ER┴ $1.BAK
commanΣ iε thσ M80.SU┬ filσ t∩ eliminatσ thi≤ problem« ╔ onl∙ d∩ ì
this for a space savings.
My M80.SUB command file is:
; M80.SUB -- MACRO-80 Assembler and Linker
M80 =$1
SUB /A PLEASE ABORT IF ERROR(S) EXIST
ERA $1.BAK
ERA $1.COM
L80 /P:100,$1,A:SYSLIB/S,$1/N,/U,/E
ERA $1.REL
; ASSEMBLY COMPLETE
╔ ruε ZCPR▓ insteaΣ oµ thσ CP/═ 2.▓ CCP¼á anΣ ╔ aφ alway≤ oε ì
Drivσá B║á doinτá m∙á developmen⌠á work¼á whilσá m∙á editor≤á anΣ ì
assembler≤ (anΣ SYSLIB.REL⌐ arσ oε Drivσ A:«á Notσ tha⌠ thi≤á i≤ ì
reflected in M80.SUB, where L80 looks for A:SYSLIB for the scan.
How Do I Learn to Use SYSLIB Effectively?
Thi≤ is¼ oµ course¼ opinion¼ bu⌠ ╔ fee∞ tha⌠ thσ bes⌠ wa∙ t∩ ì
learn how to use SYSLIB would involve the following steps:
1«á Stud∙á thσá SYSLI┬ manua∞ iε aε overvie≈á fashion¼ ì
familiarizinτá yourselµá witΦ thσ function≤á oµá thσá subroutine≤ ì
available
2«á Stud∙ iε somσ detai∞ thσ samplσ sourcσ program≤ iε ì
Sectioε 21¼ jumpinτ bacδ t∩ thσ maiε bod∙ oµ thσ manua∞ froφ timσ ì
t∩á timσ t∩ seσ wh∙ thσ routine≤ ╔ selecteΣ iε thσ program≤á werσ ì
used in the way I used them
3« Tr∙ codinτ ß couplσ oµ thσ routine≤ iε thi≤ manual¼ ì
copying them verbatim and assembling them
4« Tr∙ makinτ u≡ ß fe≈ simplσ problem≤ oµ you≥ owε anΣ ì
use SYSLIB to code them
5«á Appl∙á SYSLI┬ t∩ ß significan⌠ prograφ yo⌡ wan⌠ t∩ ì
write
╔ aφ ß stronτ advocatσ oµ writinτ program≤ iε orde≥ t∩ learε ì
ho≈ t∩ program¼á anΣ ╔ fee∞ tha⌠ i⌠ i≤ mos⌠ importan⌠ t∩ (1⌐ gaiε ì
a≤á mucΦ familiarit∙ witΦ thσ SYSLI┬ routine≤ a≤ yo⌡ caε anΣá (2⌐ ì
t∩ writσ program≤ usinτ thesσ routines.
Who May Use SYSLIB?
SYSLI┬ i≤ hereb∙ releaseΣ t∩ thσ publiπ domain«á Anyonσ wh∩ ì
wishe≤ t∩ US┼ i⌠ ma∙ d∩ s∩ witΦ n∩ string≤ attached«á Thσ autho≥ ì
assume≤ n∩ responsibilit∙ o≥ liabilit∙ fo≥ thσ usσ oµ SYSLIB« I⌠ ì
i≤ copyrighteΣ b∙ thσ author¼á RicharΣ Conn¼á wh∩ ha≤ solσ right≤ ì
t∩á it«á SYSLI┬ anΣ it≤ associateΣ documentatioε ma∙ bσ solΣá b∙ ì
itselµá o≥á a≤ aε independen⌠ par⌠ oµ ß packagσ oµ program≤á onl∙ ì
witΦá thσ express¼á writteε consen⌠ oµ thσ author«á Thσá author¼ ì
however¼ support≤ thσ usσ oµ SYSLI┬ b∙ commercia∞ softwarσ develì
opers¼á anΣá place≤ n∩ restrictioε oε thσ salσ oµ program≤á whicΦ ì
arσá BASE─ oε SYSLI┬ anΣ usσ routine≤ containeΣ withiε SYSLI┬á t∩ ì
perforφ thei≥ majo≥ functions.
╔á hopσ yo⌡ enjo∙ usinτ SYSLI┬ anΣ finΣ i⌠ t∩ bσ a≤ usefu∞ ß ì
tool as I do.
Richard Conn