home *** CD-ROM | disk | FTP | other *** search
- 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