diff --git a/.gitignore b/.gitignore index 5ca23c6..909185b 100644 --- a/.gitignore +++ b/.gitignore @@ -143,6 +143,7 @@ software/CPM/CPM_MC_F9 software/CPM/CPM_RFS_1 software/CPM/CPM_RFS_2 software/CPM/PLM80 +software/CPM/tosort software/MZB software/CPM/320K/DSK software/CPM/320K/RAW diff --git a/software/CPM/tosort/AccountantData/dbtable.01d b/software/CPM/tosort/AccountantData/dbtable.01d deleted file mode 100644 index 7666890..0000000 Binary files a/software/CPM/tosort/AccountantData/dbtable.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/dbtable.01k b/software/CPM/tosort/AccountantData/dbtable.01k deleted file mode 100644 index ba14e8e..0000000 Binary files a/software/CPM/tosort/AccountantData/dbtable.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/dbvat.01d b/software/CPM/tosort/AccountantData/dbvat.01d deleted file mode 100644 index 133897d..0000000 Binary files a/software/CPM/tosort/AccountantData/dbvat.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/dbvat.01k b/software/CPM/tosort/AccountantData/dbvat.01k deleted file mode 100644 index 0d630a8..0000000 Binary files a/software/CPM/tosort/AccountantData/dbvat.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nlform.01d b/software/CPM/tosort/AccountantData/nlform.01d deleted file mode 100644 index b1e71dd..0000000 Binary files a/software/CPM/tosort/AccountantData/nlform.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nlform.01k b/software/CPM/tosort/AccountantData/nlform.01k deleted file mode 100644 index 0178edf..0000000 Binary files a/software/CPM/tosort/AccountantData/nlform.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nlmast.01d b/software/CPM/tosort/AccountantData/nlmast.01d deleted file mode 100644 index 7e84608..0000000 Binary files a/software/CPM/tosort/AccountantData/nlmast.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nlmast.01k b/software/CPM/tosort/AccountantData/nlmast.01k deleted file mode 100644 index ba5d6cc..0000000 Binary files a/software/CPM/tosort/AccountantData/nlmast.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nltable.01d b/software/CPM/tosort/AccountantData/nltable.01d deleted file mode 100644 index 133897d..0000000 Binary files a/software/CPM/tosort/AccountantData/nltable.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nltable.01k b/software/CPM/tosort/AccountantData/nltable.01k deleted file mode 100644 index 59fb33f..0000000 Binary files a/software/CPM/tosort/AccountantData/nltable.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nltran.01d b/software/CPM/tosort/AccountantData/nltran.01d deleted file mode 100644 index 133897d..0000000 Binary files a/software/CPM/tosort/AccountantData/nltran.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/nltran.01k b/software/CPM/tosort/AccountantData/nltran.01k deleted file mode 100644 index 59fb33f..0000000 Binary files a/software/CPM/tosort/AccountantData/nltran.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/plparam.01d b/software/CPM/tosort/AccountantData/plparam.01d deleted file mode 100644 index d83fd99..0000000 Binary files a/software/CPM/tosort/AccountantData/plparam.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/plparam.01k b/software/CPM/tosort/AccountantData/plparam.01k deleted file mode 100644 index eae6c4e..0000000 Binary files a/software/CPM/tosort/AccountantData/plparam.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/plvat.01d b/software/CPM/tosort/AccountantData/plvat.01d deleted file mode 100644 index 133897d..0000000 Binary files a/software/CPM/tosort/AccountantData/plvat.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/plvat.01k b/software/CPM/tosort/AccountantData/plvat.01k deleted file mode 100644 index 7d8cdaf..0000000 Binary files a/software/CPM/tosort/AccountantData/plvat.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/slparam.01d b/software/CPM/tosort/AccountantData/slparam.01d deleted file mode 100644 index d0c9f59..0000000 Binary files a/software/CPM/tosort/AccountantData/slparam.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/slparam.01k b/software/CPM/tosort/AccountantData/slparam.01k deleted file mode 100644 index eae6c4e..0000000 Binary files a/software/CPM/tosort/AccountantData/slparam.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/slvat.01d b/software/CPM/tosort/AccountantData/slvat.01d deleted file mode 100644 index 133897d..0000000 Binary files a/software/CPM/tosort/AccountantData/slvat.01d and /dev/null differ diff --git a/software/CPM/tosort/AccountantData/slvat.01k b/software/CPM/tosort/AccountantData/slvat.01k deleted file mode 100644 index 7d8cdaf..0000000 Binary files a/software/CPM/tosort/AccountantData/slvat.01k and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/compact.bat b/software/CPM/tosort/AccountantDoubleSided/compact.bat deleted file mode 100644 index dddf9c1..0000000 --- a/software/CPM/tosort/AccountantDoubleSided/compact.bat +++ /dev/null @@ -1,2 +0,0 @@ -MALLARD COMPACT - \ No newline at end of file diff --git a/software/CPM/tosort/AccountantDoubleSided/compact.sub b/software/CPM/tosort/AccountantDoubleSided/compact.sub deleted file mode 100644 index dddf9c1..0000000 --- a/software/CPM/tosort/AccountantDoubleSided/compact.sub +++ /dev/null @@ -1,2 +0,0 @@ -MALLARD COMPACT - \ No newline at end of file diff --git a/software/CPM/tosort/AccountantDoubleSided/compmenu.dat b/software/CPM/tosort/AccountantDoubleSided/compmenu.dat deleted file mode 100644 index 4a71999..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/compmenu.dat and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/cosubs.bas b/software/CPM/tosort/AccountantDoubleSided/cosubs.bas deleted file mode 100644 index d26ddda..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/cosubs.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/darel1.0 b/software/CPM/tosort/AccountantDoubleSided/darel1.0 deleted file mode 100644 index 00bc047..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/darel1.0 and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycash.bas b/software/CPM/tosort/AccountantDoubleSided/daycash.bas deleted file mode 100644 index b5752f6..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycash.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycash2.bas b/software/CPM/tosort/AccountantDoubleSided/daycash2.bas deleted file mode 100644 index fb6e2cc..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycash2.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycash3.bas b/software/CPM/tosort/AccountantDoubleSided/daycash3.bas deleted file mode 100644 index 8dfc8f0..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycash3.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycashp.bas b/software/CPM/tosort/AccountantDoubleSided/daycashp.bas deleted file mode 100644 index 0296bd8..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycashp.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycred.bas b/software/CPM/tosort/AccountantDoubleSided/daycred.bas deleted file mode 100644 index ba6b0b1..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycred.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycredp.bas b/software/CPM/tosort/AccountantDoubleSided/daycredp.bas deleted file mode 100644 index 662b5ca..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycredp.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycrin.bas b/software/CPM/tosort/AccountantDoubleSided/daycrin.bas deleted file mode 100644 index 74cbf06..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycrin.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycrin2.bas b/software/CPM/tosort/AccountantDoubleSided/daycrin2.bas deleted file mode 100644 index f57071f..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycrin2.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daycrin3.bas b/software/CPM/tosort/AccountantDoubleSided/daycrin3.bas deleted file mode 100644 index 17724a9..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daycrin3.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayi.bas b/software/CPM/tosort/AccountantDoubleSided/dayi.bas deleted file mode 100644 index 3e2c24f..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayi.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayicni1.bas b/software/CPM/tosort/AccountantDoubleSided/dayicni1.bas deleted file mode 100644 index cc94f69..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayicni1.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayicni2.bas b/software/CPM/tosort/AccountantDoubleSided/dayicni2.bas deleted file mode 100644 index c38e2b8..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayicni2.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayicni3.bas b/software/CPM/tosort/AccountantDoubleSided/dayicni3.bas deleted file mode 100644 index 2cddbe7..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayicni3.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daymend.bas b/software/CPM/tosort/AccountantDoubleSided/daymend.bas deleted file mode 100644 index 3c72968..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daymend.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daymisc.bas b/software/CPM/tosort/AccountantDoubleSided/daymisc.bas deleted file mode 100644 index 1aaffc4..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daymisc.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daymisc2.bas b/software/CPM/tosort/AccountantDoubleSided/daymisc2.bas deleted file mode 100644 index 06e7d3a..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daymisc2.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daymisc3.bas b/software/CPM/tosort/AccountantDoubleSided/daymisc3.bas deleted file mode 100644 index 0406943..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daymisc3.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daymisc4.bas b/software/CPM/tosort/AccountantDoubleSided/daymisc4.bas deleted file mode 100644 index 7d77dee..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daymisc4.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daymiscp.bas b/software/CPM/tosort/AccountantDoubleSided/daymiscp.bas deleted file mode 100644 index aa18f29..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daymiscp.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daynlup.bas b/software/CPM/tosort/AccountantDoubleSided/daynlup.bas deleted file mode 100644 index e572a3f..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daynlup.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/daynlup2.bas b/software/CPM/tosort/AccountantDoubleSided/daynlup2.bas deleted file mode 100644 index 59a5ab5..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/daynlup2.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayparam.bas b/software/CPM/tosort/AccountantDoubleSided/dayparam.bas deleted file mode 100644 index 6285a2f..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayparam.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayplvat.bas b/software/CPM/tosort/AccountantDoubleSided/dayplvat.bas deleted file mode 100644 index 4415b64..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayplvat.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayprt.bas b/software/CPM/tosort/AccountantDoubleSided/dayprt.bas deleted file mode 100644 index 6bab524..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayprt.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dayslvat.bas b/software/CPM/tosort/AccountantDoubleSided/dayslvat.bas deleted file mode 100644 index 886f58d..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dayslvat.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dnmenu.dat b/software/CPM/tosort/AccountantDoubleSided/dnmenu.dat deleted file mode 100644 index 30207c5..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dnmenu.dat and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dpmenu.dat b/software/CPM/tosort/AccountantDoubleSided/dpmenu.dat deleted file mode 100644 index 861b4b0..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dpmenu.dat and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/dsmenu.dat b/software/CPM/tosort/AccountantDoubleSided/dsmenu.dat deleted file mode 100644 index 3657adc..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/dsmenu.dat and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/menu.bas b/software/CPM/tosort/AccountantDoubleSided/menu.bas deleted file mode 100644 index c48b9b4..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/menu.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nlbudge.bas b/software/CPM/tosort/AccountantDoubleSided/nlbudge.bas deleted file mode 100644 index 249f382..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nlbudge.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nlenq.bas b/software/CPM/tosort/AccountantDoubleSided/nlenq.bas deleted file mode 100644 index 2cb1b00..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nlenq.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nlformat.bas b/software/CPM/tosort/AccountantDoubleSided/nlformat.bas deleted file mode 100644 index b2fab57..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nlformat.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nlformup.bas b/software/CPM/tosort/AccountantDoubleSided/nlformup.bas deleted file mode 100644 index bd18847..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nlformup.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nljnl.bas b/software/CPM/tosort/AccountantDoubleSided/nljnl.bas deleted file mode 100644 index b21d2b9..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nljnl.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nljnl2.bas b/software/CPM/tosort/AccountantDoubleSided/nljnl2.bas deleted file mode 100644 index eb5a132..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nljnl2.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nlmfup.bas b/software/CPM/tosort/AccountantDoubleSided/nlmfup.bas deleted file mode 100644 index cad5ff2..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nlmfup.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nlprint.bas b/software/CPM/tosort/AccountantDoubleSided/nlprint.bas deleted file mode 100644 index 93786f2..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nlprint.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nltb.bas b/software/CPM/tosort/AccountantDoubleSided/nltb.bas deleted file mode 100644 index 3d8b5b8..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nltb.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/nltl.bas b/software/CPM/tosort/AccountantDoubleSided/nltl.bas deleted file mode 100644 index c026f74..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/nltl.bas and /dev/null differ diff --git a/software/CPM/tosort/AccountantDoubleSided/symenu.01 b/software/CPM/tosort/AccountantDoubleSided/symenu.01 deleted file mode 100644 index 74c9d9e..0000000 Binary files a/software/CPM/tosort/AccountantDoubleSided/symenu.01 and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/$$$.sub b/software/CPM/tosort/AcornZ80Disc1/$$$.sub deleted file mode 100644 index 94e1207..0000000 --- a/software/CPM/tosort/AcornZ80Disc1/$$$.sub +++ /dev/null @@ -1,2 +0,0 @@ -&ОЭј>yћ@kH~Я&ТєAу~ejГЈUЏљEЦWЄWVUРі•s№МжJ;CM¬ѓј§Юёоa3‹љМеВыћI:с Ц;<$vо«toЖҐ-Я§цNЭу†¶jTєw‹F›HЅ -5iYr;луљЁёI1ucСфЫОЅіT#хз ;Я‘t \ No newline at end of file diff --git a/software/CPM/tosort/AcornZ80Disc1/6502-z80.bbc b/software/CPM/tosort/AcornZ80Disc1/6502-z80.bbc deleted file mode 100644 index fb9b846..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/6502-z80.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/bbcbasic.com b/software/CPM/tosort/AcornZ80Disc1/bbcbasic.com deleted file mode 100644 index fb9a4d0..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/bbcbasic.com and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/boot.bak b/software/CPM/tosort/AcornZ80Disc1/boot.bak deleted file mode 100644 index c7337a5..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/boot.bak and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/boot.sub b/software/CPM/tosort/AcornZ80Disc1/boot.sub deleted file mode 100644 index 79250c9..0000000 --- a/software/CPM/tosort/AcornZ80Disc1/boot.sub +++ /dev/null @@ -1 +0,0 @@ -d_block шЭW &3800 ЭW &3B00:ЭW &0  ЭW &0:ЭW 0 ЭW &0:ЭW 0  ЭW &0:ЭW 0 *.openin 4LD A,&40:JP &218E >\ H\ Open = \ No newline at end of file diff --git a/software/CPM/tosort/AcornZ80Disc1/ed.com b/software/CPM/tosort/AcornZ80Disc1/ed.com deleted file mode 100644 index d759975..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/ed.com and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/file4.bbc b/software/CPM/tosort/AcornZ80Disc1/file4.bbc deleted file mode 100644 index 44c4c45..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/file4.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/filehand.bbc b/software/CPM/tosort/AcornZ80Disc1/filehand.bbc deleted file mode 100644 index 65f57c2..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/filehand.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/monz80.bbc b/software/CPM/tosort/AcornZ80Disc1/monz80.bbc deleted file mode 100644 index a1d1f62..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/monz80.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/newfile.bbc b/software/CPM/tosort/AcornZ80Disc1/newfile.bbc deleted file mode 100644 index 57eff7f..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/newfile.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/pip.com b/software/CPM/tosort/AcornZ80Disc1/pip.com deleted file mode 100644 index 566371d..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/pip.com and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/readdfs.bbc b/software/CPM/tosort/AcornZ80Disc1/readdfs.bbc deleted file mode 100644 index 7597e81..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/readdfs.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/rom.bbc b/software/CPM/tosort/AcornZ80Disc1/rom.bbc deleted file mode 100644 index 2deb429..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/rom.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/submit.com b/software/CPM/tosort/AcornZ80Disc1/submit.com deleted file mode 100644 index b443199..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/submit.com and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/test.bbc b/software/CPM/tosort/AcornZ80Disc1/test.bbc deleted file mode 100644 index 564dc96..0000000 --- a/software/CPM/tosort/AcornZ80Disc1/test.bbc +++ /dev/null @@ -1 +0,0 @@ -:ЭW 0 ЪЭW &0:ЭW 0 д]н оP%=&869:[JP new_load_block:] шP%=&7BB:[Ц new_save_block:] P%=&F8E4:[LD HL,newblock:]  P%=&5: \ No newline at end of file diff --git a/software/CPM/tosort/AcornZ80Disc1/z80-mon.bbc b/software/CPM/tosort/AcornZ80Disc1/z80-mon.bbc deleted file mode 100644 index 8a5f866..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/z80-mon.bbc and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/z80-mon.dfs b/software/CPM/tosort/AcornZ80Disc1/z80-mon.dfs deleted file mode 100644 index e497a6c..0000000 Binary files a/software/CPM/tosort/AcornZ80Disc1/z80-mon.dfs and /dev/null differ diff --git a/software/CPM/tosort/AcornZ80Disc1/zcpr.doc b/software/CPM/tosort/AcornZ80Disc1/zcpr.doc deleted file mode 100644 index 65e8dd0..0000000 --- a/software/CPM/tosort/AcornZ80Disc1/zcpr.doc +++ /dev/null @@ -1,310 +0,0 @@ -A Personal Note -=============== - -Somehow, I've managed to get by for the last 14 years using just ZCPR. -But like some of you, I have fiddled with the standard ZCPR and -modified it to suit my tastes. As I added new commands or enriched old -ones, I've always remained compatible with existing programs, all the -BDOS replacements, and, most important of all, stayed within the 800H -space allocation of the original Digital Research CCP. Here are the -fruits of my labors, I hope you enjoy this CCP replacenow have options to turn on or off page breaks. Moreover, the -console check for abort has been improved. - -Two commands have been added for use in submit files - SAK and BELL. -These commands allow you to pause or ring the bell during submit file -execution. - -Before you install this version of ZCPR onto your boot disks, try it by -running it as a .com file. Just edit the few customizing options and -assemble the source. After you decide it really is better, load it -onto your boot track and make it yment as much as I -do. - - Don Kirkpatrick - 17595 S.W. Pheasant Lane - Beaverton, Oregon 97006 - - - -Introduction -============ - -This console replacement is designed to run under CP/M 2.2 or any of -the 2.2 BDOS replacements. It requires a Z80 or better. If you are -running DRI's CCP or older versions of ZCPR1, this program is a -significant improvement. If you are running ZCPR3, CP/M 3.0, CP/M -Plus, or MP/M, this will probably be a disappoiour standard. Complete instructions -are located at the end of this document. - -The complete built-in command list is: - - DIR - directory command enhanced to list optionally all user areas - REN - standard rename command - USER- move to new user number area on same drive - SAVE- save specified number of TPA pages or records in a file - TYPE- display a file on the console with optional page break pauses - LIST- print command plus optional form feed insertion - PAGE- send form feed to ntment. - -If you are familiar with ZCPR3, you will recognize many of the -enhancements here: comments on a command line, search path for the .com -file, drive/user change with simple du:, CLEVEL3 command processing, -proper SUBMIT file facility, and so on. Nothing has been removed from -DRI's CCP, only new features added. AND IT ALL STILL FITS IN THE -ORIGINAL 800H, THE SAME SPACE AS THE DIGITAL RESEARCH FIVE COMMAND -CCP. - -Many of the standard commands have been enhanced. For example, TYPE -and LIST list device - ERA - standard file erase command - ERAQ- file erase with confirmation query at each file - DFU - set default user number for .com search path - BELL- send a bell character to the console - SAK - pause until a key is struck on the console (Strike Any Key) - SCL - toggle multiple commands per line (Single Command on a Line) - GET - load a file into the TPA at any specified location - JUMP- process command tail and execute program at specified address - GO - process c type 'junk*.'. The -question mark still works as a single character wild card. - - -Command Line Processing -======================= - -The current user number is included as part of the command prompt for -all non-zero user numbers. The prompt is of the form du>, for example -A2> or B10>. If the SUPRES equate is true, the user number is -suppressed for user 0 only. - -Multiple commands are typed on a single line separated by a command -separator character. Occasionally, you need to type the separatorommand tail and execute program loaded at 100H - PEEK- display hexadecimal byte string starting with specified address - POKE- load hexadecimal byte string starting with specified address - BOOT- execute BIOS cold boot routine - - -Filename Processing -=================== - -The standard ZCPR3 du: drive/user file specification has been -implemented. Any filename can be in the du:fn.ft form. For example: - - A>era c4:junk*.* - -erases files on the C drive, user area 4 without leaving drive A -character in a command tail. The SCL command toggles the multiple -command enable. The CMDCHR equate determines the command separator -character. A ';' has been chosen as the separator character in this -distribution version. - -Comments are allowed on a command line. When the comment separator -character is encountered as the first character of a command, the -remainder of the line is ignored. The COMCHR equate determines the -comment separator character. A ';' has been chosen as the separator -cha user -0. When a user number is found in a filename, that user number is -placed in S1 of the default FCB. Bit 7 of S1 is set to inform the -program using the FCB a user number was found. - -The * in an ambiguous file name has been improved. Now a trailing * -causes the remainder of the ambiguous name to be filled with '?', not -just the fn field. For example: - - A>era c4:junk* - -is the same as the example above. Previously, junk* was defined as -'junk????. '. If you need the ft field blank,racter in this distribution version. Here is an example containing -comments and multiple commands on a single line: - - A>get 100 junk;peek 100;;this is a comment. - A>;this is also a comment. - -There exists a built-in search path for transient commands. First, the -current drive/user is searched. Next, the current drive/default user -is searched. Last, drive A/default user is searched. The DEFUSR -equate determines the default user number, currently set to user 0 in -this distribution version. PR is entered at CPRLOC+3 jump, default command -processing is suppressed. Either way, register C must contain a valid -drive/user, just like the original CCP. - - -Submit File Processing -====================== - -A basic design choice had to be made in the design of ZCPR concerning -the execution of submit files. The original CCP had a problem. It -ALWAYS looked for the $$$.SUB file on drive A and the submit program -would place it on the current default drive. When the you were logged -onto drive B anThe default user is temporarily changed -with the DFU command. If a drive is specified in the transient -command, the current and default user areas on the specified drive are -searched. If a user number is specified, that user area on the current -and default drive are searched. If both the drive and user number are -specified, no search is performed. The same drive/user area is never -searched twice. - -Transient commands are always "called." If a program terminates via a -return rather than a warm bd you issued a submit command, the $$$.SUB was placed on -drive B and not executed. - -After much debate it was decided to have ZCPR perform the same type of -function as CCP (look for the $$$.SUB file on drive A), but the problem -with SUBMIT.COM still exists. Hence, RGF designed SuperSUB and RLC -took his SuperSUB and designed SUB from it; both programs are set up to -allow the selection at assembly time of creating the $$$.SUB on the -default drive or on drive A. If you don't have one of these newer -soot, subsequent multiple commands on the -command line are executed. Any program exiting by a warm boot reloads -ZCPR and the subsequent commands lost. - -A default command can be placed in the command buffer and control -passed to ZCPR for processing. The only thing required, besides -placing the command in the buffer and jumping to CPRLOC, is to -initialize the command character counter at the start of the buffer. -The procedure is compatible with the original DRI CCP default command -processing. If ZCubmit programs, a procedure for patching the standard SUBMIT.COM has -been included at the end. - -The fixed drive choice permits a submit file to contain a series of -commands exactly as they would be entered from a CP/M console. This -permits things like: - - A>dir - A>b: - B>dir - -to be executed, even though the currently default drive is changed -during execution. If the $$$.SUB file were present on the default -drive, the above series of commands would not work. ZCPR would be -looking for $ If there is a conflict between an internal ZCPR command -and a transient program of the same name, the internal command is -executed. Type the command with the du: included if the external -transient command is the one desired. Here is a complete alphabetized -list of all the resident commands with their syntax: - -============================================================================= - -Command: BELL - -Function: To ring terminal bell. - -Forms: BELL - -Options: None. - -Uses: This comma$$.SUB on the default drive, and switching default drives -without moving the $$$.SUB file would cause processing to abort. Note -that the same problem occurs if the user number of the $$$.SUB file is -not predefined. ZCPR assumes that the $$$.SUB file is located on user 0 -of drive A. - -The trick of using the $ flag returned by the BDOS disk reset is used -to speed the search for a $*.* file on drive A. This trick will not -work if the $$$.SUB file were located on another drive. - -The '>' prompt charactnd is designed to be placed in a submit file to - ring the bell to indicate significant checkpoints. - -============================================================================= - -Command: BOOT - -Function: To execute BIOS cold boot routine. - -Forms: BOOT - -Options: REBOOT equate controls the inclusion/exclusion of this command. - -Uses: Reboots the system without pushing the reset button. The - cold boot entry point in the BIOS must be supported for this - commaner is replaced by a special character while a -submit file is in execution. The SPRMPT equate defines this special -character, currently set to '$' in this distribution version. - - -Command Syntax -============== - -Multiple commands can be placed on one line. If the comment character -is encountered where a command should start, the rest of the line is -ignored. Any command can be renamed by editing the command table. -Command names can be up to eight characters long and are terminated by -bit 7 high. d to work. - -============================================================================= - -Command: DFU - -Function: To set the Default User Number for transient commands. - -Forms: DFU - -Options: DEFUSR equate defines the default user choice until this - command is entered. - - NUMBASE equate defines the character that specifies a - hexadecimal number. The distribution version is set to 'H'. - -Uses: The default user area is searched after a transient comm - - FENCE equate specifies the character separator between the - directory columns. - - USRDLM equate specifies the character between the user number - and the filename. - - USRFLG, SYSFLG, and SOFLG equates specify the command line - tail character that control the display of system and - non-system files. - -Uses: Displays a directory listing of files in specific drive/user - area. - -=============================================and - cannot be found in the current user area. If the transient - command still has not been found, the default user on the - default drive is searched last. The new default user number - is in decimal, but hexadecimal numbers are entered by - appending an 'H'. The next warm boot will restore the - original default user number. - -============================================================================= - -Command: DIR - -Function: To display a directory listing of the files on a drive.================================ - -Command: ERA - -Function: To erase files. - -Forms: ERA - -Options: None. - -Uses: Deletes files. Names of erased files are displayed. - -============================================================================= - -Command: ERAQ - -Function: To erase files with individual query. - -Forms: ERAQ - ? y File erased - ? File not erased - -Options: None. - -Uses: Deletes a subset of a set of ambi - -Forms: DIR Display the DIR files - DIR S Display the SYS files - DIR B Display both DIR and SYS files - DIR A Display both DIR and SYS files for all user areas - -Options: TWOCOL equate controls the number of columns in the display. - Forty-column terminals are limited to two-column displays. - - WIDE equate controls the spacing between the columns and - change the horizontal width of a directory display.Acorn CPCPMDISC¤/M  0ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее \ No newline at end of file diff --git a/software/CPM/tosort/AcornZ80Disc1/zcpr.mac b/software/CPM/tosort/AcornZ80Disc1/zcpr.mac deleted file mode 100644 index e6c8cb0..0000000 --- a/software/CPM/tosort/AcornZ80Disc1/zcpr.mac +++ /dev/null @@ -1,1987 +0,0 @@ - TITLE ZCPR Console Command Processor - Version D&J - SUBTTL Last Modified: 5 March 1994 -; -; CP/M Z80 Command Processor Replacement (CPR) Version 1.0 -; CCPZ CREATED AND CUSTOMIZED FOR ARIES-II BY RLC -; FURTHER MODIFIED BY RGF AS V2.0 -; FURTHER MODIFIED BY RLC AS V2.1 -; FURTHER MODIFIED BY KBP AS V2.2 -; FURTHER MODIFIED BY RLC AS V2.4 (V2.3 skipped) -; FURTHER MODIFIED BY RLC AS V2.5 -; FURTHER MODIFIED BY RLC AS V2.6 -; FURTHER MODIFIED BY SBB AS V2.7 -; FURTHER MODIFIED BY RLC AS V2.8 -; FURTHER MO -; -; DCK - Don Kirkpatrick -; -; Further modified for better polling during LIST/TYPE, 16 July 1987. -; -; Further modified to include boot command and to permit multiple -; commands per line. Fixed bug in jump. Modified type so character -; is not echoed, 4 July 1988. -; -; Modified to add PAGE command 31 December 1989. -; -; Added BELL and SAK (Strike Any Key) command. -; -; Added ZCPR3 style drive/user number to all FCB parsing. For Example: -; A>c4: Changes to drive C/user 4 -; A>c4: Runs found on drive C/user 4 -; A>dir c4: Gives directory of drive C/user 4 -; A>ren =c4: -; Renames file found on drive C/user 4 -; Both the drive and user number are optional; 15: is a valid designation. -; S1 in the FCB is used to store the user number. If S1 contains a valid -; user number, bit 7 will be set. If no user number is specified, S1 will -; contain 0. -; -; Added POKE and changed SCL to a toggle, 12 August 1992. -; -; Added PEEK 30 August 1993. -; -;******** Structur this project consists of the following: -; RLC - Richard Conn -; RGF - Ron Fowler -; KBP - Keith Peterson -; FJW - Frank Wancho -; The following individual also provided a contribution: -; SBB - Steve Bogolub -; -; (Note by BB: SBB's and R Fisher's changes came too late in the -; history of CCPZ to be included in the first release of ZCPR) -; -; Extensive modifications to add ERAQ, DIR for all usrnum, -; LIST x.x P, and fix TYPE when FF encountered was done by Don -; Kirkpatrick, 20 September 1986. e Notes ******** -; -; This CPR is divided into a number of major sections. The following -; is an outline of these sections and the names of the major routines -; located therein. -; -; Section Function/Routines -; ------- ----------------- -; -; -- Opening Comments, Equates, and Macro Definitions -; -; 0 JUMP Table into CPR -; -; 1 Buffers -; -; 2 CPR Starting Modules -; CPR1 CPR RESTRT -; -; 3 Utilities -; CRLF PRINTC PRINT PRINTS BELL -; CONOUT BREAK CHKETX ABORT READF -; READT - TRUE to build at intermediate address to debug via debugger. -; -; COMLD - TRUE to test and execute as a .com file. -; -; REL - TRUE if integration is to be done via MOVCPM. -; -; BASE - Base Address of user's CP/M system (normally 0 for DR version). -; This equate eases modification by non-standard CP/M (eg. H89). -; -; P2DOS - Address of BDOS/P2DOS. -; -TEST EQU FALSE ;SET TO LOAD/RUN AT 8000H FOR DEBUG -COMLD EQU FALSE ;SET TO LOAD AND EXECUTE AS A .COM FILE -REL EQU FALSE ;SET T WRITE DEFDMA DMASET SEARF -; SEARDE SEARN OPENF OPEN CLOSE -; CREATE BDOSFN SUBKIL DELETE TLOGIN -; DLOGIN LOGIN NEWUSR RSTUSR SETUSR -; BDOSEA BDOSJP BDOSBC BDOSDE -; -; 4 CPR Utilities -; PROMPT REDBUF CNVBUF UCASE SDELM -; ADVAN SBLANK ADDAH NUMBER A2NUM -; HEXNUM USRNUM ERROR DIRPTR ULOGIN -; SCANER SCANT SCANF CMDSER SETUDB -; -; 5 CPR-Resident Commands and Functions -; 5A DIR DIRPR PRFN -; 5B ERA -; 5C ERAQ PRNNF -; 5D SAK REPLY -; 5E BELL -; 5F O TRUE FOR MOVCPM INTEGRATION - ;LEAVE ALL FALSE FOR SYSGEN IMAGE -; -BASE EQU 0 ;BASE OF CP/M SYSTEM -P2DOS EQU 0E400H ;BASE OF BDOS/P2DOS -ZCPRSZ EQU 00800H ;SIZE OF ZCPR -P2DOSSZ EQU 00E00H ;SIZE OF P2DOS -BIOS EQU P2DOS+P2DOSSZ ;BASE OF BIOS -CPRLOC DEFL P2DOS-ZCPRSZ ;STANDARD EXECUTION ADDRESS -; - IF REL -CPRLOC DEFL 0 ;MOVCPM IMAGE - ENDIF -; - IF TEST -CPRLOC DEFL 8000H - ELSE -BOOT EQU BIOS ;BIOS COLD BOOT ENTRY -LISTST EQU BIOS+002DH ;ENTRY POINT FOR LIST STATUS - ENDIF -; -; The foll LIST -; 5G TYPE PAGER -; 5H EJECT -; 5I SAVE -; 5J REN -; 5K USER SUSER -; 5L DFU -; 5M SCL -; 5N PEEK -; 5O POKE -; 5P JUMP -; 5Q COM -; 5R GO CLLPRG ERRLOG ERRJMP -; 5S GET MEMLD PRNLE -; BIOS BOOT -; -; -FALSE EQU 0 -TRUE EQU NOT FALSE -; -; -; CUSTOMIZATION EQUATES -; -; The following equates may be used to customize this CPR for the user's -; system and integration technique. The following constants are provided: -; -; TESowing is presented as an option, but is not normally user-customize- -; able. A basic design choice had to be made in the design of ZCPR concerning -; the execution of SUBMIT files. The original CCP had a problem in this sense -; in that it ALWAYS looked for the SUBMIT file from drive A: and the SUBMIT -; program itself (SUBMIT.COM) would place the $$$.SUB file on the currently -; default drive. When the user was logged into B: and he issued a SUBMIT -; command, the $$$.SUB was placed on B: and did not execspecific drive, and A: is the choice for said drive. -; With this facility engaged as such, Indirect Command Files like: -; -; DIR -; B: -; DIR -; -; can be executed, even though the currently default drive is changed -; during execution. If the $$$.SUB file was present on the currently -; default drive, the above series of commands would not work since the -; ZCPR would be looking for $$$.SUB on the default drive, and switching -; default drives without moving the $$$.SUB file as well would cause -; proute. The CPR looked -; for $$$.SUB on A: and never found it. -; -; After much debate it was decided to have ZCPR perform the same type of -; function as CCP (look for the $$$.SUB file on A:), but the problem with -; SUBMIT.COM still exists. Hence, RGF designed SuperSUB and RLC took his -; SuperSUB and designed SUB from it; both programs are set up to allow the -; selection at assembly time of creating the $$$.SUB on the default drive -; or on drive A:. -; -; A final definition of the Indirect Command Filecessing to abort. -; -; Note that the same problem can occur if the user number of the -; $$$.SUB file is not predefined. It is assumed that the $$$.SUB file -; is located on user 0 of the specified drive. -; -; The trick of using the $ flag returned by DISK RESET is used to -; to speed the search for a $*.* file on drive A. This trick will not -; work if the $$$.SUB file is located on another drive. -; -; -; Under the ZCPR, three command levels exist: -; -; (1) that command issued by the user from his c ($$$.SUB or SUBMIT -; File) is presented as follows: -; -; "An Indirect Command File is one which contains -; a series of commands exactly as they would be -; entered from a CP/M Console. The SUBMIT Command -; (or SUB Command) reads this file and transforms -; it for processing by the ZCPR (the $$$.SUB File). -; ZCPR will then execute the commands indicated -; EXACTLY as if they were typed at the Console." -; -; Hence, to permit this to happen, the $$$.SUB file must always -; be present on a onsole at the '>' prompt -; (2) that command issued by a $$$.SUB file at the '$' prompt -; (3) that command issued by a user program by placing the command into -; CIBUFF and setting the character count in CBUFF -; -; To use CIBUFF, the user program stores the command line and character -; count; ZCPR will initialize the pointers properly, store the ending zero, -; and capitalize the command line for processing. Once the command line is -; properly stored, the user executes the command line by reenteriOMPT INDICATING SUBMIT COMMAND -COMCHR EQU ';' ;BEGIN COMMENT CHARACTER -CMDCHR EQU ';' ;BEGIN NEXT COMMAND CHARACTER -NUMBASE EQU 'H' ;CHARACTER USED TO SPECIFY HEXIDECIMAL BASE -RECFLG EQU 'R' ;CHARACTER FOR SAVE COMMAND TO SAVE RECORDS -SUPRES EQU TRUE ;TRUE TO SUPPRESS USER NUMBER FOR USER 0 -MULTPL EQU TRUE ;TRUE TO ALLOW MULTIPLE COMMANDS ON ONE LINE -REBOOT EQU TRUE ;TRUE TO INCLUDE BOOT COMMAND -; - IF TEST -CPRMPT EQU '<' ;CPR PROMPT INDICATING TEST MODE - ELSE -CPRMPT EQU '>' ;CPR PROMPTng ZCPR -; through CPRLOC [NOTE: The C register MUST contain a valid User/Disk Flag -; (see location 4) at this time.] -; -; -; Directory customization equates -; -TWOCOL EQU FALSE ;TRUE FOR TWO-COLUMN DIRECTORY DISPLAY -WIDE EQU TRUE ;TRUE IF WIDE DIRECTORY DISPLAY -FENCE EQU '|' ;CHARACTER BETWEEN FILES -USRDLM EQU ':' ;CHARACTER BETWEEN USER NUMBER AND FILE -USRFLG EQU 'A' ;LIST $SYS AND $DIR FOR ALL USER NUMBERS -SYSFLG EQU 'B' ;LIST $SYS AND $DIR -SOFLG EQU 'S' ;LIST $SYS ONLY -; -; List and Typ INDICATING USER COMMAND - ENDIF -; -; END OF CUSTOMIZATION SECTION -; -ETX EQU 03H -BELL EQU 07H -BS EQU 08H -TAB EQU 09H -LF EQU 0AH -FF EQU 0CH -CR EQU 0DH -; -WBOOT EQU BASE+0000H ;CP/M WARM BOOT ADDRESS -UDFLAG EQU BASE+0004H ;USER NUMBER IN HIGH NIBBLE, DISK IN LOW -BDOS EQU BASE+0005H ;BDOS FUNCTION CALL ENTRY POINT -TFCB EQU BASE+005CH ;DEFAULT FCB BUFFER -TBUFF EQU BASE+0080H ;DEFAULT DISK I/O BUFFER -TPA EQU BASE+0100H ;BASE OF TPA -; -; -;**** Section 0 **** -; - .Z80 - ASEG - ORG 100H -; -; LOAe command customization equates -; -NLINES EQU 20 ;NUMBER OF LINES ON CRT PAGE -NLINEP EQU 60 ;NUMBER OF LINES ON LIST DEVICE -FFKILL EQU TRUE ;TRUE SUPPRESSES FF UNTIL FIRST CHARACTER -PGDFLG EQU 'P' ;TYPE AND LIST COMMAND DEFAULT TOGGLE -NOSTAT EQU FALSE ;SET TO TRUE IF BIOS LISTST NOT IMPLEMENTED -; -; Other customization equates -; -BUFLEN EQU 80 ;SIZE OF COMMAND INPUT BUFFER -MAXUSR EQU 15 ;MAXIMUM USER NUMBER ACCESSIBLE -DEFUSR EQU 0 ;DEFAULT USER NUMBER FOR COM FILES -SPRMPT EQU '$' ;CPR PRDER FOR TEST PURPOSES -; ALLOWS ONE TO EXECUTE ZCPR AS A .COM FILE -; - IF COMLD OR TEST - LD HL,BGNXFR - LD DE,CPRLOC - LD BC,ENDLD-CPRLOC - LDIR - LD BC,(UDFLAG) - JP CPRLOC -BGNXFR EQU $ - ENDIF -; - .PHASE CPRLOC -; -; ENTRY POINTS INTO ZCPR -; -; If the ZCPR is entered at location CPRLOC (at the JUMP to CPR), then -; the default command in CIBUFF will be processed. If the ZCPR is entered -; at location CPRLOC+3 (at the JUMP to CPR1), then the default command in -; CIBUFF will NOT be processed. -;PUT COMMAND LINE AND DEFAULT COMMAND -; -; The command line to be executed is stored here. This command line -; is generated in one of three ways: -; -; (1) by the user entering it through the BDOS READLN function at -; the du> prompt [user input from keyboard]. -; (2) by the SUBMIT File Facility placing it there from a $$$.SUB -; file. -; (3) by an external program or user placing the required command -; into this buffer. -; -; In all cases, the command line is placed into the buffer starti -; NOTE: Entry into ZCPR in this way is permitted under ZCPR Version 4.0, -; but in order for this to work, CIBUFF and CBUFF MUST be initialized properly -; AND the C register MUST contain a valid User/Disk Flag (see Location 4: the -; most significant nibble contains the User Number and the least significant -; nibble contains the Disk Number.) -; -; Some user programs (such as SYNONYM3) attempt to use the default -; command facility. Under the original CPR, it was necessary to initialize -; a pointng at -; CIBUFF. This line contains the last character but NOT the Carriage -; Return, and the count is of all characters in the command line up to and -; including the last character. This count is placed into location CBUFF -; (immediately before the command line at CIBUFF.) If ZCPR is entered via -; CPRLOC, the command line is then parsed, interpreted, and the indicated -; command is executed. ZCPR places the terminating zero after the command -; and CIBPTR is properly initialized. -; -; WARNING: The cer located at the end of the command buffer to point to the first -; byte in the command buffer. Under Version 4.x of ZCPR, this is no longer -; the case. This pointer, CIBPTR (Command Input Buffer PoinTeR), has been -; moved and the former location is now reserved for the stack. ZCPR -; Version 4.x automatically initializes CIBPTR in all cases. -; -ENTRY: - JP CPR ; Process potential default command - JP CPR1 ; Do NOT process potential default command -; -;**** Section 1 **** -; -; BUFFERS ET AL -; -; INommand line must NOT exceed BUFLEN characters in length. -; For user programs which load this command, the value of BUFLEN can be -; obtained by examining the byte at CPRLOC+6. -; -; It is now possible to place multiple commands on one line. Each command -; is separated from its neighbor by a ";". This feature only works for ZCPR -; commands and programs that return to ZCPR via a RET instruction. Any -; warm boot reloads ZCPR and destroys the contents of the command buffer. -; The multiple command feature mAP -FCBCR: DEFS 1 ;CURRENT RECORD NUMBER -; -; Type and List Variables -; -CHRCNT: DEFS 1 ;CHARACTER COUNT FOR TYPE AND LIST -LNCNT: DEFS 1 ;LINE COUNT FOR TYPE AND LIST -TYPLST: DEFS 1 ;FLAG FOR TYPE OR LIST -TABCNT: DEFS 1 ;TAB COUNT FOR TYPE AND LIST -SYSTST: DEFB 0 ;LIST SYSTEM FILES IN DIRECTORY FLAG -; -; General Variables -; -CIBPTR: DEFW CIBUFF ;POINTER TO COMMAND INPUT BUFFER -CIPTR: DEFW CIBUFF ;POINTER TO CURRENT CMD FOR ERROR REPORTING -TMPUSR: DEFB 0 ;TEMPORARY USER NUMBER -TDRIVE: DEFay be turned off with the SCL command. -; -MBUFF: DEFB BUFLEN ;MAXIMUM BUFFER LENGTH -CBUFF: DEFB 0 ;NUMBER OF CHARACTERS IN COMMAND LINE -CIBUFF: DEFB ' ' ;DEFAULT (COLD BOOT) COMMAND - DEFB 0 ;COMMAND STRING TERMINATOR - DEFB ' ZCPR-D&J of 5 March 1994 ' - DEFB 0 ;TERMINATOR FOR DUMP IDENTIFICATION - DEFS BUFLEN-($-CIBUFF)+1 - DEFW 0 ;SENTINEL FOR STACK END - DEFS 24 ;STACK AREA -STACK EQU $ ;TOP OF STACK -; -; SUBMIT FILE CONTROL BLOCK -; -SUBDN: DEFB 1 ;DISK DRIVE (A: CONTAINS $$$.B 0 ;DEFAULT DRIVE -DFUSR: DEFB DEFUSR ;DEFAULT USER -LDADR: DEFW TPA ;MEMORY LOAD ADDRESS -; -; CPR BUILT-IN COMMAND TABLE -; EACH ENTRY IS COMPOSED OF THE BIT 7 TERMINATED COMMAND AND 2-BYTE ADDRESS -; -CMDTBL: - DC 'DIR' - DEFW DIR - DC 'LIST' - DEFW LIST - DC 'TYPE' - DEFW TYPE - DC 'USER' - DEFW USER - DC 'DFU' - DEFW DFU - DC 'PAGE' - DEFW EJECT - DC 'BELL' - DEFW RING - DC 'SAK' - DEFW SAK - DC 'GO' - DEFW GO - DC 'ERA' - DEFW ERA - DC 'ERAQ' - DEFW ERAQ - DC 'SAVE' - DEFW SAVE - DC 'REN' - DEFWSUB) -SUBFN: DEFB '$$$ ' ;FILE NAME -SUBFT: DEFB 'SUB' ;FILE TYPE -SUBEX: DEFB 0 ;EXTENT NUMBER -SUBS1 EQU SUBDN+13 ;S1 -SUBS2 EQU SUBDN+14 ;S2 -SUBRC EQU SUBDN+15 ;RECORD COUNT -SUBDM EQU SUBDN+16 ;DISK GROUP MAP -SUBCR EQU SUBDN+32 ;CURRENT RECORD NUMBER -; -; COMMAND FILE CONTROL BLOCK -; -FCBDN: DEFS 1 ;DISK DRIVE -FCBFN: DEFS 8 ;FILE NAME -FCBFT: DEFS 3 ;FILE TYPE -FCBEX: DEFS 1 ;EXTENT NUMBER -FCBS1: DEFS 1 ;S1 -FCBS2: DEFS 1 ;S2 -FCBRC: DEFS 1 ;RECORD COUNT -FCBDM: DEFS 16 ;DISK GROUP M REN - DC 'GET' - DEFW GET - DC 'JUMP' - DEFW JUMP - DC 'PEEK' - DEFW PEEK - DC 'POKE' - DEFW POKE -NCMNDS DEFL 17 ;NUMBER OF COMMANDS -; - IF MULTPL - DC 'SCL' - DEFW SINGLE -NCMNDS DEFL NCMNDS+1 - ENDIF -; - IF REBOOT - DC 'BOOT' - DEFW BOOT -NCMNDS DEFL NCMNDS+1 - ENDIF -; -; -;**** Section 2 **** -; CPR STARTING POINTS -; -; START CPR AND DON'T PROCESS DEFAULT COMMAND STORED -; -CPR1: - XOR A ;SET NO DEFAULT COMMAND - LD (CBUFF),A -; -; START CPR AND POSSIBLY PROCESS DEFAULT COMMAND -; -CPR: - LD SP, -; - CALL ADVAN ;GET ANY CHARACTER - JR Z,RESTRT ;NONE, END OF LINE - LD (CIPTR),DE ;UPDATE START OF LINE IN CASE ERROR - INC DE ;NOT END OF LINE, MUST BE DELIMITER - LD (CIBPTR),DE ;SAVE POINTER -; - IF MULTPL - LD HL,NEWCMD ;COMMAND? - CP (HL) -RS4: - JP NZ,ERROR ;NO - CALL ADVAN ;STEP OVER DELIMITER - JR RS3 - ELSE -RS4: - JP ERROR - ENDIF -; -; -;**** Section 3 **** -; I/O UTILITIES -; -; OUTPUT -; -CRLF: - CALL PRINT ;PRINT STRING - DEFB CR,LF+80H - RET -; -; PRINT STRING POINTED TO BY RET STACK ;MAKE SURE WE HAVE A VALID STACK - LD A,C ;C=USER/DISK NUMBER (SEE LOC 4) - RRA ;EXTRACT USER NUMBER - RRA - RRA - RRA - AND 0FH - LD (TMPUSR),A ;SET USER NUMBER - LD A,C ;GET DISK NUMBER (SEE LOC 4) - AND 0FH ;EXTRACT DEFAULT DISK DRIVE - LD (TDRIVE),A ;SAVE DEFAULT DRIVE - LD C,0DH ;RESET DISK SYSTEM - CALL BDOS - LD (SUBFLG),A ;SAVE SUBMIT FLAG CLUE - DEFB 0F6H ;SET NZ FLAG (OR A,n) -; -; PROMPT USER AND PROCESS INPUT COMMAND -; -RESTRT: - XOR A ;SET ZERO FLAG - LD SP,STACK ;RESET STACK ADR; START WITH -; -PRINTC: - CALL CRLF ;NEW LINE -; -; PRINT STRING POINTED TO BY RET ADR -; -PRINT: - EX (SP),HL ;GET POINTER TO STRING - CALL PRINTS - EX (SP),HL ;RESTORE HL AND RETURN ADDRESS - RET -; -; PRINT STRING POINTED TO BY HL -; -PRINT1: - CALL CONOUT ;PRINT CHARACTER -PRINTS: - LD A,(HL) ;GET NEXT BYTE - INC HL ;POINT TO NEXT BYTE - AND A ;TEST FOR 0 OR BIT 7 SET - RET Z ;DONE - JP P,PRINT1 ;NOT LAST CHARACTER -; -; OUTPUT CHARACTER IN A REG -; -CONOUT: - PUSH BC - PUSH DE - LD C -; -; PROCESS INPUT LINE -; - CALL REDBUF ;CAPITALIZE, NULL TERMINATE, SKIP SPACES -RS3: - CP COMCHR ;COMMENT? - JR Z,RESTRT ;YES, SKIP REST OF LINE - CALL SCANER ;PARSE COMMAND NAME FROM COMMAND LINE - JR NZ,RS4 ;ERROR IF NAME CONTAINS A "?" - CALL DEFDMA ;SET TBUFF TO DMA ADDRESS - CALL DLOGIN ;ASSURE PROPER DRIVE - CALL RSTUSR ;ASSURE PROPER USER NUMBER - CALL SETUDB ;SET UD BYTE TO MATCH USER/DRIVE - CALL CMDSER ;SCAN FOR CPR-RESIDENT COMMAND -; -; ENTRY POINT FOR CONTINUED SCAN OF COMMAND LINE,02H - RES 7,A ;STRIP MSB IN CASE SET FOR EOS - LD E,A - JR BDOSDE -; -; GET CHARACTER FROM CONSOLE AND CHECK FOR ^C -; -BREAK: - PUSH BC - LD C,0BH ;CONSOLE STATUS CHECK - CALL BDOSJP - LD C,01H ;GET CHARACTER FROM CON: WITH ECHO - CALL NZ,BDOSJP ;GET CHARACTER - POP BC - RET Z ;NO CHARACTER -CHKETX: - CP ETX ;^C? - RET NZ ;NO -ABORT: - CALL SUBKIL ;KILL ANY SUBMIT - JR RESTRT ;AND RESTART -; -; BDOS FUNCTIONS -; -READF: - LD DE,FCBDN ;FALL THRU TO READ -READ: - LD C,14H - DEFB 3AH ;SKIP NEXT TWODOSEA ;SAVE SOME CODE SPACE -NEWUSR: - LD (TMPUSR),A ;SET NEW USER NUMBER -RSTUSR: - LD A,(TMPUSR) ;RESET TEMPORARY USER -SETUSR: - LD C,20H ;GET/SET USER NUMBER (GET IF E=FFH) -BDOSEA: - LD E,A ;STUFF PARAMETER INTO REG E -BDOSJP: - PUSH BC -BDOSBC: - PUSH DE ; zcpr does not use any BDOS calls that -BDOSDE: - PUSH HL ; return a value in HL. Those HL calls - CALL BDOS ; are: - POP HL ; get active drive - #24 - POP DE ; get allocation vector - #27 - POP BC ; get read-only map - #29 - AND A ; BYTES -WRITE: - LD C,15H ;FALL THRU TO BDOS CALL - JR BDOSJP -DEFDMA: - LD DE,TBUFF ;TBUFF = DEFAULT ADDRESS -DMASET: - LD C,1AH ;SET DMA ADDRESS - JR BDOSJP -SEARF: - LD DE,FCBDN ;SPECIFY FCB -SEARDE: - LD C,11H ;SEARCH FOR FILE - DEFB 3AH ;SKIP NEXT TWO BYTES -SEARN: - LD C,12H ;SEARN IGNORES DE AND USES THE PREVIOUS - JR BDOSFN ;VALUE FROM THE LAST BDOS CALL -OPENF: - XOR A - LD (FCBCR),A - LD DE,FCBDN ;FALL THRU TO OPEN -OPEN: - LD C,0FH ;OPEN FILE - DEFB 3AH ;SKIP NEXT TWO BYTES -CLOSE: - LD get disk parameters - #31 - RET -; -; -;**** Section 4 **** -; CPR UTILITIES -; -; PRINT PROMPT (DU>) -; -PROMPT: - CALL CRLF ;PRINT PROMPT - LD A,(TDRIVE) ;CURRENT DRIVE IS PART OF PROMPT - ADD A,'A' ;CONVERT TO ASCII A-P - CALL CONOUT - LD A,(TMPUSR) ;GET USER NUMBER -; - IF SUPRES ;IF SUPPRESSING USER # REPORT FOR USER 0 - AND A - JR Z,PRPT1 ;ZERO, SUPRESS - ENDIF -; -PRUSRN: - ADD A,0 ;CONVERT HEX TO BCD - DAA - PUSH AF ;SAVE UNITS DIGIT - AND 0F0H - LD A,'1' - CALL NZ,CONOUT ;PRINT IF OVER 10 C,10H ;CLOSE FILE - DEFB 3AH ;SKIP NEXT TWO BYTES -CREATE: - LD C,16H ;CREATE FILE -BDOSFN: - CALL BDOSJP - INC A ;SET ERROR RETURN FLAG - RET -SUBKIL: - LD HL,SUBFLG ;ABORT SUBMIT FILE - LD A,(HL) ;SUB FILE IN EXECUTION? - AND A - RET Z ;NO - LD (HL),0 ;KILL SUB FILE EXECUTION FLAG - LD DE,SUBDN ;DELETE $$$.SUB -DELETE: - LD C,13H ;DELETE FILE - JR BDOSJP ;SAVE MORE SPACE -TLOGIN: - LD (TDRIVE),A ;SAVE NEW DEFAULT DRIVE -DLOGIN: - LD A,(TDRIVE) ;LOG IN DEFAULT DRIVE - LD C,0EH ;SELECT DISK - JR B - POP AF - OR '0' ;OUTPUT 1'S DIGIT (CONVERT TO ASCII) - CALL CONOUT -PRPT1: - JP PRINT ;GO PRINT PROMPT CHARACTER -; -; INPUT NEXT COMMAND TO CPR -; -; This routine determines if a SUBMIT file is being processed -; and extracts the command line from it if so or from the user's console. -; This routine also invokes the DU> prompt. -; -REDBUF: - JR NZ,CNVBUF ;PROCESS DEFAULT COMMAND IF ANY -RD0: - CALL DEFDMA ;SELECT TBUFF FOR READ - XOR A ;SELECT USER 0 FOR SUBMIT SEARCH - CALL SETUSR - LD DE,SUBDN ;OPEASE $$$.SUB -RB2: - CALL PROMPT ;PRINT PROMPT - DEFB CPRMPT+80H - LD C,0AH ;READ COMMAND LINE FROM USER - LD DE,MBUFF - CALL BDOS -; -; CAPITALIZE STRING (ENDING IN 0) IN CBUFF AND SET POINTER FOR PARSING -; -CNVBUF: - LD HL,CBUFF ;POINT TO USER'S COMMAND BUFFER - LD A,(HL) ;ANY CHARACTERS IN BUFFER? - AND A - JR Z,RD0 ;NO, FILL BUFFER - INC HL - LD (CIBPTR),HL ;INITIALIZE COMMAND LINE POINTER - LD B,A ;INITIALIZE CHARACTER COUNTER -CB1: - LD A,(HL) ;CAPITALIZE COMMAND CHARACTER - CALL UCASE - LD (HLN $$$.SUB -SUBFLG EQU $+1 ;IN LINE SUBMIT FLAG - LD A,0 ;SUBMIT IN PROGRESS? - AND A - CALL NZ,OPEN ;CALL OPEN IF SUBMIT IN PROGRESS - JR Z,RB2 ;NONE FOUND SO GET COMMAND LINE - LD A,(SUBRC) ;GET VALUE OF LAST RECORD IN FILE - DEC A ;POINT TO NEXT TO LAST RECORD - LD (SUBCR),A ;SAVE NEW VALUE OF LAST RECORD IN $$$.SUB - CALL READ ;DE=SUBDN - JR NZ,RB1 ;ABORT $$$.SUB IF ERROR IN READING LAST REC - LD HL,SUBS2 ;POINT TO S2 OF $$$.SUB FCB - LD (HL),A ;SET S2 TO ZERO - INC HL ;POINT TO RECORD COUNT - D),A - INC HL ;POINT TO NEXT CHARACTER - DJNZ CB1 ;CONTINUE TO END OF COMMAND LINE - LD (HL),B ;STORE ENDING -; -; ADVANCE INPUT POINTER TO FIRST NON-BLANK AND FALL THROUGH TO SBLANK -; -ADVAN: - LD DE,(CIBPTR) -; -; SKIP STRING POINTED TO BY DE (STRING ENDS IN 0) UNTIL END OF STRING -; OR NON-BLANK ENCOUNTERED (BEGINNING OF TOKEN) -; -SBLANK: - LD A,(DE) - OR A - RET Z - CP ' ' - RET NZ - INC DE - JR SBLANK -; -; CONVERT CHARACTER IN A TO UPPER CASE -; -UCASE: - CP 61H ;LOWER-CASE A - RET C - CEC (HL) ;DECREMENT RECORD COUNT OF $$$.SUB - PUSH AF ;SAVE ZERO FLAG - CALL Z,SUBKIL ;KILL SUBMIT IF ZERO RECORDS LEFT - POP AF ;ELSE - CALL NZ,CLOSE ;JUST CLOSE FILE - CALL PROMPT ;PRINT SUBMIT PROMPT - DEFB SPRMPT+80H - LD HL,TBUFF+1 ;PRINT COMMAND LINE FROM $$$.SUB - CALL PRINTS - LD HL,TBUFF ;MOVE COMMAND LINE TO COMMAND BUFFER - LD DE,CBUFF - LD BC,BUFLEN - LDIR - CALL BREAK ;CHECK FOR ABORT (ANY CHARACTER) - JR Z,CNVBUF ;NONE -; -; INPUT COMMAND LINE FROM USER CONSOLE -; -RB1: - CALL SUBKIL ;ERP 7BH ;GREATER THAN LOWER-CASE Z? - RET NC - AND 5FH ;CAPITALIZE - RET -; -; CHECK TO SEE IF DE POINTS TO DELIMITER; IF SO, RET W/ZERO FLAG SET -; -SDELM: - LD A,(DE) - OR A ;0=DELIMITER - RET Z - CP ' ' ;ERROR IF < - JP C,ERROR - RET Z ; =DELIMITER - CP '.' ;"." =DELIMITER - RET Z - CP '[' ;"[" =DELIMITER - RET Z - CP ']' ;"]" =DELIMITER - RET Z - CP '>' ;">" =DELIMITER BUT GREATER NOT - RET NC - CP ':' ;":" ";" "<" "=" =DELIMITERS - RET C ;NO DELIMITER FOUND - CP A ;SET ZERO FLAG R OVERFLOW -; BASE 10 ASSUMED - MAXIMUM VALUE IS 255 -; -A2NUM: - LD A,(DE) ;GET DIGIT - SUB '0' ;CONVERT TO BINARY (ASCII 0-9 TO BINARY) - CP 10 ;ERROR IF >= 10 - CCF ;FLIP CARRY - RET C - LD C,A ;DIGIT IN C - LD A,L ;NEW VALUE = OLD VALUE * 10 - RLCA ;*2 - RET C ;ERROR - RLCA ;*4 - RET C ;ERROR - ADD A,L ;*5 - RET C ;ERROR - RLCA ;*10 - RET C ;ERROR - ADD A,C ;NEW VALUE = OLD VALUE * 10 + DIGIT - RET C ;DON'T INC DE IF ERROR - LD L,A ;SET NEW VALUE - INC DE ;GOOD DIGIT - RET -; -; - RET - -; -; ADD A TO HL (HL=HL+A) -; -ADDAH: - ADD A,L - LD L,A - RET NC - INC H - RET -; -; EXTRACT DECIMAL NUMBER FROM COMMAND LINE -; RETURN WITH 8-BIT VALUE IN REG A AND 16-BIT VALUE IN HL -; ALL REGISTERS MAY BE AFFECTED -; -NUMBER: - CALL SCANER ;PARSE NUMBER AND PLACE IN FCBFN - LD HL,FCBFN+10 ;POINT TO END OF TOKEN FOR CONVERSION - LD B,11 ;11 CHARACTERS MAX -; -; CHECK FOR SUFFIX FOR HEXADECIMAL NUMBER -; -NUMS: - LD A,(HL) ;GET CHARACTERS FROM END, SEARCHING FOR SUFFIX - DEC HL ;BACK UEXTRACT HEXADECIMAL NUMBER FROM COMMAND LINE -; RETURN WITH 8-BIT VALUE IN REG A AND 16-BIT VALUE IN HL -; ALL REGISTERS MAY BE AFFECTED -; -HEXNUM: - CALL SCANER ;PARSE NUMBER AND PLACE IN FCBFN -HNUM1: - LD HL,0 ;HL=ACCUMULATED VALUE - LD DE,FCBFN ;POINT TO TOKEN FOR CONVERSION -HNUM2: - LD A,(DE) ;GET CHARACTER - CP ' ' ;DONE? - JR Z,NUM3 ;RETURN IF SO - CP 'H' ;DONE IF H SUFFIX - JR Z,NUM3 - SUB '0' ;CONVERT TO BINARY - CP 10 ;0-9? - JR C,HNUM3 - SUB 17 ;A-F? - CP 6 ;ERROR? - JR NC,ERROR -P - CP NUMBASE ;CHECK AGAINST BASE SWITCH FLAG - JR Z,HNUM1 - CP ' ' ;SPACE? - JR NZ,NUM1 ;CHECK FOR LAST DIGIT - DJNZ NUMS ;COUNT DOWN -; -; PROCESS DECIMAL NUMBER -; -NUM1: - LD HL,0 ;CLEAR GRAND TOTAL - LD DE,FCBFN ;POINT TO BEGINNING OF TOKEN -NUM2: - LD A,(DE) ;GET CHARACTER - CP ' ' ;DONE IF -NUM3: - LD A,L ;TOTAL TO A IN CASE DONE - RET Z ;ALL DONE - CALL A2NUM ;CONVERT DIGIT - JR NC,NUM2 ;NO ERROR - JR ERROR -; -; ASCII TO NUMERICAL CONVERSION -; RETURNS WITH CARRY SET IF INVALID O ADD A,10 -HNUM3: - INC DE ;POINT TO NEXT CHARACTER - ADD HL,HL ;LEFT SHIFT 4 - ADD HL,HL - ADD HL,HL - ADD HL,HL - OR L ;MASK IN NEW LOW - LD L,A ;NEW LOW BYTE IN L - JR HNUM2 -; -; GET THE REQUESTED USER NUMBER FROM THE COMMAND LINE AND VALIDATE IT. -; -USRNUM: - CALL NUMBER - LD E,A - CP MAXUSR+1 - RET C -; -; INVALID COMMAND -- PRINT IT -; -ERROR: - CALL CRLF ;NEW LINE - LD HL,(CIPTR) ;POINT TO BEGINNING OF COMMAND LINE -ERR1: - LD A,(HL) ;GET CHARACTER - CP ' '+1 ;SIMPLE '?' IF OR LESS - CAR),DE ;SET POINTER TO NON-BLANK OR END OF LINE - JR Z,SCAN3 ;END OF COMMAND LINE - SBC A,'A' ;CONVERT POSSIBLE DRIVE SPEC TO NUMBER - CP 16 ;VALID DRIVE? - INC A ;CONVERT TO DRIVE (A=1, AND SO ON) - JR C,SCAN2 ;YES - XOR A ;SELECT DEFAULT DRIVE - DEC DE ;DON'T MOVE TO NEXT CHARACTER -SCAN2: - LD H,A ;STORE NUMBER (A:=0, B:=1, ETC) IN H - INC DE ;POINT TO NEXT CHARACTER - LD L,0 ;ZERO TOTAL - CALL A2NUM ;CONVERT FIRST DIGIT - JR C,SCAN3 ;NOT VALID - CALL A2NUM ;CONVERT SECOND DIGIT - LD A,L - SELL NC,CONOUT ;PRINT COMMAND CHARACTER OR FALL THRU - INC HL ;POINT TO NEXT - JR NC,ERR1 ;CONTINUE - CALL PRINT ;PRINT '?' - DC '?' - JP ABORT ;RESTART CPR -; -; POINT TO DIRECTORY ENTRY IN TBUFF WHOSE OFFSET IS SPECIFIED BY A AND C -; -DIRPTR: - LD HL,TBUFF ;POINT TO TEMP BUFFER - ADD A,C ;POINT TO 1ST BYTE OF DIR ENTRY - CALL ADDAH ;POINT TO DESIRED BYTE IN DIR ENTRY - LD A,(HL) ;GET DESIRED BYTE - RET -; -; CHECK FOR VALID USER AND LOG IN IF VALID -; -ULOGIN: - LD A,(FCBS1) ;GET USER NUMBER -ALOGIT 7,L ;MAKE VALID JUST IN CASE - CP MAXUSR+1 ;TOO BIG? - JR C,SCAN3 ;NO - LD A,(DE) ;ANY ':'? - CP ':' - JP Z,NAMERR ;YES, NAME ERROR -SCAN3: - LD A,(DE) ;SEE IF LAST CHARACTER IS A COLON (:) - INC DE ;POINT TO BYTE AFTER ':' - CP ':' - JR Z,SCAN4 ;YES, WE HAVE A DRIVE SPEC - LD HL,0 ;NOT VALID DRIVE SPEC, SWITCH TO DEFAULT - LD DE,(CIPTR) ;RESTART SCAN -; -; EXTRACT FILENAME FROM POSSIBLE FILENAME.TYP -; -SCAN4: - LD B,H ;MOVE DRIVE TO B - EX (SP),HL ;GET BACK FCB POINTER AND SAVE USER NUMBER - LN: - ADD A,80H ;VALID? - CALL P,SETUSR ;SET IF VALID - RET -; -; EXTRACT TOKEN FROM COMMAND LINE AND PLACE IT INTO FCBDN; -; FORMAT FCBDN FCB IF TOKEN RESEMBLES FILE NAME AND TYPE (FILENAME.TYP); -; ON INPUT, CIBPTR PTS TO CHARACTER AT WHICH TO START SCAN; -; ON OUTPUT, CIBPTR PTS TO CHARACTER AT WHICH TO CONTINUE AND ZERO FLAG IS -; RESET IF '?' IS IN TOKEN -; -SCANER: - LD HL,FCBDN ;POINT TO FCBDN -SCAN1: - PUSH HL ;SAVE POINTER TO FCB - CALL ADVAN ;SKIP TO NON-BLANK OR END OF LINE - LD (CIPTD (HL),B ;SAVE DRIVE - LD B,8 ;MAX OF 8 CHARACTERS - XOR A ;CLEAR '?' COUNT - EX AF,AF ;AND SAVE - CALL SCANF ;GET POSSIBLE NAME - CALL SCANT ;AND POSSIBLE TYPE -; -; FILL IN EX, S1, S2, AND RC -; - XOR A - INC HL ;POINT TO NEXT BYTE IN FCBDN - LD (HL),A ;ZERO EX - INC HL - POP BC ;GET BACK USER NUMBER - LD (HL),C ;STUFF AWAY USER NUMBER IN S1 - INC HL - LD (HL),A ;ZERO S2 - INC HL - LD (HL),A ;ZERO RC -; -; SCAN COMPLETE -- DE POINTS TO DELIMITER BYTE AFTER TOKEN -; - LD (CIBPTR),DE - EX AF,A; -; CMDTBL (COMMAND TABLE) SCANNER -; JUMPS TO ADDRESS OF COMMAND IF CPR-RESIDENT -; JUMPS TO COM IF NOT CPR-RESIDENT COMMAND -; -CMDSER: - LD A,(FCBFN) ;ANY COMMAND? - CP ' ' ;' ' MEANS COMMAND WAS 'D:' TO SWITCH - LD A,(FCBS1) ;GET USER NUMBER IF ANY - LD HL,FCBDN ;POINT TO DRIVE - JR NZ,CMS0 ;NOT , SO MUST BE COMMAND - ADD A,80H ;CONVERT TO USER NUMBER - CALL P,NEWUSR ;SET IF VALID USER IN FCB - LD A,(HL) ;LOOK FOR DRIVE SPEC - DEC A ;ADJUST FOR LOG IN - CALL P,TLOGIN ;LOG IN DRIVE -SETUDBF ;GET NUMBER OF '?' IN FILENAME.TYP - RET -; -; EXTRACT FILE TYPE FROM POSSIBLE FILENAME.TYP -; -SCANT: - LD B,3 ;PREPARE TO EXTRACT TYPE - CP '.' ;IF (DE) DELIMITER IS A '.', WE HAVE A TYPE - JR NZ,SCAN11 ;FILL FILE TYPE WITH - INC DE ;POINT TO CHARACTER IN COMMAND LINE AFTER '.' -SCANF: - LD C,' ' ;FILL CHARACTER -SCAN11: - INC HL ;STEP TO NEXT BYTE IN FCBN - CALL SDELM ;CHECK FOR DELIMITER - JR Z,SCAN12 ;FILL REST WITH FILL BYTE IF A DELIMITER - CP '*' ;WILD? - JR NZ,SCAN13 ;NO - LD C,'?' : - LD A,(TMPUSR) ;GET CURRENT USER NUMBER - ADD A,A ;PLACE IT IN HIGH NIBBLE - ADD A,A - ADD A,A - ADD A,A - LD HL,TDRIVE ;ADD DEFAULT DRIVE NUMBER (LOW NIBBLE) - OR (HL) - LD (UDFLAG),A ;UPDATE USER/DRIVE BYTE - RET -CMS0: - OR (HL) ;DRIVE OR USER NUMBER - JR NZ,CMS5 ;YES, CAN'T BE BUILT IN COMMAND - LD HL,CMDTBL ;POINT TO COMMAND TABLE - LD B,NCMNDS ;SET COMMAND COUNTER -CMS1: - LD DE,FCBFN ;POINT TO STORED COMMAND NAME -CMS2: - LD A,(DE) ;COMPARE AGAINST TABLE ENTRY - XOR (HL) - ADD A,A - JR NZ,CMS3 ;CHANGE FILL BYTE TO '?' -SCAN12: - DEC DE ;DON'T STEP OFF CURRENT SYMBOL - LD A,C ;GET FILL BYTE -SCAN13: - CP '?' ;QUESTION MARK? - JR NZ,SCAN14 ;NO, JUST STORE CHARACTER - EX AF,AF ;GET QUESTION MARK COUNT - INC A ;COUNT IT - EX AF,AF ;AND SAVE COUNT -SCAN14: - INC DE ;POINT TO NEXT CHARACTER IN COMMAND LINE - LD (HL),A ;STORE CHARACTER IN FCBDN - DJNZ SCAN11 ;COUNT DOWN CHARACTERS IN FILE TYPE (3 MAX) -SCAN15: - CALL SDELM ;SKIP REST OF CHARACTERS TO - RET Z ;DELIMITER - INC DE - JR SCAN15 - ;NO MATCH - INC DE ;POINT TO NEXT CHARACTER - INC HL - JR NC,CMS2 ;NOT END OF TABLE ENTRY - LD A,(DE) ;NEXT CHARACTER IN INPUT COMMAND MUST BE - CP ' ' - JR NZ,CMS4 - LD A,(HL) ;FOUND COMMAND, - INC HL ;LOAD ADDRESS, - LD H,(HL) ;AND - LD L,A ;JUMP TO IT - JP (HL) ;COMMAND IS CPR-RESIDENT -CMS3: - BIT 7,(HL) ;END OF TABLE ENTRY? - INC HL - JR Z,CMS3 ;NO -CMS4: - INC HL ;SKIP ADDRESS - INC HL - DJNZ CMS1 ;NOT TO END OF TABLE YET -CMS5: - JP COM ;COMMAND MAY BE DISK-RESIDENT -; -;**** SectD A,B - ;DROP INTO DIRPR TO PRINT DIRECTORY - ;THEN RESTART CPR -; -; DIRECTORY PRINT ROUTINE; ON ENTRY, A IS 80H IF SYSTEM FILES EXCLUSIVELY -; -DIRPR: - LD D,A ;STORE SYSTEM FLAG IN D - LD A,B ;SAVE SYSTST - LD (SYSTST),A - XOR A ;SET COLUMN COUNTER TO 0 - LD B,A ;AND USER NUMBER JUST IN CASE -DIRPR1: - ADD A,03H ;FORCE CRLF - AND 0FCH - LD E,A - PUSH DE - INC D ;ALL USER NUMBERS? - PUSH BC ;SAVE USER NUMBER - LD A,B ;AND - CALL Z,SETUSR ;SET IF ALL USER NUMBERS - CALL SEARF ;SEARCH FOR SPECIFIEion 5 **** -; CPR-Resident Commands -; -; -;Section 5A -;Command: DIR -;Function: To display a directory of the files on disk. -;Forms: -; DIR Display the DIR files -; DIR S Display the SYS files -; DIR B Display both DIR and SYS files -; DIR A Display both DIR and SYS files for all user numbers -; -DIR: - CALL SCANER ;EXTRACT POSSIBLE D:FILENAME.TYP TOKEN - CALL ULOGIN ;LOG ANY USER - LD HL,FCBFN ;MAKE FCB WILD (ALL '?') IF NO FILENAME.TYP - LD A,(HL) ;GET FIRST CHARACTER OF FILED FILE (FIRST OCCURRENCE) -DIRPR2: - POP BC ;GET BACK USER NUMBER - POP DE ;AND SYSTEM FLAG - JR NZ,DIRPR4 ;FILE FOUND - LD A,B ;AT LAST USER NUMBER? - INC B ;STEP TO NEXT USER NUMBER - CP MAXUSR - LD A,E ;IN CASE DONE - JR NC,DIRPR3 ;DONE - LD E,D ;EITHER WAY, E IS GOING TO BE CHANGED - INC E - JR Z,DIRPR1 ;PRINT ALL USER NUMBERS -DIRPR3: - AND A ;ANY PRINTED? - JP CHKFND ;GO CHECK -; -; ENTRY SELECTION LOOP; ON ENTRY, A=OFFSET FROM SEARF OR SEARN -; -DIRPR4: - DEC A ;ADJUST TO RETURNED VALUE - RRNAME.TYP - CP ' ' ;IF , ALL WILD - JR NZ,DIR2 - LD B,11 ;NUMBER OF CHARACTERS IN FN & FT -DIR1: - LD (HL),'?' ;STORE '?' - INC HL - DJNZ DIR1 -DIR2: - CALL ADVAN ;LOOK AT NEXT INPUT CHARACTER - LD B,0FFH ;LOAD ALL FILES FLAG - CP USRFLG ;ALL FILES ON DISK? - JR Z,DIR4 ;YES - LD B,80H ;IN CASE SYS ONLY - CP SOFLG ;SYS ONLY? - JR Z,DIR4 ;YES - CP SYSFLG ;HAVE SYSTEM SPECIFIER? - LD A,B ;SET SYSTEM BIT EXAMINATION - LD B,0 ;SYSTEM TOKEN DEFAULT - JR NZ,DIRPR -DIR4: - INC DE - LD (CIBPTR),DE - LCA ;CONVERT NUMBER TO OFFSET INTO TBUFF - RRCA - RRCA - LD C,A ;OFFSET INTO TBUFF IN C (C=OFFSET TO ENTRY) - LD A,10 ;ADD 10 TO POINT TO SYSTEM FILE ATTRIBUTE BIT - CALL DIRPTR - PUSH DE - AND D ;MASK FOR SYSTEM BIT - INC D ;ALL FILES? - JR Z,DIRPR5 ;YES - LD HL,SYSTST ;SYSTEM FILE? - CP (HL) - JR NZ,DIRPR9 ;NO -DIRPR5: - LD A,E ;WHAT TO PRINT -; - IF TWOCOL - AND 01H ;OUTPUT IF 2 ENTRIES PRINTED IN LINE - ELSE -; - AND 03H ;OUTPUT IF 4 ENTRIES PRINTED IN LINE - ENDIF -; - CAL - INC HL ;STEP TO NEXT CHARACTER - CP C ;EAT SPACES? - CALL NZ,CONOUT - DJNZ PRFN1 - POP BC - RET -; -;Section 5B -;Command: ERA -;Function: To erase files; names of the erased files are displayed. -;Forms: -; ERA -; -ERA: - CALL SCANER ;PARSE FILE SPECIFICATION - CP 11 ;ALL WILD (ALL FILES = 11 '?')? - JR NZ,ERA1 ;IF NOT, THEN DO ERASES - CALL REPLY - JP NZ,RESTRT ;RESTART CPR IF NOT -ERA1: - CALL ULOGIN ;LOG ANY USER - XOR A ;PRINT ALL FILES (EXAMINE SYSTEM BIT) - LD B,A ;NO SYS-ONLY OPT TL Z,CRLF ;NEWLINE ALWAYS RETURNS ZERO TRUE - JR Z,DIRPR6 - CALL PRINT -; - IF WIDE - DEFB ' ' ;2 SPACES - DEFB FENCE ;THEN FENCE CHARACTER - DC ' ' ;THEN 2 MORE SPACES - ELSE -; - DEFB ' ' ;SPACE - DEFB FENCE ;THEN FENCE CHARACTER - DC ' ' ;THEN SPACE - ENDIF -; -DIRPR6: - POP DE - INC E ;BUMP NUMBER OF FILES LISTED - PUSH DE - INC D ;PRINT WITH USER NUMBER? - JR NZ,DIRPR8 ;NO - LD A,B ;GET USER NUMBER AND - CALL PRUSRN ;AND PRINT - DEFB USRDLM+80H ;USER NUMBER DELIMITER -DIRPR8: - XOR A ;DO DIRPR - CALL DIRPR ;PRINT DIRECTORY OF ERASED FILES -ERA2: - LD DE,FCBDN ;DELETE FILE SPECIFIED - JP DELETE ;REENTER CPR VIA DELETE -; -;Section 5C -;Command: ERAQ -;Function: To erase files with individual query. -;Forms: -; ERAQ -; ? Y -; : -; : -; -ERAQ: - CALL SCANER ; parse file specification - CALL ULOGIN ; log any user - LD HL,01FFH ; load first flag -ERAQ1: - CALL SEARF ; find first entry - JR NZ,ERAQ2 ; found one - INC L ; ever found any? -; -; Check for File Found -; -CHKFNDON'T EAT SPACES - CALL PRFN -DIRPR9: - PUSH BC - CALL SEARN ;GET NEXT FILENAME - JR DIRPR2 -PRFN: - PUSH BC - LD B,A ;SAVE EAT SPACES FLAG - LD A,1 - CALL DIRPTR ;HL NOW POINTS TO 1ST BYTE OF FILE NAME - LD C,B ;SAVE EAT SPACES FLAG - LD B,12 ;12 CHARACTER TOTAL -PRFN1: - LD A,B ;CHECK FOR FILE TYPE - CP 04H - LD A,(HL) - RES 7,A - JR NZ,PRFN2 ;NOT YET AT TYPE - DEC HL ;ADJUST HL FOR TYPE DELIMITER - CP ' ' ;NO FILE TYPE? - JR Z,PRFN2 ;CONTINUE IF SO - LD A,'.' ;FILE TYPE EXISTS, PRINT DOT -PRFN2:: - RET NZ ; yes -; -; No File Error Message -; -PRNNF: - CALL PRINTC ;NO FILE MESSAGE - DC 'No File' - RET -ERAQ2: - LD L,H ; restart found count -ERAQ3: - DEC H ; at file to erase? - JR NZ,ERAQ5 ; no - INC H ; reset H to 1 - INC L ; step count in case don't delete - PUSH HL ; save flag first - DEC A ; compute offset - RRCA - RRCA - RRCA - LD C,A - CALL CRLF - LD A,' ' ; eat spaces - CALL PRFN ; print file name - CALL REPLY1 ; prompt - JR NZ,ERAQ4 ; reply not 'Y' - XOR A - CALL DIRPTR ; getng -; -LIST: -; - IF FFKILL - LD HL,NLINEP+0580H ; lines/page, first ff and list flags - ELSE - LD HL,NLINEP+0500H ; lines/page and list flag - ENDIF -; - JR TYPE1 -; -;Section 5G -;Command: TYPE -;Function: To display specified file on console. -;Forms: -; TYPE Display file -; TYPE P Display file without default paging -; -TYPE: -; - IF FFKILL - LD HL,NLINES+0280H ; lines/page, first ff and type flags - ELSE - LD HL,NLINES+0200H ; lines/page and type flag - ENDIF -; -TYPE1: - LD (LNCNT),HL FCB to delete - LD A,(FCBDN) ; get drive specification - LD (HL),A ; select drive - EX DE,HL - CALL DELETE ; go delete - POP HL ; get flags - DEC L ; reduce count since file deleted - LD H,L ; update next file to process - JR ERAQ1 ; and restart process -ERAQ4: - POP HL ; get count -ERAQ5: - CALL SEARN ; find next file - JR NZ,ERAQ3 ; more files, go ask - RET ; done -; -;Section 5D -;Command: SAK -;Function: To pause until a key is struck; ^C warm boots. -;Forms: -; SAK -; ? -; -SAK: - ; save list/type flag and line cnt - XOR A ; initialize tab count - LD (TABCNT),A ; initialize line and tab count - CALL SCANER ; extract filename.typ token - JP NZ,NAMERR ; error if any question mark - CALL ADVAN ; get pgdflg if it's there - JR Z,PGDON ; jump if no more on cmd line - XOR PGDFLG ; change page flag? - JR NZ,PGDON ; no - INC DE ; step over pgdflg - LD (CIBPTR),DE ; and save cmd buffer pointer - DEC A ; no page flag is 0ffh - LD (LNCNT),A ; save flag -PGDON: - CALL ULOGIN ; log any usCALL CRLF ; strike any key - JR REPLY1 -REPLY: - CALL PRINTC - DC 'All' -REPLY1: - CALL PRINT - DC '? ' -REPL2: - CALL BREAK ; get response - JR Z,REPL2 ; none - CALL UCASE - CP 'Y' - RET -; -;Section 5E -;Command: BELL -;Function: To ring terminal bell. -;Forms: -; BELL -; -RING: - LD A,BELL ; load bell into A - JP CONOUT ; and output it -; -;Section 5F -;Command: LIST -;Function: To print specified file on list device. -;Forms: -; LIST Print file -; LIST P Print file without default pagier - CALL OPENF ; open selected file - JR Z,TYPE3 ; abort if error - CALL CRLF ; new line -TYPE2: - CALL READF ; read next block - JR Z,TYPE4 ; read ok (A register is zero) - DEC A ; error or eof? - RET Z ; eof -TYPE3: - JP PRNNF ; error -CHK4LF: - LD A,(LNCNT) ; get line count (just in case) - DJNZ CHK4VT ; not lf, try vertical tab - RES 7,A ; reset first ff flag (if any) - CP 07FH ; paging off? - JR Z,CHK4VT ; yes - DEC A ; time to page? - JR Z,CHKFF ; yes! -CHK4VT: - DEC B ; step over vt -ve character in e reg - SUB BS ; backspace? - LD B,A ; in case not bs - JR NZ,CHK4HT ; not bs - DEC (HL) ; step tab count and fall thru -CHK4HT: - DJNZ CHK4LF ; no, check for line feed -CHKHT: - LD E,' ' ; load space into bdos character reg - CALL PAGER ; print space - LD A,(HL) ; now in col 0 mod 8? - AND 07H - JR NZ,CHKHT ; go for more - JR NXTCHR -PAGER: - CALL BREAK ; check for abort - LD A,(TYPLST) ; get list/type flag - LD C,A -; - IF TEST OR NOT NOSTAT - AND 00000010B ; list? - EXX ; save rCHK4FF: - DJNZ CHK4CR ; not ff, try vt - BIT 7,A ; first ff? - JR NZ,NXTCHR ; yes, ignore -CHKFF: - LD A,(TYPLST) - BIT 0,A ; type or list? - LD E,FF ; load ff into character reg - LD A,NLINEP ; reset list count - JR NZ,CHK4CR ; list -CHKFF1: - LD C,06H ; direct console i/o - LD E,0FFH ; conditional console input - CALL BDOSJP - JR Z,CHKFF1 ; no character yet - CALL CHKETX ; check for ^C - LD A,NLINES ; type line count - LD E,LF -CHK4CR: - LD (LNCNT),A ; save line count -››mmUэmяoяяяяяяяяяяяяяяяяяяяegisters - CALL Z,LISTST ; check busy - EXX ; restore registers - AND A - JR Z,PAGER ; printer not ready - ENDIF -; - LD A,E ; check for printing character - CP ' ' - JR C,PAGE2 ; control character, don't count - INC (HL) ; step position -PAGE2: - JP BDOSJP ; return via bdos -; -;Section 5H -;Command: PAGE -;Function: To eject a page on list device via a form feed. -;Forms: -; PAGE -; -EJECT: - CALL BREAK ; check for ^C -; - IF TEST OR NOT NOSTAT - CALL LISTST ; check printer ready - AND A - JR Z,Eer - DJNZ NXTCHR ; not cr - LD (HL),B ; reset tab count -NXTCHR: - LD A,(CHRCNT) ; get buffer pointer - INC A ; step to next character - CP 128 ; end-of-buffer? - JR NC,TYPE2 ; yes, read next buffer -TYPE4: - LD (CHRCNT),A ; save buffer count - LD HL,TBUFF ; point to buffer - CALL ADDAH ; compute address of next character - LD A,(HL) ; get character to accumulator - AND 7FH ; mask out msb - CP 1AH ; end-of-file (^Z)? - RET Z ; yes, restart zcpr - LD HL,TABCNT ; pointer to tab counter - LD E,A ; saJECT ; not ready yet - ENDIF -; - LD E,FF ; now for form feed - LD C,05H ; list output - JP BDOS ; output character and return via bdos -; -;Section 5I -;Command: SAVE -;Function: To save the contents of TPA onto disk as a file. Number of -; pages or records is in decimal. Saved area begins at 100H. -;Forms: -; SAVE -; SAVE R -; -SAVE: - CALL NUMBER ;EXTRACT NUMBER FROM COMMAND LINE - PUSH HL ;SAVE IT - CALL SCANER ;EXTRACT FILENAME.TYP - JP NZ,RITE ERROR -SAVE4: - JP PRNLE ;PRINT 'NO SPACE' ERROR -; -;Section 5J -;Command: REN -;Function: To change the name of an existing file. -;Forms: -; REN = -; -REN: - LD HL,FCBDN+16 ;PLACE FILENAME IN SECOND HALF OF FCB - PUSH HL ;SAVE POINTER FOR SEARCH FIRST - CALL SCAN1 ;EXTRACT FILE NAME - JR NZ,NAMERR ;ERROR IF ANY '?' IN IT - CALL ADVAN ;ADVANCE CIBPTR - CP '=' ;'=' OK - JP NZ,ERROR - EX DE,HL ;POINT TO CHARACTER AFTER '=' IN HL - INC HL - LD (CIBPTR),HL ;SAVE POINTER TO OLD FILE NAMERR ;MUST BE NO '?' IN IT - CALL ULOGIN ;LOG ANY USER - CALL ERA2 ;DELETE FILE IF POSSIBLE - CALL CREATE ;CREATE NEW FILE - JR Z,SAVE4 ;UNSUCCESSFUL - XOR A ;SET RECORD COUNT FIELD OF NEW FILE'S FCB - LD (FCBCR),A - CALL ADVAN ;LOOK FOR RECORD OPTION - INC DE ;POINT TO TOKEN - POP HL ;GET BACK PAGE COUNT - CP RECFLG - JR Z,SAVE1 - DEC DE ;NO TOKEN, SO BACK UP - ADD HL,HL ;DOUBLE IT FOR HL=RECORD (128 BYTES) COUNT -SAVE1: - LD (CIBPTR),DE ;SET POINTER TO BAD TOKEN OR AFTER GOOD TOKEN - LD DE,TPANAME - CALL SCANER ;EXTRACT FILENAME.TYP TOKEN - JR NZ,NAMERR ;ERROR IF ANY '?' - LD A,(FCBDN+16+13) ;GET POSSIBLE USER NUMBER - CALL ALOGIN ;LOG ANY USER - POP DE ;GET POINTER FOR SEARCH FIRST - CALL SEARDE ;CHECK FOR NONE OF THAT NAME - JR Z,REN1 ;NO FILE EXISTS - CALL PRINTC ;DUPLICATE NAME - DC 'Delete' - CALL REPLY1 ;GET REPLY - JR NZ,REN2 ;NOT A 'Y' - CALL DELETE ;DELETE DUPLICATE -REN1: - LD A,(DE) ;GET POSSIBLE DRIVE - LD DE,FCBDN ;POINT TO FCB - LD (DE),A ;SAVE POSSIBLE DRIVE - LD C,17 ;POINT TO START OF SAVE AREA (TPA) -SAVE2: - LD A,H ;DONE WITH SAVE? - OR L ;HL=0 IF SO - JR NZ,SAVE3 - LD DE,FCBDN ;CLOSE SAVED FILE - JP CLOSE ;AND RESTART CPR -SAVE3: - DEC HL ;COUNT DOWN ON RECORDS - PUSH HL ;SAVE POINTER TO BLOCK TO SAVE - CALL DMASET ;SET DMA ADDRESS FOR WRITE (ADDRESS IN DE) - LD HL,128 ;128 BYTES PER RECORD - ADD HL,DE ;POINT TO NEXT RECORD - LD DE,FCBDN ;WRITE RECORD - CALL WRITE - EX DE,HL ;GET POINTER TO NEXT RECORD IN DE - POP HL ;GET RECORD COUNT - JR Z,SAVE2 ;NO WH ;BDOS RENAME FCT - CALL BDOSFN - JP CHKFND ;CHECK FOR FILE FOUND -NAMERR: - CALL PRINTC - DC 'Name Error' -REN2: - JP ABORT -; -;Section 5K -;Command: USER -;Function: To change current user number; new user number is in decimal. -;Forms: -; USER -; -USER: - CALL USRNUM ;EXTRACT USER NUMBER FROM COMMAND LINE - JP NEWUSR ;SET NEW USER NUMBER -; -;Section 5L -;Command: DFU -;Function: To set the Default User Number for the command/file scanner; new -; default user number is in decimal. -;F; done? - RET Z ; yes - DJNZ PEEK2 ; not end of line - JR PEEK1 ; end of line -PRHEXW: - LD A,H ; print hex word in hl - CALL PRHEXA - LD A,L -PRHEXA: - PUSH AF ; save right nibble - RRCA ; move left nibble to right - RRCA - RRCA - RRCA - CALL PRHEX ; display left nibble - POP AF ; get back right nibble -PRHEX: - AND 0FH ; convert to ascii - ADD A,90H - DAA - ADC A,40H - DAA - JP CONOUT ; go display value -; -; -;Section 5O -;Command: POKE -;Function: To poke a string of hex values into a set of orms: -; DFU -; -DFU: - CALL USRNUM ;GET USER NUMBER - LD (DFUSR),A ;PUT IT AWAY - RET -; -;Section 5M -;Command: SCL -;Function: To force ZCPR to parse only a single command per line; reset -; to multiple command format at the next ^C. -;Forms: -; SCL -; - IF MULTPL -SINGLE: - LD HL,NEWCMD ; point at current command separator - LD A,CMDCHR ; get default command separator - XOR (HL) ; flip current separator - LD (HL),A ; save new command separator - RET - ENDIF -; -; -;Section 5N -;Command:consecutive addresses. -;Forms: -; POKE [] -; -POKE: - CALL HEXNUM ; get address -POKE1: - PUSH HL ; save address - CALL HEXNUM ; get next byte - LD A,(FCBFN) ; done? - CP ' ' - LD A,L ; save byte - POP HL ; get back address - RET Z ; done - LD (HL),A ; save byte - INC HL ; step to next address - JR POKE1 ; go for more -; -; -;Section 5P -;Command: JUMP -;Function: To call the program (subroutine) at the specified address -; without loading from disk. -;Forms: -; JUMP PEEK -;Function: To display hex values beginning at a specified address. -;Forms: -; PEEK [] -; -PEEK: - CALL HEXNUM ; get display address - PUSH HL ; save it - CALL HEXNUM ; get optional count - LD C,L ; save count - POP HL ; get back address -PEEK1: - CALL CRLF ; start new line - CALL PRHEXW ; print address - LD B,16 ; 16 values per line -PEEK2: - CALL PRINT ; space over - DC ' ' - LD A,(HL) ; get hex value - INC HL ; step to next value - CALL PRHEXA ; display value - DEC C -; -JUMP: - CALL HEXNUM ;GET LOAD ADDRESS IN HL - JR CLLPRG ;PERFORM CALL -; -;Section 5Q -;Command: COM file processing -;Function: To load the specified COM file from disk and execute it. -;Forms: -; -; -COM: - LD HL,FCBFT ;FILE TYPE MUST BE BLANK - LD A,(HL) - CP ' ' - JP NZ,ERROR - LD (HL),'C' ;PLACE DEFAULT FILE TYPE (COM) INTO FCB - INC HL ;COPY INTO FILE TYPE - LD (HL),'O' ;3 BYTES - INC HL - LD (HL),'M' - LD HL,TPA ;SET EXECUTION/LOAD ADDRESS - CR+0FF00H;INITIALIZE COUNT AND GET COMMAND FLAG - LD DE,TBUFF ;DESTINATION FOR COMMAND TAIL -COM2: - INC DE ;POINT TO DESTINATION - INC B ;INCREMENT CHARACTER COUNT - LD A,(HL) ;COPY CHARACTER TO TBUFF - LD (DE),A - INC HL ;STEP TO NEXT SOURCE CHARACTER - OR A ;END OF LINE? -; - IF MULTPL - JR Z,COM3 ;YES, END OF LINE - XOR C ;START OF NEXT COMMAND? - JR NZ,COM2 ;NO - LD (DE),A ;0 TERMINATE STRING -COM3: -; - ELSE -; - JR NZ,COM2 ;NOT END OF LINE - ENDIF -; - LD A,B ;SAVE CHARACTER COUNT - LD (TBUALL MEMLD ;LOAD MEMORY WITH FILE SPECIFIED - ;(NO RETURN IF ERROR OR TOO BIG) -; -;Section 5R -;Command: GO -;Function: To call the program in the TPA without loading from disk. -; Same as JUMP 100H, but more convenient, especially when -; used with parameters for programs like STAT. -;Form: -; GO -; -GO: - LD HL,TPA ;ALWAYS TO TPA -; -; -; CLLPRG IS THE ENTRY POINT FOR THE EXECUTION OF THE LOADED PROGRAM -; ON ENTRY TO THIS ROUTINE, HL MUST CONTAIN THE EXECUTION -; ADDRESFF),A - DEC HL ;BACK UP ONE CHARACTER - LD (CIBPTR),HL ;SAVE FOR START OF NEXT COMMAND SCAN -; -; RUN LOADED TRANSIENT PROGRAM -; - CALL CRLF ;NEW LINE - CALL DEFDMA ;SET DMA TO 0080 - CALL RSTUSR ;RESET TO PROPER USER NUMBER -; -; EXECUTION (CALL) OF PROGRAM (SUBROUTINE) OCCURS HERE -; - RET ;CALL TRANSIENT -; -;Section 5S -;Command: GET -;Function: To load the specified file from disk to the specified address -;Forms: -; GET Load the specified file at the specified page; -; -GET: - CAS OF THE PROGRAM (SUBROUTINE) TO EXECUTE -; -CLLPRG: - PUSH HL ;SAVE EXECUTION ADDRESS - LD HL,(CIBPTR) ;SAVE THE COMMAND TAIL START ADDRESS - PUSH HL - LD HL,TFCB ;MAKE FCB FOR PROGRAM - CALL SCAN1 ;SEARCH COMMAND LINE FOR NEXT TOKEN - LD HL,TFCB+16 ;OFFSET FOR 2ND FILE SPEC - CALL SCAN1 ;SCAN FOR IT AND LOAD IT INTO FCBDN+16 - XOR A - LD (TFCB+32),A ;ZERO RECORD COUNT -; -; LOAD COMMAND LINE INTO TBUFF -; - POP HL ;GET LOCATION OF COMMAND TAIL -NEWCMD EQU $+1 ;IN-LINE COMMAND SEPARATOR - LD BC,CMDCHLL HEXNUM ;GET LOAD ADDRESS IN HL - PUSH HL ;SAVE ADDRESS - CALL SCANER ;GET FILE NAME - POP HL ;RESTORE ADDRESS - JP NZ,NAMERR ;MUST BE UNAMBIGUOUS -; -; LOAD MEMORY WITH COMMAND LINE FILE -; ON INPUT, HL CONTAINS STARTING ADDRESS TO LOAD -; IF COM FILE TOO BIG, EXIT TO ERROR. -; -MEMLD: - LD (LDADR),HL ;SET LOAD ADDRESS -; -; MLA is a reentry point for a non-standard CP/M Modification -; This is the return point when the .COM (or GET) file is not found the -; first time, the Default User is selST BELOW CPR - CP H ;ARE WE GOING TO OVERWRITE THE CPR? - JR C,PRNLE ;ERROR IF SO - EX DE,HL ;MOVE LOAD ADDRES FOR DMASET - CALL DMASET ;SET DMA ADDRESS - LD HL,128 ;COMPUTE NEXT LOAD ADDRESS - ADD HL,DE ;AND SAVE ANSWER IN HL - CALL READF ;READ NEXT RECORD - JR Z,MLA2 ;READ ERROR OR EOF? - DEC A ;LOAD COMPLETE - JP Z,RSTUSR ;GO RESET CORRECT USER -; -; LOAD ERROR -; -PRNLE: - CALL PRINTC - DC 'Full' -PRNLE1: - JP ABORT -; - IF (($-ENTRY) GT ZCPRSZ) - *ZCPR too large!!* - ENDIF -; - IF TEST -LISTSTected for the second attempt -; and Drive A is selected for the final attempt. -; -MLA: - CALL ULOGIN ;LOG ANY USER - LD HL,(FCBS1) ;SAVE ANY USER NUMBER - CALL OPENF ;OPEN COMMAND.COM FILE - JR NZ,MLA1 ;FILE FOUND - LOAD IT -; -; FILE NOT FOUND - SELECT DEFAULT USER -; - LD A,L ;GET FCB USER - AND A ;DEFAULT USER? - JR NZ,MLA0 ;NO - LD HL,TMPUSR ;CURRENT USER SAME AS DEFAULT? - LD A,(DFUSR) ;GET DEFAULT USER - CP (HL) - SET 7,A ;MAKE INTO VALID USER NUMBER - LD (FCBS1),A ;PUT USER INTO FCB - JR NZ,: - LD A,2DH ;COMPUTE LIST STATUS ENTRY - DEFB 0FEH ;SKIP NEXT BYTE -BOOT: - XOR A ;COMPUTE BOOT ENTRY - LD HL,(BASE+1) ;GET PAGE ADDRESS OF BIOS - LD L,A ;ADD ENTRY - JP (HL) ;GO TO BIOS ROUTINE - ENDIF - -ENDLD EQU $ - - END - - PUSH HL ;SAVE POIT RECORD - JR Z,MLA2 ;READ ERROR OR EOF? - DEC A ;LOAD COMPLETE - JP Z,RSTUSR ;GO RESET CORRECT USER -; -; LOAD ERROR -; -PRNLE: - CALL PRINTC - DC 'Full' -PRNLE1: - JP ABORT -; - IF (($-ENTRY) GT ZCPRSZ) - *ZCPR too large!!* - ENDIF -; - IF TEST -LISTSTMLA ;AND TRY AGAIN -; -; FILE NOT FOUND - SELECT DRIVE A IF DEFAULT WAS SOME OTHER DRIVE -; -MLA0: - LD A,(TDRIVE) ;DRIVE A DEFAULT? - AND A - JR Z,MLA3 ;YES, ERROR - XOR A - LD HL,FCBDN ;POINT AT DRIVE IN FCB - OR (HL) ;DRIVE ALREADY SPECIFIED? - LD ( \ No newline at end of file diff --git a/software/CPM/tosort/AcornZ80Disc1/zcprdemo.com b/software/CPM/tosort/AcornZ80Disc1/zcprdemo.com deleted file mode 100644 index d6643cb..0000000 --- a/software/CPM/tosort/AcornZ80Disc1/zcprdemo.com +++ /dev/null @@ -1 +0,0 @@ -ееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееееее \ No newline at end of file diff --git a/software/CPM/tosort/BBCBASIC.COM b/software/CPM/tosort/BBCBASIC.COM deleted file mode 100644 index a3c0ac0..0000000 Binary files a/software/CPM/tosort/BBCBASIC.COM and /dev/null differ diff --git a/software/CPM/tosort/Dbase41/APPECARD.FMT b/software/CPM/tosort/Dbase41/APPECARD.FMT deleted file mode 100644 index ec1832f..0000000 --- a/software/CPM/tosort/Dbase41/APPECARD.FMT +++ /dev/null @@ -1,24 +0,0 @@ -* APPECARD.cmd -@ 1,10 SAY "Append Cards to Tickle File" -@ 3, 0 SAY "Contact " GET contact -@ 4, 0 SAY "Company " GET company -@ 5, 0 SAY "Address " GET address -@ 6, 0 SAY "City " GET city -@ 7, 0 SAY "State " GET state -@ 7,16 SAY "Zip " GET zip PICT '99999-9999' -@ 8, 0 SAY "Phone " GET phone PICT '999/999-9999' -@ 3,54 SAY "Your Initials " GET initials PICT '!!!' -@ 4,54 SAY "Entry Date" -@ 4,67 GET e:date PICT '99/99/99' -@ 5,54 SAY "Tickle Date" -@ 5,67 GET tkl:date PICT '99/99/99' -@ 6,54 SAY 'Keyword ' GET keyword -@ 10, 2 SAY "Comment " GET line1 -@ 11,12 GET line2 - -@ 14, 0 SAY "--------------------------------------------------" -@ 14,50 SAY "------------------------------" -@ 15, 2 SAY "To exit APPEND press RETURN when cursor is positio" -@ 15,52 SAY "ned on Contact field." - - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/CHECKS.DBF b/software/CPM/tosort/Dbase41/CHECKS.DBF deleted file mode 100644 index 31bf2dc..0000000 Binary files a/software/CPM/tosort/Dbase41/CHECKS.DBF and /dev/null differ diff --git a/software/CPM/tosort/Dbase41/CHXBOOK.MEM b/software/CPM/tosort/Dbase41/CHXBOOK.MEM deleted file mode 100644 index 8b4d8c1..0000000 Binary files a/software/CPM/tosort/Dbase41/CHXBOOK.MEM and /dev/null differ diff --git a/software/CPM/tosort/Dbase41/CHXDEPOS.FMT b/software/CPM/tosort/Dbase41/CHXDEPOS.FMT deleted file mode 100644 index 4aef692..0000000 --- a/software/CPM/tosort/Dbase41/CHXDEPOS.FMT +++ /dev/null @@ -1,26 +0,0 @@ -* CHXDEPOS.FMT CALLED BY CHXMENU.CMD -@ 8, 5 SAY "CHECKBOOK DEPOSIT SLIP for DEPOSITS.DBF" -@ 9, 0 SAY "+-------------------------------------------------" -@ 9,50 SAY "--+" -@ 10, 0 SAY "!" -@ 10,52 SAY "!" -@ 11, 0 SAY "! DATE" -@ 11,10 GET DATE PICTURE "##/##/##" -@ 11,21 SAY "or to finish !" -@ 12, 0 SAY "!" -@ 12,52 SAY "!" -@ 13, 0 SAY "! AMOUNT OF DEPOSIT $" -@ 13,25 GET AMT PICTURE "#######.##" -@ 13,52 SAY "!" -@ 14, 0 SAY "!" -@ 14,52 SAY "!" -@ 15, 0 SAY "! REC'D FROM" -@ 15,15 GET PAIDFROM -@ 15,52 SAY "!" -@ 16, 0 SAY "!" -@ 16,52 SAY "!" -@ 17, 0 SAY "+-------------------------------------------------" -@ 17,50 SAY "--+" -@ 19,0 SAY " ENTER NEGATIVE DEPOSITS TO INDICATE BANK FEES" - - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/CHXINPUT.FMT b/software/CPM/tosort/Dbase41/CHXINPUT.FMT deleted file mode 100644 index 18ed77d..0000000 --- a/software/CPM/tosort/Dbase41/CHXINPUT.FMT +++ /dev/null @@ -1,37 +0,0 @@ -* CHXINPUT.FMT CALLED BT CHXMENU.CMD -@ 7,20 SAY " CHECKBOOK INPUT SCREEN " -@ 9,10 SAY "LAST CHECK " -@ 9,20 SAY #-FIRSTREC+LASTCHK -@ 11, 0 SAY "+-------------------------------------------------" -@ 11,50 SAY "-----------------------------+" -@ 12, 0 SAY "!" -@ 12,79 SAY "!" -@ 13, 0 SAY "! CHECK NO" -@ 13,14 GET CHKNO -@ 13,23 SAY "or to finish DATE" -@ 13,62 GET DATE PICT "##/##/##" -@ 13,79 SAY "!" -@ 14, 0 SAY "!" -@ 14,79 SAY "!" -@ 15, 0 SAY "!" -@ 15,79 SAY "!" -@ 16, 0 SAY "! PAY TO" -@ 16,13 GET PAYTO -@ 16,57 SAY "AMOUNT $" -@ 16,65 GET AMT PICTURE "#######.##" -@ 16,79 SAY "!" -@ 17, 0 SAY "!" -@ 17,79 SAY "!" -@ 18, 0 SAY "!" -@ 18,79 SAY "!" -@ 19, 0 SAY "!" -@ 19,79 SAY "!" -@ 20, 0 SAY "! MEMO" -@ 20,11 GET MEMO -@ 20,57 SAY "enter " -@ 20,62 GET can -@ 20,79 SAY "!" -@ 21, 0 SAY "!" -@ 21,79 SAY "!" -@ 22, 0 SAY "+-------------------------------------------------" -@ 22,50 SAY "-----------------------------+" \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/CHXMENU.CMD b/software/CPM/tosort/Dbase41/CHXMENU.CMD deleted file mode 100644 index 0054c13..0000000 --- a/software/CPM/tosort/Dbase41/CHXMENU.CMD +++ /dev/null @@ -1,181 +0,0 @@ -* CHXMENU.CMD MAIN MENU FOR CHECKBOOK MANAGEMENT SYSTEM -* Copyright 1983, Ashton-Tate and RSP, Inc. -* written by Jim Taylor and Wayne Ratliff -* - turn off display of commands to screen -SET TALK OFF -* PULL RETAINED VARIABLES FROM MEMORY FILE -RESTORE FROM CHXBOOK.MEM -DO WHILE T -* DO WHILE T means DO WHILE TRUE I.E. DO FOREVER -* The DO WHILE will be terminated by a RETURN command -ERASE - @ 3,20 SAY ' CHECK BOOK MANAGEMENT MENU' - @ 5,10 SAY 'LAST CHECK #'+STR(LASTCHK,6) - @ 5,45 SAY 'CURRENT BALANCE $ '+STR(BALANCE,8,2) - @ 7,10 SAY ' 0 - EXIT' - @ 9,10 SAY ' 1 - ENTER NEW CHECKS ' - @ 11,10 SAY ' 2 - ENTER DEPOSITS ' - @ 13,10 SAY ' 3 - ENTER CANCELLED CHECKS ' - @ 15,10 SAY ' 4 - RECONCILE BANK STATEMENT ' - @ 17,8 SAY 'ENTER NUMBER OF DESIRED ACTION 0 1 2 3 4' - * - reading user response - WAIT TO ACTION - * process user's response - DO CASE - * - test for exit condition - CASE ACTION='0' - SET TALK ON - RELEASE ACTION - * RETAIN VARIABLES - SAVE TO CHXBOOK - * - return to CALLING PROGRAM OR dBASE SYSTEM - RETURN - - * - test for new checks - CASE ACTION='1' - * - enter new check data - * DO CHXNEW - * +++++ from here to the next ++++ could be a seperate command file - * CHXNEW COMMAND FILE TO ENTER NEW CHECKS - * OPEN DATABASE FILE AND FORMAT FILE - USE CHECKS - SET FORMAT TO CHXINPUT.FMT - * REMEMBER WHERE WE START - GO BOTTOM - STORE CHKNO+1 TO FIRSTCHK - STORE # TO FIRSTREC - * NOW ADD THE NEW DATA - APPEND - * WHEN FINISHED, HOLD ON TO LAST CHECK NUMBER - STORE CHKNO TO LASTCHK - * CALCULATE HOW MUCH WE JUST SPENT - SUM AMT TO SPENT FOR CHKNO >= FIRSTCHK .AND. CHKNO <= LASTCHK - STORE BALANCE-SPENT TO BALANCE - * CLOSE OUT OPEN FILES AND VARIABLES - USE - SET FORM TO - RELEASE FIRSTCHK,FIRSTREC,SPENT - * NEW BALANCE, LASTCHK, AND PROGRAM EXECUTION PASSED BACK TO CHXMENU.CMD - * ++++ - - * - test for new deposits - CASE ACTION='2' - * - enter new deposit data - * OPEN DEPOSITS AND FORMAT FILES - USE DEPOSITS - SET FORMAT TO CHXDEPOS.FMT - * REMEMBER WHERE WE ARE - GO BOTTOM - STORE #+1 TO FIRSTDEP - * ADD THE NEW DATA - APPEND - * ADD UP ALL THE NEW DEPOSITS - SUM AMT TO DEPOSIT FOR #>= FIRSTDEP - STORE BALANCE+DEPOSIT TO BALANCE - * CLOSE OUT DEPOSIT ROUTINE - SET FORM TO - USE - RELEASE DEPOSIT,FIRSTDEP - * NEW BALANCE AND PROGRAM EXECUTION PASSED BACK TO CHXMENU.CMD - - * - test for cancelled checks - CASE ACTION='3' - * - enter cancelled check data - USE CHECKS - STORE T TO MORE - ERASE - DO WHILE MORE - ERASE - STORE 0 TO C:CAN - @ 4,5 SAY "CHECK CANCELATION ROUTINE. " - @ 11,10 SAY "ENTER 0 TO EXIT " - @ 12,5 SAY "ENTER CHECK NUMBER TO BE CANCELLED "; - GET C:CAN PICTURE "####" - READ - * - testing for exit condition - IF C:CAN=0 - STORE F TO MORE - LOOP - ENDIF - * - search for cancelled check number - LOCATE FOR CHKNO=C:CAN - IF .NOT. CAN .AND. .NOT. EOF - * - if not already cancelled or at end of file, display check data - @ 15,20 SAY 'Paid to '+TRIM(PAYTO)+' on '+DATE - @ 17,20 SAY 'Amount of check is $' - @ 17,40 SAY AMT - @ 19,20 SAY 'for '+MEMO - * - ask if this is the right check - STORE Y TO ANSWER - @ 21,10 SAY 'Is this the one? (Y/N) ' GET ANSWER - READ - IF ANSWER - * - change logical flag for cancelled check - REPLACE CAN WITH T - @ 21,50 SAY "CANCELLED" - ENDIF - ELSE - * - message to tell the user that the check is not in file. - @ 15,5 SAY "Check "+STR(C:CAN,4)+; - " cannot be found or is already cancelled." - ACCEPT " to continue " to WAIT - ENDIF - ENDDO MORE - ERASE - ? " LIST OF REMAINING UNCLEARED CHECKS " - ? - ? "CHKNO PAID TO AMOUNT DATE MEMO" - ? - DISPLAY OFF ALL FOR .NOT. CAN CHKNO, PAYTO, AMT, DATE, TRIM(MEMO) - WAIT - USE - RELEASE C:CAN, ANSWER, MORE, WAIT - * NO VARIABLES PASSED BACK TO CHXMENU.CMD - - * - test for reconcile with bank statement - CASE ACTION='4' - * - compute balances - * COMMANDS TO RECONCILE BALANCE WITH BANK STATEMENT - ERASE - USE CHECKS - @ 5,5 SAY ' PROGRAM TO RECONCILE WITH BANK STATEMENT ' - @ 8,15 SAY 'CALCULATING BALANCE NOW ' - SUM AMT TO OUTSTAND FOR .NOT. CAN - * - display total of outstanding checks - @ 13,0 SAY 'TOTAL OUTSTANDING CHECKS = $' - @ 13,33 SAY OUTSTAND - STORE 0.00 TO BANK:BAL - * - request ending balance from check book - @ 15,0 SAY 'ENTER ENDING BALANCE FROM BANK STATEMENT' GET BANK:BAL - READ - @ 17,0 SAY 'APPARENT BALANCE = $' - @ 17,20 SAY BANK:BAL-OUTSTAND - DO CASE - CASE BANK:BAL-OUTSTAND > 0 - @ 19,10 SAY 'CHXCANC.CMD WILL LIST UNCLEARED CHECKS ' - CASE BANK:BAL-OUTSTAND = 0 - @ 19,10 SAY 'CHECKS.DBF AND BANK STATEMENT EXACTLY BALANCE ' - CASE BANK:BAL-OUTSTAND < 0 - @ 19,10 SAY 'USE CHXDEPOS.CMD TO ADJUST ACCOUNT FOR INTEREST OR FEES ' - @ 21,10 SAY 'LAST 12 DEPOSITS LISTED HERE ' - USE DEPOSITS - GO BOTTOM - SKIP -11 - LIST OFF NEXT 12 DATE,'$',STR(AMT,8,2),PAIDFROM - ENDCASE - RELEASE BANK:BAL, OUTSTAND - USE - ? - ? ' ready to return to main menu ' - WAIT - * NO VARIABLES PASSED BACK TO CHXMENU.CMD - - * - non-valid entry to the menu and ring bell - OTHERWISE - ERASE - @ 20,5 SAY 'ENTRY MUST BE BETWEEN 0 AND 4 '+CHR(7) - ENDCASE -ENDDO -RETURN -* EOF CHXMENU.CMD - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/CMAIN.CMD b/software/CPM/tosort/Dbase41/CMAIN.CMD deleted file mode 100644 index f7c7de8..0000000 --- a/software/CPM/tosort/Dbase41/CMAIN.CMD +++ /dev/null @@ -1,243 +0,0 @@ -* Program CMAIN.cmd -* Author joe stegman for Ashton-Tate -* Date 23 Feb 1983 - -* Sample program for dBASE II(tm) release 2.4 -* Please make any changes to these programs to suit your needs. - -* CMAIN.cmd This program is a tickle calendar file program. Any kind -* of data may be stored in the data base. The recall may be by tickle date or -* by a keyword of up to 10 char. - -* The report generated by the program is using the report verb of dBASE II. -* The report sequence is by TICKLE date or KEYWORD. Other reports could be -* generated to list records in any other sequence or another format. - -* The database files: First the TEXT file -* TEXT.dbf holds all the following data for the entries. -* Contact name 25 char (10 characters for the KEY) -* Company name 25 char (10 characters for the KEY) -* Address 30 char -* City 20 char -* State 2 char -* Zip code 10 char (99999-9999) -* Phone number 12 char (999/999-9999) -* Your Initials 3 char -* Entry Date 8 char MM/DD/YY -* Tickle Date 8 char MM/DD/YY -* Line one 50 char This is the text data -* Line two 50 char second line of text data -* Keyword 10 char used for specific recall... - -* KEYWORD.ndx - keyword+$(tkl:date,7,2)+$(tkl:date,1,2)+$(tkl:date,4,2) -* places the file in keyword order then tickle date - -* TICKLE.ndx - $(tkl:date,7,2)+$(tkl:date,1,2)+$(tkl:date,4,2) -* places file in chronological order by tickle date - -* uses the following command and other dBASE II support files: -* cprint.cmd Prints a report sequenced by the index file selected. -* appecard.fmt Format file for appending new cards to database -* editcard.fmt Format file for editing existing cards in database -* tickle.frm Report format file -* text.dbf Datebase of tickle cards -* tickle.ndx Tickle date index -* keyword.ndx Keyword&tickle date index - -** -** Begin command file -** - -clear -set talk off - -* Load the date test routine into memory and set the call address -LOAD datetest -SET CALL TO 42240 - -ERASE -* Read the current date, then set the system date -STORE DATE() TO tmp:date -DO WHILE DATE() = '00/00/00' - @ 5,5 SAY "Please enter Today's Date (MM/DD/YY) "; - GET tmp:date PICT '99/99/99' - READ - * erase any error message - @ 5,60 - * test the date, if not correct display an error message, reprompt - CALL tmp:date - IF tmp:date = ' ' - @ 5,60 SAY '** Date Invalid **' - ELSE - * use macro expansion to set the system date. - SET date TO &tmp:date - ENDIF -ENDDO - -* open the DBF, NDX files -USE text -SET index TO tickle, keyword -* if look for the tmp:date in the recall fld -* find todays date in the file -STORE $(tmp:date,7,2)+$(tmp:date,1,2)+$(tmp:date,4,2) TO tmp:date -FIND &tmp:date -* if today is not in file, position to record 1 -IF # = 0 - skip -ENDIF -RELE tmp:date -STORE T TO tklindex -* initialize the Index file flag line '' * '' -STORE 5 TO line -* initialize the deleted record counter, used to prompt for PACK.. -STORE 0 TO delcnt - -* This is a forever loop, note the "T" -DO WHILE T - * display the current record and the main menu - ERASE - @ 1,10 SAY "Tickle File Control Screen" - * Do not display any data if no records in file. - IF ##0 - @ 2,54 SAY "Deleted (T/F)" - @ $,$+3 SAY * USIN 'X' - @ 3, 0 SAY "Contact " +contact - @ 3,54 SAY "Your Initials " +initials - @ 4, 0 SAY "Company " +company - @ 4,54 SAY "Entry Date " +e:date - @ 5, 0 SAY "Address " +address - @ 5,54 SAY "Tickle Date " +tkl:date - @ 6, 0 SAY "City " +city - @ 6,54 SAY "Keyword " +keyword - @ 7,53 SAY "* Indicates Index" - @ 7, 0 SAY "State " +state - @ 7,14 SAY "Zip " +zip - @ 8, 0 SAY "Phone " +Phone - @ 10, 2 SAY "Comments " +line1 - @ 11,12 SAY line2 - @ line,53 SAY '*' - ENDIF - @ 18,0 SAY; -' A)ppend new cards D)elete this card F)ind card' - @ 19,0 SAY; -' E)dit existing cards R)ecall this card S)et INDEX' - @ 20,0 SAY; -' P)rint range of cards Q)uit to dBASE II' - @ 21,0 SAY; -' > skip forward one card < skip backward one card' - @ 23,0 SAY 'Enter an option from the above menu ' - STORE ' ' TO option - DO WHILE .not. option$'AEDRPQ<>FS' - @ 23,35 GET OPTION PICT '!' - READ - ENDDO - - @ 23,0 SAY ' ' - DO CASE - CASE option='Q' - IF delcnt > 0 - * if there were some records deleted, find out if they should be packed - INPUT 'Do you want to PACK the database file(Y/N) ?' TO ans - IF ans - SET index TO tickle,keyword - ? 'Using PACK to remove cards marked for deletion.' - PACK - ENDIF - ENDIF - USE - RELE all - RETURN - - CASE option='A' - * append records to the tickle file using full screen display - * the format file allows the program to alter only the required info - * leaving other info for display only. - SET format TO Appecard - APPEND - SET format TO - - CASE option='E' - * now that some records have been appended to the data file, we can go - * into the edit for back to the selection line. - SET format TO Editcard - * edit the current record in the index... - EDIT # - SET format TO - - * Edit in this form allows the user to edit any record by moving forward - * or backward in the file. - - CASE option='D' - * Delete current card displayed on screen - * don't need to do this if the record is already marked DELETE - IF .not. * - delete - STORE delcnt +1 TO delcnt - ENDIF - - CASE option='R' - * Recall current card displayed on screen - * only need to do this if the record is marked DELETE - IF * - recall - STORE delcnt -1 TO delcnt - ENDIF - - CASE option='F' - * prompt for the card to find - STORE ' ' TO lookup - STORE '99/99/99' TO pictchar - IF .not. tklindex - * KEYWORD index set so look for a keyword - @ 22,0 SAY 'Find is based on KEYWORD.' - STORE 'XXXXXXXXXX' TO pictchar - ELSE - @ 22,0 SAY 'Find is based on TICKLE DATE.' - ENDIF - DO WHILE lookup = ' ' .or. # = 0 - @ 23,0 SAY 'Enter the keyword to find, press return to abort find '; - GET lookup PICT '&pictchar' - read - STORE TRIM(lookup) TO lookup - IF tklindex - CALL lookup - STORE $(lookup,7,2)+$(lookup,1,2)+$(lookup,4,2) TO lookup - ENDIF - IF lookup#' ' - FIND &lookup - ENDIF - ENDDO - - - CASE option='S' - * Swith the index between the tickle/keyword indexes - IF tklindex - SET index TO keyword,tickle - STORE F TO tklindex - STORE 6 TO line - ELSE - SET index TO tickle,keyword - STORE T TO tklindex - STORE 5 TO line - ENDIF - - CASE option='P' - * Print the cards in recall or keyword order. - DO cprint - rele strtdate, stopdate, lkupkey, expression - - - CASE option='>' - * skip forward - SKIP - - CASE option='<' - * skip backward - SKIP -1 - - ENDCASE - -ENDDO -return -* CMAIN.cmd EOF - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/CPRINT.CMD b/software/CPM/tosort/Dbase41/CPRINT.CMD deleted file mode 100644 index 4adc643..0000000 --- a/software/CPM/tosort/Dbase41/CPRINT.CMD +++ /dev/null @@ -1,115 +0,0 @@ -* Program CPRINT.cmd 01 March 1983 -* COPYRIGHT (c) 1983 ASHTON-TATE -* Programmed by joe stegman for dBASE II(tm) release 2.4 -* Called from CMAIN.cmd - -* This program will print tickle cards from the TEXT database file. -* The sequence of the report is based on the index in use when this command -* file is executed. If sequence is by KEYWORD then the user is prompted to -* enter a keyword to FIND, then a range of dates to print for the keyword. -* If the TICKLE.ndx file is set then the user will be prompted for a range -* of dates to print. Then all cards falling within that range will be -* printed. - -* clear menu from screen - @ 18,0 - @ 19,0 - @ 20,0 - @ 21,0 - @ 22,0 -* erase the prompt line - @ 23,0 SAY ' ' -* initialize the KEYWORD expression used in the report command - STORE ' ' TO expression,lkup - STORE # TO rec:no - IF .not. tklindex - * Printing report based on a keyword - STORE '.and. !(KEYWORD) = lkupkey' TO expression - STORE ' ' TO lkupkey - STORE F TO ok - DO WHILE .not. ok - STORE T TO ok - STORE ' ' TO lkupkey - @ 19,0 SAY 'Enter keyword to report on, or (/) to exit '; - GET lkupkey PICT '!!!!!!!!!!' - READ - IF lkupkey='/' - rele expression, lkupkey, ok, lkup - return - ENDIF - FIND '&lkupkey' - @ 19,55 - IF #=0 - @ 19,55 SAY '** Keyword Not Found **' - STORE F TO ok - ENDIF - ENDDO - ENDIF -* read the dates... But only if the user wants to continue -* or if the index is set to the tickle index. - -* set the index to tickle to test for a valid date entry - set index to tickle,keyword - STORE ' / / ' TO strtdate,stopdate - STORE F TO ok - DO WHILE .not. ok - STORE T TO ok - @ 21,0 SAY 'Enter Start date for range of cards to print '; - GET strtdate PICT '99/99/99' - READ - IF strtdate=' / / ' - * time to return to cmain - RELE startdate,stopdate,lkupdate,lkupkey,ok - RETURN - ENDIF - STORE $(strtdate,7,2) +$(strtdate,1,2) +$(strtdate,4,2) TO lkupdate - FIND &lkupdate - IF #=0 - @ 21,55 SAY '** Date Not In Index' - STORE F TO ok - ENDIF - ENDDO -* get the stop date for the range - STORE strtdate TO stopdate - STORE F TO ok - DO WHILE .not. ok - STORE T TO ok - @ 22,0 SAY 'Enter Stop date of range of cards to print '; - GET stopdate PICT '99/99/99' - read - IF stopdate < strtdate - @ 22,55 SAY '** Date Invalid **' - STORE F TO ok - ENDIF - ENDDO -* - STORE ' ' TO DVC - DO WHILE .NOT. DVC$'PS' - @ 23,0 SAY 'Want report to P)rinter or to S)creen. Enter P/S ?'; - GET dvc PICT '!' - READ - ENDDO - STORE " " TO dest - IF DVC='P' - STORE 'TO PRINT' TO dest - ENDIF - - IF .not. tklindex - * looking in the Keyword index file - SET index TO keyword,tickle -* STORE lkupkey+lkupdate TO lkupkey - FIND &lkupkey - LOCATE next 65535 for tkl:date >= strtdate .and. !(keyword)=lkupkey - ELSE - FIND &lkupdate - ENDIF - REPORT FORM tickle WHILE tkl:date <= stopdate &expression &dest -ENDIF - -IF dvc='S' - ACCEPT 'Press RETURN to display the main menu ' TO dvc -ENDIF -RELE expression, lkupkey, ok, lkup, strtdate, stopdate, dest, dvc, lkupdate -RETURN -* eof cprint.cmd - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/CREATE.CMD b/software/CPM/tosort/Dbase41/CREATE.CMD deleted file mode 100644 index ab0ed79..0000000 --- a/software/CPM/tosort/Dbase41/CREATE.CMD +++ /dev/null @@ -1,83 +0,0 @@ -* Program.: CREATE.CMD -* Author..: Luis A. Castro. -* Date....: 02/02/83. -* Notice..: Copyright 1983, ASHTON-TATE. -* Notes...: Creates a command file header and footer -* documentation. This is the recommend way to -* document command files. - -SET TALK OFF -SET INTENSITY OFF - -* Replace my name with your name and -* replace our copyright notice with your's. -STORE "Luis A. Castro" TO yourname -STORE "Copyright 1983, ASHTON-TATE" TO notice - -ERASE -? -? '* Program...:' -? '* Author(s).:'+yourname -? '* Date......:' -? '* Notice....:'+notice -? '* Called by.:' -? '* Call(s)...:' -? '* Notes.....:' -@ 0,0 - -* Get program file name... -ACCEPT '* Program...' to filename -IF @('.',filename) > 0 - STORE $(filename,1,@('.',filename)-1) to filename -ENDIF -IF filename=' ' - ERASE - RETURN -ENDIF -STORE !(filename)+'.CMD' TO filename -IF FILE(filename) - @ 10,0 - ? '*** FILE ALREADY EXISTS ***' - CLEAR - RETURN -ENDIF - -* Next, get the rest of the information... -? -ACCEPT '* Date......' TO date -? -ACCEPT '* Called by.' TO called:by -ACCEPT '* Call(s)...' TO calls -ACCEPT '* Notes.....' TO notes - -* Now, create the command file... -ERASE -SET ALTERNATE TO &filename -SET ALTERNATE ON -? '* Program...: '+filename -? '* Author(s).: '+yourname -? '* Date......: '+date -? '* Notice....: '+notice -? '* Called by.: '+called:by -? '* Call(s)...: '+calls -? '* Notes.....: '+notes -? -? '* Set flags go here...' -? 'SET TALK OFF' -? -? '* Store statements follow...' -? "STORE ' ' TO select" -? -? '* ' -? -? '* ' -? 'RELEASE select' -? 'RETURN' -? '* EOF '+filename -? '* ' -SET ALTERNATE OFF - -CLEAR -RETURN -* EOF create.cmd - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/DATER.CMD b/software/CPM/tosort/Dbase41/DATER.CMD deleted file mode 100644 index f2bf382..0000000 --- a/software/CPM/tosort/Dbase41/DATER.CMD +++ /dev/null @@ -1,80 +0,0 @@ -* Program...: DATER.CMD -* Author(s).: "UNKNOWN", modified by Luis A. Castro. -* Date......: 1/12/83. -* Notice....: Copyright 1983, ASHTON-TATE -* Notes.....: Demonstrates converting from calendar date -* to julian date, adding a given number of days, then -* converting back to the calendar date. - -SET TALK OFF -SET BELL OFF -SET INTENSITY OFF -ERASE -@ 2, 0 SAY "C A L E N D A R - J U L I A N C O N V E R S I O N" -@ 3, 0 SAY "========================================" -@ 3,40 SAY "========================================" - -STORE " " TO mdate -DO WHILE mdate=" " - STORE " " TO mdate - @ 5,0 SAY 'Enter calendar date '; - GET mdate PICTURE "99/99/99" - READ - STORE VAL($(mdate,1,2)) TO month - STORE VAL($(mdate,4,2)) TO day - STORE VAL($(mdate,7,2))+1900 TO year - * If you wish to verify the date and the DATESYS - * command file has been executed, type the following: - * POKE 41997,month,day,year - * CALL -ENDDO - -* Convert from CALENDAR to JULIAN... -* What is 395.25??? -STORE INT(30.57*month)+INT(365.25*year-395.25)+day TO julian -* Adjust the julian date if leap year... -IF month > 2 - IF INT(year/4) = year/4 - STORE julian-1 TO julian - ELSE - STORE julian-2 TO julian - ENDIF -ENDIF -@ 6, 0 SAY "The julian date is =" -@ 6,20 SAY julian -STORE 0 TO delta -@ 8,0 SAY "Enter interval in days between dates "; - GET delta PICTURE "999" -READ -STORE julian+delta TO mjulian - -* Convert from JULIAN to CALENDAR... -STORE INT(mjulian/365.26)+1 TO year -STORE mjulian+INT(395.25-365.25*year) TO day -* Calculate extra day for leap year... -IF INT(year/4)*4 = year - STORE 1 TO leapday -ELSE - STORE 2 TO leapday -ENDIF -* Calculate actual number of days... -IF day > (91-leapday) - STORE day+leapday TO day -ENDIF -* Generate actual month, day, and year... -STORE INT(day/30.57) TO month -STORE day-INT(30.57*month) TO day -IF month > 12 - STORE 1 TO month - STORE year+1 TO year -ENDIF - -* Set-up the calendar date and display it... -STORE year-1900 TO year -STORE STR(month,2)+"/"+STR(day,2)+"/"+STR(year,2) TO mdate -@ 10,0 SAY "CALENDAR DATE = "+mdate - -RELEASE leapday,mdate,julian,mjulian,day,month,year,delta -RETURN -* EOF dater.cmd - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/DATESYS.CMD b/software/CPM/tosort/Dbase41/DATESYS.CMD deleted file mode 100644 index 1e14680..0000000 --- a/software/CPM/tosort/Dbase41/DATESYS.CMD +++ /dev/null @@ -1,99 +0,0 @@ -* Program.: DATESYS.CMD -* Author..: Luis A. Castro. -* Date....: 12/6/82. -* Notice..: Copyright 1982, ASHTON-TATE. -* Notes...: To set the system date with a verified date using -* the DATETEST subroutine. This command file works only with -* dBASE II version 2.3B and 2.4 under CP/M 2.2. You may want -* to remove all the comment lines, if you want to make this -* program run faster. -* -* Subroutine DATETEST: -* Memory used.: A410H to A482H. -* Description.: Checks date input, entered through POKEs to -* locations 41997,41998, and 41999. Location 41997 gets the -* month parameter, location 41998 gets the day, and location -* 41999 gets the year. Returns nulls at locations 41997, -* 41998, and 41999 if there is an error in input. This -* subroutine also checks for leap year. -* Note........: This subroutine will always be available through -* a POKE and CALL command once it is loaded, as long as you -* do not execute a SORT command. -* -* Disclaimer: This program is a sample program. The author does -* not claim it to be syntactically correct or complete. The -* author recommends that the user always maintain backup files, -* especially when trying a new program. Any corruption of data -* resulting from the use of this program is the sole respon- -* sibility of the user. -* -SET TALK OFF -SET BELL OFF -SET INTENSITY OFF - -STORE DATE() TO mdate -IF mdate="00/00/00" - * The POKE sequences that follow, load the DATETEST - * subroutine starting at address 42000 decimal. - * I chose the POKE method, because with small - * subroutines it is faster than LOADing. - SET CALL TO 42000 - * 0 1 2 3 4 5 6 7 8 9 - POKE 42000, 58, 14,164,254, 1,218,115,164,254, 32 - POKE 42010, 210,115,164, 58, 15,164,254, 0,218,115 - POKE 42020, 164,254,100,210,115,164, 58, 13,164,254 - POKE 42030, 1,218,115,164,254, 13,210,115,164,254 - POKE 42040, 2,202, 92,164, 14, 4, 33,127,164,190 - POKE 42050, 35,202, 83,164, 13,194, 65,164, 58, 14 - POKE 42060, 164,254, 32,210,115,164,201, 58, 14,164 - POKE 42070, 254, 31,210,115,164,201, 58, 15,164,230 - POKE 42080, 3, 58, 14,164,202,109,164,254, 29,210 - POKE 42090, 115,164,201,254, 30,210,115,164,201, 62 - POKE 42100, 0, 50, 13,164, 50, 14,164, 50, 15,164 - POKE 42110, 201, 4, 6, 9, 11 - - * Next, a prompt is displayed on the screen to get - * the date and the program loops through until a - * valid date is entered. - ERASE - @ 2, 0 SAY 'S Y S T E M D A T E' - @ 3, 0 SAY '========================================' - @ 3,40 SAY '========================================' - - * Initialize the date parameters... - POKE 41997,0,0,0 - - DO WHILE PEEK(41997)=0 - STORE " / / " TO mdate - @ 5,0 SAY 'Enter system date as MM/DD/YY '; - GET mdate PICTURE "99/99/99" - READ - * Now POKE the month,day, and year into - * locations 41997,41998,and 41999 respectively. - POKE 41997,VAL($(mdate,1,2)) - POKE 41998,VAL($(mdate,4,2)) - POKE 41999,VAL($(mdate,7,2)) - CALL - ENDDO - - * If you prefer an input format of DD/MM/YY you would - * substitute the above DO WHILE..ENDDO with - * - * DO WHILE PEEK(41997)=0 - * STORE " / / " TO mdate - * @ 5,0 SAY 'Enter system date as DD/MM/YY '; - * GET mdate PICTURE "99/99/99" - * READ - * POKE 41997,VAL($(mdate,4,2)) - * POKE 41998,VAL($(mdate,1,2)) - * POKE 41999,VAL($(mdate,7,2)) - * CALL - * ENDDO - - * The system date is set at this point. - SET DATE TO &mdate -ENDIF - -RETURN -* EOF DATESYS.CMD - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/DATETEST.HEX b/software/CPM/tosort/Dbase41/DATETEST.HEX deleted file mode 100644 index 6001e97..0000000 --- a/software/CPM/tosort/Dbase41/DATETEST.HEX +++ /dev/null @@ -1,14 +0,0 @@ -:10A5000022AAA57EFE08C274A516011E0DCD80A547 -:10A51000DA74A532B0A52316011E20CD80A5DA7409 -:10A52000A532B1A52316001E64CD80A5DA74A5322C -:10A53000B2A53AB0A5FE02CA5AA50E0421ACA5BE2A -:10A5400023CA51A50DC23FA53AB1A5FE20D274A5DC -:10A55000C93AB1A5FE1FD274A5C93AB2A5E603CA8D -:10A560006BA53AB1A5FE1DD274A5C93AB1A5FE1ED0 -:10A57000D274A5C92AAAA54E2336200DC278A5C932 -:10A58000237EFE20C28CA50600C394A5D630D8FE3B -:10A590000A3FD847237ED630D8FE0A3FD84F788767 -:0AA5A0004787878081BAD8BB3FC906 -:07A5AC000406090B0000008A -:0000000000 - \ No newline at end of file diff --git a/software/CPM/tosort/Dbase41/DBASE.COM b/software/CPM/tosort/Dbase41/DBASE.COM deleted file mode 100644 index 48a2494..0000000 Binary files a/software/CPM/tosort/Dbase41/DBASE.COM and /dev/null differ diff --git a/software/CPM/tosort/Dbase41/DBASEMSG.TXT b/software/CPM/tosort/Dbase41/DBASEMSG.TXT deleted file mode 100644 index 94f8a07..0000000 --- a/software/CPM/tosort/Dbase41/DBASEMSG.TXT +++ /dev/null @@ -1,1321 +0,0 @@ -*DBASE - HELP TEXT FILE DBASEMSG.TXT VERSION 1.12 FOR dBASE II v2.4 - Copyright 1983 Ashton-Tate and RSP, Inc. - - written by Wayne Ratliff, Jim Taylor, and Howard Dickler - - INTRODUCTION - - This entry is intended to give you on-line information about your dBASE -II Database Management System. It explains the disk files you have -received, and gives suggestions on tapping the power now available to you -for data management. Using the on-line HELP in conjunction with your -Manual, you will soon be creating databases and writing command procedures -to do your work. - - - - - - >>>>> type any key to continue <<<<< - - - HOW TO USE THE 'HELP' FACILITY - - Information about your dBASE II system can be obtained by typing -HELP and any of the following key words: (e.g. HELP NEW ) - - UTILITIES FULL-SCREEN LIMITS BACKUP - INSTALL NEW ERRORS CP/M - EXAMPLES FUNCTIONS DBASE HELP RUNTIME - (or any dBASE II command) - - dBASE will then look up the entry for the key word and display it. If -there is no information on the subject then dBASE will say "NO HELP MESSAGES -FOUND". When there is more text to display beyond what's shown, then you -will see the word - -WAITING (like this) - >>>>> type any key to continue. <<<<< - - - The essential dBASE II files on this disk are these: - - DBASE.COM --main system program file - DBASEOVR.COM --all overlays and system messages - DBASEMSG.TXT --this HELP file (not necessary if you never - use HELP) - INSTALL.COM --terminal installation program (not necessary - after terminal is installed). - - Other files on the disk (or on other disks included with the system) -are not essential but are useful as described below: - -*UTILITIES -UTILITY FILES TO WORK WITH YOUR dBASE II SYSTEM: - - STARTUP.CMD --this command file is intended to help you determine if - your terminal is properly installed. Type DO STARTUP - after bringing up dBASE. - SETS.CMD --this command file will restore dBASE to all the - default values of the SET parameters. You may modify - this file to restore your own list of parameters. - DATESYS.CMD --this command file will call an assembly language - routine to check a date for validity, and then set the - dBASE system date. - LABELS.CMD --this command file prints mailing labels. - NAMES.DBF --database used by LABELS. - CREATE.CMD --this command file creates a command file with the - usual and suggested command file documentation. - DATER.CMD --this command file demonstrates converting back and - forth between calendar date and julian date. - DATETEST.HEX --fast assembly-language date checking routine which is - called by several of the example programs. - - - - - ZIP.COM --a program run from CP/M which will greatly speed up - the development of screens for data input and display. - ZIPIN.COM --the terminal installation program for ZIP; run this - program if the terminal does not appear correct while in - ZIP. - ZSCRN.OVL --part of ZIP. - DGEN.OVL --part of ZIP that generates dBASE files. - -*EXAMPLES -Some files that are present with dBASE II are EXAMPLE files (occassionally -on a separate disk). These files are intended to be useful as they are, and -are internally documented well enough for you to customize them to suit your -own purposes. Each suite of programs listed is progressively more involved, -so you can start at a level comfortable to you and work up. The master -program of each group is marked with a '>'. - - TICKLE FILE MANAGEMENT FILES (CARDFILE) - > CMAIN.CMD TEXT.DBF - CPRINT.CMD KEYWORD.NDX - APPECARD.CMD TICKLE.NDX - TICKLE.FRM EDITCARD.FMT - - - CHECKBOOK MANAGEMENT FILES - > CHXMENU.CMD CHXINPUT.FMT - CHXDEPOS.FMT CHXBOOK.MEM - CHECKS.DBF DEPOSITS.DBF - - - - INVENTORY MANAGEMENT FILES - > IMAIN.CMD INVENT.DBF - ISETUP.CMD I'BYNMBR.NDX - INVMAINT.CMD I'BYDESC.NDX - INVQUAN.CMD INV'CONS.FRM - INVREAD.CMD INV'PRTR.FRM - INVRPRT.CMD - - PERSONNEL MANAGEMENT FILES - > EMAIN.CMD EMPLOYEE.DBF - ESETUP.CMD EMPSCRN.FMT - EMP-ENTR.CMD EMP-UPD.FMT - EMP-UPD.CMD EMP-PRT.FRM - EMP-TERM.CMD EMP-CONS.FRM - EMP-RPRT.CMD E'BYNMBR.NDX - EMPLOYEE.MEM E'BYNAME.NDX - -*EXIT -*FULL SCREEN - FULL-SCREEN CURSOR MOVEMENT CODES --ALL COMMANDS - - ctrl-X moves cursor DOWN to the next field (also ctrl-F) - ctrl-E moves cursor UP to the previous field (also ctrl-A) - ctrl-D moves cursor AHEAD one character - ctrl-S moves cursor BACK one character - - ctrl-G deletes the character under the cursor - or deletes the character to the left of cursor - - ctrl-Y blanks out current field to the right of the cursor - ctrl-V toggles between overwrite and INSERT modes - ctrl-W saves any changes made and returns to dBASE (Superbrain ctrl-O) - - IN EDIT MODE - ctrl-U toggles the record DELETE mark on and off - ctrl-C writes current record to disk and ADVANCES to next record - ctrl-R writes current record to disk and BACKS to previous record - ctrl-Q ignores changes to current record asnd returns to dBASE - ctrl-W writes all changes to disk and returns - - IN BROWSE MODE - ctrl-B pans the window RIGHT one field - ctrl-Z pans the window LEFT one field - - IN MODIFY MODE - ctrl-T DELETES current line, moves all lower lines up - ctrl-N INSERTS new line at cursor position - ctrl-C scrolls down a half page - ctrl-W writes all changes to disk and returns to dBASE - ctrl-Q ignores all changes and returns - - IN APPEND MODE - when cursor is in first position of first field will terminate - APPEND command - ctrl-W writes record to disk and moves to next record - ctrl-Q ignores current record and returns to dBASE - - - - - CONTROL KEY STROKES WHEN NOT IN FULL SCREEN - ctrl-P toggles your printer ON and OFF - ctrl-R repeats the last executed dBASE command - ctrl-X clears the command line without executing command - ctrl-H backspace - ctrl-M acts exactly like a carriage return -*INSTALL -In order to use dBASE II's Full-Screen editing facility, your terminal must -be properly installed. Many dBASE formats are pre-installed. If yours is -not, your screen will appear jumbled when you attempt to perform such full -screen operations as APPEND or EDIT. To correct this, you must install -dBASE II by running the dBASE II installation, INSTALL.COM, called from your -system as INSTALL. Since you may diagnose your terminal's status at any -time by running STARTUP.CMD (called from the dBASE II "." prompt by entering -the command DO STARTUP), you would be wise to use it before attempting to -INSTALL dBASE II. It will tell you if you need to run the installation -program, and can be used later to check the results if you do. - - - -*EXIT -*BACKUP -*CP/M - - CP/M OPERATING SYSTEM - This information is applicable to CP/M version 2.2. For most computers -using this operating system, you will need to do the following: - -I. Operating System - - A. Copying the system disk -- - - 1. Place CP/M system disk on drive A and a blank disk on - drive B. - - 2. Format the blank disk with the format utility provided on your - CP/M system disk if necessary. Copy the system tracks to the blank - disk by running the SYSGEN.COM program (or similar program) - provided on your CP/M system disk. - - 3. Use PIP to bring the PIP.COM over to the blank disk. - The syntax is as follows: - - A>PIP B:=A:PIP.COM[OV] - - 4. Put the new disk containing PIP and SYSGEN.COM on drive A and dBASE - system disk on drive B, then type the following: - - A>DIR B: - - 5. Check to see that the following files are displayed: - - DBASE.COM DBASEOVR.COM - DBASEMSG.TXT INSTALL.COM - STARTUP.CMD - - - 6. Type the following: - - A> - A>PIP A:=B:*.*[OV] - - B. CP/M limitations that affect dBASE - - 1. Disk limitations -- - a) With CP/M system disk on drive A, type the following: - A>STAT B: - The disk capacity remaining indicates how much storage - in kilobytes is available for dBASE. - - b) The following equation will allow you to calculate the - number of dBASE records which can be stored on the disk: - - Kilobytes of storage dBASE records will use on disk - = ((recordsize * number of records) + 521) / 1024 - - C. CP/M error messages that may occur -- - The expression "x:" represents the disk drive name. - - - - - - 1. "BDOS ERROR ON x: BAD SECTOR" - An error in reading or writing the disk. Possible - problem may be: - - a) disk format is different from the one the disk - drive is designed to read. - b) disk was not inserted properly in the disk - drive. - c) disk drive malfunctioned when reading the disk. - d) disk is bad due to excessive wear or foreign - particles on the surface of the disk. - - 2. "BDOS ERROR ON x: SELECT" - This error occurs when selecting a disk drive not - available to the computer. - - - - - 3. "BDOS ERROR ON x: READ ONLY" - This error occurs when there is an attempt to write on a - disk that has been given a read-only status. A disk is - assigned a read-only status when the disk drive door has - been opened or when a write-protect tab has been placed - on it. If the disk does not have a write-protect - tab on it, you can use the warm start procedure - (control-C) to reset the disk when in CP/M, or the RESET - command when in dBASE. -*EXIT -*NEW -> New commands and changes to dBASE II version 2.4 - - New commands: - - HELP -- user aid command. - REINDEX -- realigns and updates existing index file. - TEXT -- displays multiple lines of text, terminated by ENDTEXT. - RANK( ) -- function; returns ASCII value of first character. - - Supplemented Commands: - - APPEND,INSERT,EDIT,CREATE -- can use a format file for screen control. - BROWSE -- can be given a list of fields to work with. - DISPLAY STATUS -- shows databases/indexes in use and SET settings. - READ & REPLACE -- can be directed not to perform disk accesses - when non-key data is changed. - RELEASE -- can release subsets of memory variables. - RESTORE -- can restore additively to existing memory variables. - SAVE -- can save subsets of memory variables. - SET RAW ON -- eliminates extra spaces in DISPLAY and ? commands. - UPDATE -- replace clause can have WITH phrases. -*EXIT -*? -*?? -> ? -- Evaluates and displays the value of an expression. In command - file (and elsewhere) can be used without expression to space down a - line at output. - - . ? 6/3 - 2 - . ? 'CITY' - CITY - . ? CITY (field of file in use) - Managua - -> ?? -- Same as ?, but displays result on same line as entry. -*EXIT -*@ -> @ -- Displays user formatted data on the screen or printer at specified - x,y coordinates (x = line, y = column ). - - Syntax: @ [SAY [USING '']] - [GET [PICTURE '']] - - @ 3,23 SAY AMOUNT * 1.06 USING '$$$,$$$.99' - @ 14,23 SAY "ENTER PHONE" GET PHONE PICTURE '(###)###-####' - @ LINE+2,45 SAY TOTAL USING '99999.99' -*EXIT -*ACCEPT -> ACCEPT -- Prompts user to enter character string information into a - designated memory variable. - - Syntax: ACCEPT [''] TO - - . ACCEPT "What is the worst sin?" to SIN - What is the worst sin?: [user's response stored to SIN] - . ? SIN - [user's response displayed] -*EXIT -*APPEND -> APPEND FROM [FOR ] or -> APPEND FROM [SDF] [DELIMITED] [FOR ] - -- appends data FROM a database or file in System Data Format - file to the database in use. Records marked for deletion in - FROM will not be appended. - - e.g., APPEND FROM MAILLIST FOR NAME = 'N' - APPEND FROM TEST.TXT DELIMITED - -> APPEND BLANK -- appends a blank, i.e. empty, record to file in use. - -> APPEND -- allows user to add new records to database in use. (If index is - also in use, the index file is automatically updated). -*EXIT -*BROWSE -> BROWSE [FIELDS ] -- Brings up Full-screen viewing and editing - of the database in use. -*EXIT -*CANCEL -> CANCEL -- In a command file, stops command file execution and - returns user to dBASE "." prompt. - - Command file fragment: - ACCEPT "What should this humble machine do next?" to NEXT - IF NEXT = 'Q' - CANCEL - ENDIF -*EXIT -*CHANGE -> CHANGE -- Permits Non-Full-Screen editing of database in use by field. Hit - ESCape key to terminate CHANGE mode. - - Syntax: CHANGE [] FIELD [FOR ] - - . CHANGE ALL FIELD ZIP FOR ZIP = '90045' - RECORD: 00123 - ZIP: 90045 - CHANGE? - (Enter the characters to be changed and hit return. - Add new data at the TO prompt, or hit return to go to - the next appropriate record.) -*EXIT -*CLEAR -> CLEAR -- Closes all database in use, releases all memory variables, - and Selects Primary work area. -> CLEAR GETS -- makes dBASE forget about all GET statements still - active, but without erasing the screen. -*EXIT -*COPY -> COPY -- Copies the database in use or only its structure TO another - file. COPY will create the TO if it does not yet exist, - but will destroy an already existing file of that name. Will not - copy records marked for deletion. - - Syntax: COPY TO [] [FIELD ] [FOR ] - COPY TO [SDF] [DELIMITED [WITH ]] [FOR ] - COPY TO STRUCTURE [FIELD ] -*EXIT -*COUNT -> COUNT -- Counts the number of records in database file in use. - - Syntax: COUNT [] [FOR ] [TO ] - e.g., COUNT NEXT 25 FOR GRADE > 'B-' TO DEANLST -*EXIT -*CREATE -> CREATE [] -- Creates a new database file. User will be prompted - for file structure. -*EXIT -*DELETE -> DELETE FILE -- deletes named file. - -> DELETE [] [FOR ] -- marks record(s) for deletion. - Records marked for deletion (with *) will not be erased - until the PACK command is given. Records may also be - marked for deletion by record number. - - e.g., DELETE ALL FOR COMPANY = 'ZMB' - DELETE RECORD 15 -*EXIT -*DISPLAY -> DISPLAY FILES [ON ] [LIKE ] -- lists - files on drive. - e.g., DISPLAY FILES ON B LIKE *.CMD - -> DISPLAY [] [FOR ] [] [FIELDS ] [OFF] - -- displays variables, or records of file in use. - e.g., DISPLAY NEXT 10 FOR PHONE = '415' - -> DISPLAY STRUCTURE -- displays field names, types, lengths, and decimals - (structure) of file in use. - -> DISPLAY MEMORY -- displays names, types, and values of all currently - defined memory variables. - -> DISPLAY STATUS -- lists which databases are open, the system date, indexes - in use, and current parameters SET. -*EXIT -*DO -*ENDCASE -*ENDDO -*LOOP -> DO -- opens and executes specified command file. - -> DO WHILE -- used in command files to open a structured loop. - Commands in between are executed so long as the - [LOOP] DO WHILE is found to be True. - - ENDDO - e.g. USE MAILLIST - DO WHILE .NOT. EOF - ? NAME - ? PHONE - SKIP - ENDDO - - - - - - - LOOP causes command file to jump processing back to the DO WHILE - command. - e.g. USE MAILLIST - DO WHILE .NOT. EOF - IF ZIP = '90005' - SKIP - LOOP - ENDIF - ? NAME - ? PHONE - SKIP - ENDDO -*CASE - - - -> DO CASE -- used in command file to choose one and only one of several - possible execution paths. OTHERWISE clause optional, and executes - when no CASE is true. ENDCASE is needed to close command. - - e.g. USE MAILLIST - ACCEPT "WHICH MENU OPTION DO YOU PREFER?" to CHOICE - DO CASE - CASE Choice = '1' - DO Labels - CASE Choice = '2' - DO Addnames - CASE Choice = '3' - DO Edit - OTHERWISE - QUIT - ENDCASE -*EXIT -*EDIT -> EDIT [] -- enables selective editing of database in use by - record number. Requests record number if not supplied. When edit of - particular record has been completed, Ctr-W brings back EDIT's record - number prompt (ENTER RECORD #:). To terminate EDIT mode, answer - record number query with a return. -*EXIT -*EJECT -> EJECT -- causes printer to do a form feed (page eject) if PRINT is SET ON - or FORMAT is SET TO PRINT. When using @ SAY commands for direct page - formatting, EJECT will zero out line and column counters. -*EXIT -*ERASE -> ERASE -- clears the screen. In interactive mode, "." prompt will appear - at top left corner of screen. -*EXIT -*FIND -> FIND -- when using indexed files, positions to first record - indexed by . -*EXIT -*GO -*GOTO -> GO or GOTO -- positions to a specific record or place in the database in - use. Also positions to record number contained in memory variable. - - Syntax: GO or GOTO [RECORD ], , [TOP], [BOTTOM], or -*EXIT -*HELP - dBASE II ON-LINE HELP FACILITY - -Below you will find a list of all dBASE commands. This HELP file contains a -brief synopsis of each command, as well as a picture of that command's -correct syntax. Please remember, however, that HELP file information is -limited, and is only meant to cut down on the number of trips you will have -to make to the dBASE II Manual. - -To access the entry for the dBASE command (or other Help File entry) you -wish to review, merely respond to the dBASE "." prompt by entering HELP - and a return (e.g. HELP CREATE ). The desired -information will appear and then return you to the "." prompt, so you can -go right back to work. In some cases the entry will take up more space than -is provided by a single screen. (This is one of them.) To bring up the -next screen of information, just enter any character at the "WAITING". You -may end the help message by typing ESC twice. - - >>>>>>>>Type 'HELP dBASE ' for other important information. - - -> ? -- displays an expression, variable, or field. -> ?? -- displays an expression list without a preceeding line feed. -> @ -- displays user formatted data on screen or printer. -> ACCEPT -- allows input of character strings into memory variables. -> APPEND -- append information from another dBASE II database or files in - Delimited or System Data format. -> BROWSE -- full screen window viewing and editing of database. -> CANCEL -- cancels command file execution. -> CHANGE -- Non-Full-Screen edit of fields of database. -> CLEAR -- close databases in use and releases all current memory variables. -> CONTINUE -- continue the searching action of a LOCATE command. -> COPY -- creates a copy of an existing database. -> COUNT -- counts the number of records in database which meet some criteria. -> CREATE -- creates new structured database. -> DELETE -- deletes a file or marks records for deletion. -> DISPLAY -- displays files, database records or structure, memory - variables, or status. -> DO -- executes command files or structured loops in command files. -> EDIT -- allows edit of records in database. -> EJECT -- ejects a page on the printer. -> ELSE -- alternate path of command execution within IF. -> ENDCASE -- terminates a CASE command. -> ENDDO -- terminates a DO WHILE command. -> ENDIF -- terminates an IF command. -> ENDTEXT -- terminates a TEXT command. -> ERASE -- clears the screen. -> FIND -- positions to record corresponding to a key on indexed files. -> GO or GOTO -- positions to a specific record in database. -> HELP -- accesses help file list or entry. -> IF -- allows conditional execution of commands. -> INDEX -- creates an index file. -> INPUT -- allows input of expressions into memory variables. -> INSERT - insert new record within a database. -> JOIN -- joins output of two databases. -> LIST -- lists files, database records or structure, memory variables, and - status. -> LOCATE -- find a record that fits a condition. -> LOOP -- skips to beginning of DO WHILE command. -> MODIFY -- used for creating and editing command files and - modifying structure of existing database. -> NOTE or * -- allows insertion of comments in command file. -> PACK -- erases records marked for deletion. -> QUIT -- exits dBASE and returns to CP/M. -> READ -- displays data and prompting information in full-screen mode. -> RECALL -- erases mark for deletion. -> REINDEX -- updates an existing index file. -> RELEASE -- eliminates unwanted memory variables and releases memory space. -> REMARK -- permits display of any characters. -> RENAME -- rename a file. -> REPLACE -- change information in a record field by field. -> REPORT -- format and display a report of information. -> RESET -- let operating system know that disk has been swapped. -> RESTORE -- retrieves memory variables stored in files. -> RETURN -- ends a command file. -> SAVE -- copies current memory variables to disk file. -> SELECT -- switches between USE files in PRIMARY and SECONDARY areas. -> SET -- sets dBASE control parameters. -> SKIP -- position forwards or backwards in database. -> SORT -- write copy of database sorted on one of the data fields. -> STORE --creates memory variables. -> SUM -- compute and display the sum of field. -> TEXT -- allows output of block of text from a command file. -> TOTAL -- creates summarized copy of database combining information from - specified fields meeting some criteria. -> UPDATE -- allows batch updates of a database. -> USE -- specifies database to USE until next USE command is issued. -> WAIT -- suspends command file processing until user input received. - - - Other key words: (e.g. type 'HELP EXAMPLES' ) - - UTILITIES FULL-SCREEN LIMITS BACKUP - INSTALL NEW ERRORS CP/M - EXAMPLES FUNCTIONS DBASE HELP RUNTIME - -*EXIT -*IF -*ELSE -*ENDIF -> IF -- in command file, permits conditional execution of - commands. ELSE clause is optional. - [ELSE - ] e.g., IF STATE = 'CA' - ENDIF DO INSTATE (command file) - ELSE - DO OUTSTATE (command file) - ENDIF -*EXIT -*INDEX -> INDEX ON TO -- creates an index file for - database in use based upon designated index 'key', i.e., the - . Usually index will be 'keyed' on a field name. -*EXIT -*INPUT -> INPUT [""] TO -- prompts user to enter numeric or - logical information into an already created memory variable. - - e.g., . INPUT 'Prompt user for input' to X - Prompt user for input: 12 - [user input has been stored to X] - ? X - 12 -*EXIT -*INSERT -> INSERT [[BEFORE] [BLANK]] -- inserts a record into the database in - use immediately after or -- with BEFORE -- before the current record. - Presents user with data entry format for file in use unless BLANK - record is requested. -*EXIT -*JOIN -> JOIN -- creates a new database by combining the records of files in - use in Primary and Secondary areas. Records are added where FOR - evaluates as True. Command must be executed from primary area. - Default on FIELD to all. - - Syntax: JOIN TO FOR [FIELDS ] - - e.g., . USE NAMES - . SELECT SECONDARY - . USE MAILLIST - . SELECT PRIMARY - . JOIN TO NAMEML FOR LAST <> S.LAST -*EXIT -*LIST -> LIST FILES [ON ] [LIKE ] -- lists all files on - designated disk. Default to logged disk. - e.g., . LIST FILES ON C LIKE *.CMD - -> LIST [] [FOR ] [] [FIELDS ] [OFF] -- displays - records of file in use. Default value is all records. - e.g., . LIST NEXT 25 NAME, PHONE FOR CONTRIB > 100 - (i.e., NAME and PHONE of next 25 who contributed more than $100.) - -> LIST STRUCTURE -- displays structure of file in use. - -> LIST MEMORY -- lists names and values of all currently defined memory - variables. - -> LIST STATUS -- indicates which database files are open, indexes in use, and - current parameters SET. -*EXIT -*LOCATE -*CONTINUE -> LOCATE [] FOR -- finds first record of database for which FOR - is True. Use CONTINUE to find next such record. (User may - manipulate record before resuming search with CONTINUE.) - - e.g., . LOCATE ALL FOR ZIP >= '95000' .AND. ZIP < '96000' - RECORD: 00123 - . DISPLAY - . CONTINUE - RECORD: 00232 -*EXIT -*MODIFY -> MODIFY STRUCTURE -- allows user to alter the structure of database in use. - This command will destroy all data in the file in use. (To alter - structure without loss of data, use COPY STRUCTURE and APPEND.) - - e.g., . USE NAMES - . COPY STRUCTURE TO TEMP - . USE TEMP - . MODIFY STRUCTURE -- no data lost since file is empty - . APPEND FROM NAMES -- brings in data - . COPY TO NAMES -- destroy file with old structure - . USE NAMES -- opens new file - . DELETE FILE TEMP - -> MODIFY COMMAND -- provides full screen facility for - creating and editing command (.CMD), text (.TXT), and format (.FMT) - files. -*EXIT -*NOTE -> NOTE or * -- permits the insertion of comments into a command file. - Comments following NOTE or * in file will not be read or executed. -*EXIT -*PACK -> PACK -- erases records marked for deletion in database in use. If indexes - are in use, they will be brought up to date. -*EXIT -*QUIT -> QUIT [TO ] -- exits dBASE and returns user to operating - system; will start up system level programs as option. -*EXIT -*READ -> READ -- used in command files to enter full-screen mode for entry or - editing of variables. The Full-screen prompts and window are created - by @ SAY commands with GET phrases. - - Format file fragment: STORE ' ' TO name - STORE ' ' TO phone - @ 4,4 SAY 'Name' GET name - @ 6,4 SAY 'Phone' GET phone PICTURE '(###)###-####' - READ -*EXIT -*RECALL -> RECALL [] [FOR ] -- reinstates record(s) marked for deletion - within database in use. Default value is current record. -*EXIT -*REINDEX -> REINDEX -- allows update of index files not automatically 'reindexed' - after alteration of database file. - - e.g., . USE MAILLIST INDEX ZIP - . APPEND - [append operations performed] - . SET INDEX TO name - . REINDEX -*EXIT -*RELEASE -> RELEASE -- eliminates unwanted memory variables and opens memory space for - further use. ( uses ? to mask any single character, * to - mask all remaining characters. - - Syntax: RELEASE [], or [ALL] - RELEASE ALL LIKE - RELEASE ALL EXCEPT - - e.g., where N, N1, N2, N10, V7 are variables in use. - RELEASE ALL LIKE N? [ N10, V7, will remain] - RELEASE ALL LIKE N?? [ V7 will remain] - RELEASE ALL EXCEPT ?1* [ N1, N10 will remain] -*EXIT -*REMARK -> REMARK -- permits the display of any characters. In command file - character entry is output. - - . REMARK abracadabara!!! - abracadabara!!! -*EXIT -*RENAME -> RENAME TO -- permits renaming of file in CP/M - directory. Unless otherwise indicated, dBASE assumes that file type - is DBF. - . RENAME REVIEW.CMD TO REVIEW.BAK -*EXIT -*REPLACE -> REPLACE -- allows user to replace contents of specified fields of database - in use. If index file is keyed on field targeted for update, index in - use will be automatically updated. Default is current - record. - - Syntax: REPLACE [] WITH [, WITH ] - [FOR ] - - e.g., . USE MXPROJ - . REPLACE ALL COST WITH COST*1.1 FOR ITEM = 'ELECTRIC' -*EXIT -*REPORT -> REPORT -- used for creating a Report Form file (FRM) for displaying - specified information from a database in a user-defined format. - Outputs results to screen or printed page. - - Syntax: REPORT [FORM
] [] [TO PRINT] [FOR ] [PLAIN] -*EXIT -*RESET -> RESET [] -- use this command after changing discs on any drive - other than that containing dBASE, resets the CP/M bit map, allowing - uninterrupted operation of dBASE program. Close all files before - issuing a RESET. -*EXIT -*RESTORE -> RESTORE FROM [ADDITIVE] -- retrieves and activates the set of - memory variables previously SAVEd to a memory file. ADDITIVE allows - you to keep currently defined variables intact, otherwise they are - lost. -*EXIT -*RETURN -> RETURN -- may be used in a command file to return control to the command - file which called it or to dBASE "." prompt if user called it. -*EXIT -*SAVE -> SAVE TO [ALL LIKE ] [ALL EXCEPT ] - -- copies all memory variables currently in use, or only those - specified by , to designated memory (MEM) file. - uses ? to mask any single characters and * to mask all remaining - characters. - - e.g., where N1, N2, N10, V1, V2, V10 are current variables. - . SAVE TO NUMBER ALL LIKE N* [saves N1, N2, N10] - . SAVE TO NUMBER ALL LIKE N? [saves N1, N2] - . SAVE TO NUMBER ALL EXCEPT ?1* [saves N2, V2, ] -*EXIT -*SELECT -*PRIMARY -*SECONDARY -> SELECT [PRIMARY / secondary] -- allows user to move between the two work - areas dBASE provides, thus permitting user to work with two databases - simultaneously and maintain record pointers in both. Primary area is - active upon bringing up dBASE. -*EXIT -*SET - -> SET -- sets dBASE control parameters. - - Syntax: SET [ON or OFF] - SET TO