Browse Source

Added discs

Per Mårtensson 1 year ago
parent
commit
7c2437a667
100 changed files with 3292 additions and 0 deletions
  1. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.hfe
  2. 0 0
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.img
  3. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.jpg
  4. 0 0
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.txt
  5. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdujeta.com
  6. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx023a.com
  7. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx043a.com
  8. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx083a.com
  9. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx103a.com
  10. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx143a.com
  11. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/dit.com
  12. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/formater.com
  13. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/hit.com
  14. 102 0
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/hitdit.doc
  15. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/makemast.com
  16. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/netm.com
  17. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/park.com
  18. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/setload.com
  19. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/setsys.com
  20. BIN
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/tbdjet.com
  21. 1 0
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/wcsljeta.com
  22. 0 0
      sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.img
  23. 6 0
      sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1-logg.txt
  24. BIN
      sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.hfe
  25. BIN
      sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.img
  26. BIN
      sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.jpg
  27. 0 0
      sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.txt
  28. 6 0
      sw/Bridos/hd_backup/hd_backup-logg.txt
  29. BIN
      sw/Bridos/hd_backup/hd_backup.hfe
  30. BIN
      sw/Bridos/hd_backup/hd_backup.img
  31. BIN
      sw/Bridos/hd_backup/hd_backup.jpg
  32. 0 0
      sw/Bridos/hd_backup/hd_backup.txt
  33. 6 0
      sw/Bridos/network2/network2-logg.txt
  34. BIN
      sw/Bridos/network2/network2.hfe
  35. 0 0
      sw/Bridos/network2/network2.img
  36. BIN
      sw/Bridos/network2/network2.jpg
  37. 6 0
      sw/Bridos/posabmeny/posabmeny-logg.txt
  38. BIN
      sw/Bridos/posabmeny/posabmeny.hfe
  39. BIN
      sw/Bridos/posabmeny/posabmeny.img
  40. BIN
      sw/Bridos/posabmeny/posabmeny.jpg
  41. 0 0
      sw/Bridos/posabmeny/posabmeny.txt
  42. 6 0
      sw/Bridos/sysdir/sysdir-logg.txt
  43. BIN
      sw/Bridos/sysdir/sysdir.hfe
  44. BIN
      sw/Bridos/sysdir/sysdir.img
  45. BIN
      sw/Bridos/sysdir/sysdir.jpg
  46. 20 0
      sw/Bridos/sysdir/sysdir.txt
  47. 6 0
      sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc-logg.txt
  48. BIN
      sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc.hfe
  49. BIN
      sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc.img
  50. BIN
      sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc.jpg
  51. 0 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.hfe
  52. 0 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.img
  53. 0 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.jpg
  54. 0 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.log
  55. 75 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.txt
  56. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bioskrnl.rel
  57. 807 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bioskrnl.z80
  58. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bnkbdos3.spr
  59. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bnkbios3.spr
  60. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/boot.rel
  61. 176 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/boot.z80
  62. 29 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/callvers.asm
  63. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/ccp.com
  64. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/chario.rel
  65. 709 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/chario.z80
  66. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/copysys.com
  67. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/cpm3.sys
  68. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/cpmldr.rel
  69. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/date.com
  70. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/device.com
  71. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dir.com
  72. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dirlbl.rsx
  73. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dit.com
  74. 209 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dump.asm
  75. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dump.com
  76. 47 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/echovers.asm
  77. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/ed.com
  78. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/erase.com
  79. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/errors.com
  80. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/extmem.rel
  81. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/fastcopy.com
  82. 497 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/fdrives.asm
  83. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/fdrives.rel
  84. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/formater.com
  85. 158 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gcf.dat
  86. 158 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gcw.dat
  87. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gencom.com
  88. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gencpm.com
  89. 158 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gencpm.dat
  90. 4 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/genfbios.sub
  91. 4 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/genwbios.sub
  92. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/get.com
  93. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/help.com
  94. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/help.hlp
  95. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hexcom.com
  96. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hist.utl
  97. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hit.com
  98. 102 0
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hitdit.doc
  99. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/initdir.com
  100. BIN
      sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/ios.rel

BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.hfe


File diff suppressed because it is too large
+ 0 - 0
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.img


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.jpg


+ 0 - 0
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1.txt


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdujeta.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx023a.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx043a.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx083a.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx103a.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/bdx143a.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/dit.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/formater.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/hit.com


+ 102 - 0
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/hitdit.doc

@@ -0,0 +1,102 @@
+
+               HIT och DIT
+
+
+     HIÔ  ocè DIÔ {ò ² prograí f|ò snabâ ocè enkeì |verf|rinç  aö �
+filer mellan JET-datorer.
+
+     \verf|ringeî  skeò viá eî bildsk{rmskabeì soí ansluteó pý då �
+seriellá printer/Modeí portarna®  \verf|ringeî skeò blockvió  12¸ �
+byteó  peò  blocë meä kontrollsummá LRC f|ò varjå blocë  ocè  meä �
+automatisk kontroll av antal block, hastigheten {r 38400 Baud.
+
+     HIÔ {ò programmeô soí arbetaò é deî mottagandå datorn.
+
+Startaó  meä kommandoô HIT¬  oí mottagná fileò skalì placeraó  pý �
+defaulô drive¬  elleò meä 'HIÔ Drive:§ oí filerná ská placeraó pý �
+annaî  drivå {î default®  HIÔ skriveò kontinuerligô uô vilkeî fiì �
+soí  {ò undeò |verf|rinç ocè angeò vilká fileò soí haò  |verf|rtó �
+korrekt®  HIÔ avslutaó meä CTRÌ C®  Observerá atô HIÔ raderaò ev® �
+tidigarå fileò oí deô ankommeò nyá meä sammá namn.
+
+Exempel:
+
+A>B:HIT B:
+
+HIT ( 1.1 ) JET-80 CPM 3.0 
+
+Reciving file QQ      .SUB   Old file deleted.   File transferred
+Reciving file SS      .SUB   Old file deleted.   File transferred
+Reciving file C       .SUB   Old file deleted.   File transferred
+Reciving file PROFILE .SUB   Old file deleted.   File transferred
+
+     4 Files transferred
+
+No data   -- waiting-- 
+Reciving file M80     .COM   Old file deleted.  File transferred
+Reciving file M80     .REL   Old file deleted.  File transferred
+Reciving file MATH    .H     Old file deleted.  File transferred
+
+     7 Files transferred
+
+HIT terminated due to operator request
+
+    7 Files transferred
+
+HIT end
+.PA
Š     DIÔ {ò programmeô soí arbetaò é deî s{ndandå datorn.
+
+Startaó  meä kommandoô 'DIÔ Filnamn'®  F|ò filnamî  g{lleò  sammá �
+syntaø  soí  é PIÐ ocè DIR¬  D.v.ó '?§ ocè '*§ kaî  anv{ndaó  soí �
+"wildcard"®  S{ndningeî inledó meä atô samtligá fileò soí matchaò �
+"Filnamn¢ skrivs® DIÔ kaî avbrytaó meä CTRÌ C.
+
+Exempel:
+
+A>B:DIT *.Z80
+
+DIT ( 1.0 )   JET-80  CP/M 3.0
+
+Files to be sent:
+
+CHARIO  .Z80   BOOT    .Z80   IOS     .Z80   WDRIVES .Z80  
+FDRIVES .Z80   BIOSKRNL.Z80   
+No answer -waiting 
+
+Sending file A:CHARIO  .Z80  
+
+Exit due to fatal error
+
+No FILES transferred
+     2 Errors
+
+DIT end
+
+
+
+A>B:
+B>DIT *.Z80
+
+DIT ( 1.0 )   JET-80  CP/M 3.0
+
+----  NO Files  ---  
+
+
+B>DIT A:*.Z80
+
+DIT ( 1.0 )   JET-80  CP/M 3.0
+
+Files to be sent:
+
+BOOT    .Z80   IOS     .Z80   WDRIVES .Z80   FDRIVES .Z80   BIOSKRNL.Z80   
+CHARIO  .Z80   
+
+Sending file A:CHARIO  .Z80  File transferd
+Sending file A:BIOSKRNL.Z80  File transferd
+Sending file A:FDRIVES .Z80  
+
+Exit due to operator request
+
+     2 Files transferred
+DIT end
Š
+

BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/makemast.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/netm.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/park.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/setload.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/setsys.com


BIN
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/tbdjet.com


+ 1 - 0
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.1/wcsljeta.com

@@ -0,0 +1 @@
+裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹裹

File diff suppressed because it is too large
+ 0 - 0
sw/Bridos/Diskett2_network_utilies_ver1.1/Diskett2_network_utilies_ver1.img


+ 6 - 0
sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1-logg.txt

@@ -0,0 +1,6 @@
+Found format "ibm"
+PLL Parameters: period_adj=5% phase_adj=60%
+T0.0-76.1: IBM-MFM HD (8 1024-byte sectors, 8192 bytes)
+T77.0-77.1: Unformatted
+T78.0-79.1: Unformatted*
+T80.0-83.1: Unformatted

BIN
sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.hfe


BIN
sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.img


BIN
sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.jpg


+ 0 - 0
sw/Bridos/diskett_3_1_bridos_util_save_config_ver_1.1/diskett_3_1_bridos_util_save_config_ver_1.1.txt


+ 6 - 0
sw/Bridos/hd_backup/hd_backup-logg.txt

@@ -0,0 +1,6 @@
+Found format "ibm"
+PLL Parameters: period_adj=5% phase_adj=60%
+T0.0-76.1: IBM-MFM HD (8 1024-byte sectors, 8192 bytes)
+T77.0-77.1: Unformatted
+T78.0-79.1: Unformatted*
+T80.0-83.1: Unformatted

BIN
sw/Bridos/hd_backup/hd_backup.hfe


BIN
sw/Bridos/hd_backup/hd_backup.img


BIN
sw/Bridos/hd_backup/hd_backup.jpg


+ 0 - 0
sw/Bridos/hd_backup/hd_backup.txt


+ 6 - 0
sw/Bridos/network2/network2-logg.txt

@@ -0,0 +1,6 @@
+Found format "ibm"
+PLL Parameters: period_adj=5% phase_adj=60%
+T0.0-76.1: IBM-MFM HD (8 1024-byte sectors, 8192 bytes)
+T77.0-77.1: Unformatted
+T78.0-79.1: Unformatted*
+T80.0-83.1: Unformatted

BIN
sw/Bridos/network2/network2.hfe


File diff suppressed because it is too large
+ 0 - 0
sw/Bridos/network2/network2.img


BIN
sw/Bridos/network2/network2.jpg


+ 6 - 0
sw/Bridos/posabmeny/posabmeny-logg.txt

@@ -0,0 +1,6 @@
+Found format "ibm"
+PLL Parameters: period_adj=5% phase_adj=60%
+T0.0-76.1: IBM-MFM HD (8 1024-byte sectors, 8192 bytes)
+T77.0-77.1: Unformatted
+T78.0-79.1: Unformatted*
+T80.0-83.1: Unformatted

BIN
sw/Bridos/posabmeny/posabmeny.hfe


BIN
sw/Bridos/posabmeny/posabmeny.img


BIN
sw/Bridos/posabmeny/posabmeny.jpg


+ 0 - 0
sw/Bridos/posabmeny/posabmeny.txt


+ 6 - 0
sw/Bridos/sysdir/sysdir-logg.txt

@@ -0,0 +1,6 @@
+Found format "ibm"
+PLL Parameters: period_adj=5% phase_adj=60%
+T0.0-76.1: IBM-MFM HD (8 1024-byte sectors, 8192 bytes)
+T77.0-77.1: Unformatted
+T78.0-79.1: Unformatted*
+T80.0-83.1: Unformatted

BIN
sw/Bridos/sysdir/sysdir.hfe


BIN
sw/Bridos/sysdir/sysdir.img


BIN
sw/Bridos/sysdir/sysdir.jpg


+ 20 - 0
sw/Bridos/sysdir/sysdir.txt

@@ -0,0 +1,20 @@
+             :              : $           : 17          
+             : <            :              : SPSP `V
+<            :              :              :             
+             : $           : 17           :             
+<            :              : SPSP `V : <           
+             :              :              :             
+$           : 17           :              : <           
+             : SPSP `V : <            :             
+             :              :              : $          
+17           :              : <            :             
+SPSP `V : <            :              :             
+User 8
+P`LPRV 1   : P          : P`LPRV 1   : P         
+P`LPRV 1   : P          : P`LPRV 1   : P         
+User 16
+<0P1      : |            : <0P1      : |           
+<0P1      : |            : <0P1      : |           
+User 28
+PRV1       :              : PRV1       :             
+PRV1       :              : PRV1       :             

+ 6 - 0
sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc-logg.txt

@@ -0,0 +1,6 @@
+Found format "ibm"
+PLL Parameters: period_adj=5% phase_adj=60%
+T0.0-76.1: IBM-MFM HD (8 1024-byte sectors, 8192 bytes)
+T77.0-77.1: Unformatted
+T78.0-79.1: Unformatted*
+T80.0-83.1: Unformatted

BIN
sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc.hfe


BIN
sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc.img


BIN
sw/Bridos/wordstar_3.0_supercalc/wordstar_3.0_supercalc.jpg


+ 0 - 0
sw/CPM_Plus_3.0_snr_1113-59590/CPM_Plus_3.0_snr_1113-59590.hfe → sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.hfe


+ 0 - 0
sw/CPM_Plus_3.0_snr_1113-59590/CPM_Plus_3.0_snr_1113-59590.img → sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.img


+ 0 - 0
sw/CPM_Plus_3.0_snr_1113-59590/CPM_Plus_3.0_snr_1113-59590.jpg → sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.jpg


+ 0 - 0
sw/CPM_Plus_3.0_snr_1113-59590/CPM_Plus_3.0_snr_1113-59590.log → sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.log


+ 75 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590.txt

@@ -0,0 +1,75 @@
+0:
+bioskrnl.rel
+bioskrnl.z80
+bnkbdos3.spr
+bnkbios3.spr
+boot.rel
+boot.z80
+callvers.asm
+ccp.com
+chario.rel
+chario.z80
+copysys.com
+cpm3.sys
+cpmldr.rel
+date.com
+device.com
+dir.com
+dirlbl.rsx
+dit.com
+dump.asm
+dump.com
+echovers.asm
+ed.com
+erase.com
+errors.com
+extmem.rel
+fastcopy.com
+fdrives.asm
+fdrives.rel
+formater.com
+gcf.dat
+gcw.dat
+gencom.com
+gencpm.com
+gencpm.dat
+genfbios.sub
+genwbios.sub
+get.com
+help.com
+help.hlp
+hexcom.com
+hist.utl
+hit.com
+hitdit.doc
+initdir.com
+ios.rel
+ios.z80
+iosetup.com
+lib.com
+link.com
+mac.com
+park.com
+patch.com
+pip.com
+primo.com
+put.com
+random.asm
+rename.com
+resbdos3.spr
+rmac.com
+save.com
+scb.asm
+scb.rel
+set.com
+setdef.com
+show.com
+sid.com
+submit.com
+trace.utl
+track0
+type.com
+wdrives.asm
+wdrives.rel
+xref.com
+z80.lib

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bioskrnl.rel


+ 807 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bioskrnl.z80

@@ -0,0 +1,807 @@
+	TITLE	'BIOSKRNL.Z80   ROOT TO BIOS. CP/M 3.0'
+;****************************************************************
+;*      THE TOTAL SYSTEM CONSISTS OF:                           *
+;*      BIOSKRNL.Z80    ROOT                                    *
+;*      BOOT.Z80        BOOT-MODULE                             *
+;*      CHARIO.Z80      CHARACTER-I/O-MODULE                    *
+;*      DRIVES.ASM      DISK-DEFINITON-MODULE (WDRIVES/FDRIVES) *
+;*      EXTMEM.Z80      EXTERNEL MEMORY-MODULE                  *
+;*      SCB.REL         SYSTEM VARIABLES                        *
+;*      IOS.Z80         PORT ADDRESSES                          *
+;****************************************************************
+; LATEST CHANGE: 1984-06-20.  PSW.
+; BIOSREVISION D.
+	.Z80
+	PAGE	42
+; EXTERNAL VARIABELS
+	EXTRN	@COVEC,@CIVEC,@AOVEC	; I/O REDIRECTION VECTORS
+	EXTRN	@AIVEC,@LOVEC		;       - " -
+	EXTRN	@MXTPA			; MAX TPA IN USER BANK
+	EXTRN	@BNKBF			; COMMON 128 BYTE BUFFER
+
+; INIT
+	EXTRN	?PATCH,?INIT			; 
+	EXTRN	?LDCCP,?RLCCP		; LOAD & RELOAD CCP
+
+; USER DEFINED CHARACTER I/O ROUTINS
+	EXTRN	?CI,?CO,?CIST,?COST	; 
+	EXTRN	?CINIT,INISTM		; 
+	EXTRN	@CTBL			; 
+
+; DISK 
+	EXTRN	@DTBL			; POINTER TABLE
+	ENTRY	@ADRV,@RDRV,@TRK,@SECT	; DISKPARAMETERS
+	ENTRY	@DMA,@DBNK,@CNT		;     - " -	
+
+; MEMORY MODULE
+	ENTRY	@CBNK,BNKMSK		; CURRENT BANK
+	ENTRY	?PMSG   		; WRITES MESSAGES
+
+; EXTERNAL LABLES TO BIOS-CALLS
+	ENTRY	?BOOT,?WBOOT,?CONST,?CONIN,?CONO,?LIST,?AUXO,?AUXI
+	ENTRY	?HOME,?SLDSK,?STTRK,?STSEC,?STDMA,?READ,?WRITE
+	ENTRY	?LISTS,?SCTRN
+	ENTRY	?CONOS,?AUXIS,?AUXOS,?DVTBL,?DEVIN,?DRTBL
+	ENTRY	?MLTIO,?FLUSH,?MOV,?TIM,?BNKSL,?STBNK,?XMOV
+
+; EXTERNAL LABLE TO USERFUNCTION
+	EXTRN	?USERF
+
+; INTERRUPT-VECTORS
+	ENTRY	SIO1IV,SIO2IV,DMAIRV,CTCIRV,PIOIRV
+	ENTRY	INTVECT
+
+; INTERRUPT-DRIVEN ROUTINES
+	EXTRN	KBDIRQ,CLKIRQ,PIOGAI,PIOGBI,UNKINT
+	PAGE	
+
+TRUE	EQU	-1
+FALSE	EQU	NOT TRUE
+BIOSRV	EQU	8426H		; BIOS-REVISION.
+BOTFLG	EQU	0C000H		; BOOT-FLAGG
+
+DMA	EQU	18H		; DMA.
+				; DMA-COMMANDS
+DMRSET	EQU	0C3H		; SOFTWARE RESET
+DMENAB	EQU	087H		; ENABLE DMA
+DMDISA	EQU	083H		; DISABLE DMA
+
+BNKMUX	EQU	1BH		; BANK-DMA-MULTIPLEXER
+DMBK11	EQU	00000000B	; BANK1 --> BANK1
+DMBK00	EQU	00001000B	; BANK0 --> BANK0
+DMBK10	EQU	00010000B	; BANK1 --> BANK0
+DMBK01	EQU	00011000B	; BANK0 --> BANK1
+BANK1	EQU	00000000B	; BANK1 (64K FOR CPU)
+BANK0	EQU	00100000B	; BANK0 (48K FOR CPU)
+
+CR	EQU	13
+LF	EQU	10
+BELL	EQU	7
+CTLQ	EQU	'Q'-'@'
+CTLS	EQU	'S'-'@'
+
+MB$XONXOFF	EQU	00010000B	; XON/XOFF PROTOCOLL ON.
+
+JPOP	EQU	0C3H		; Z80 JUMP INSTRUCTION
+
+CCP	EQU	100H		; LOAD ADDRESS FOR CCP
+	PAGE
+	CSEG
+;**********************************************************
+;*              BIOS: JUMP VECTORS                        *
+;**********************************************************
+
+?BOOT:	JP	BOOT		; 
+?WBOOT:	JP	WBOOT		; 
+
+?CONST:	JP	CONST		; 
+?CONIN:	JP	CONIN		; 
+?CONO:	JP	CONOUT		; 
+?LIST:	JP	LIST		; 
+?AUXO:	JP	AUXOUT		; 
+?AUXI:	JP	AUXIN		; 
+
+?HOME:	JP	HOME		; 
+?SLDSK:	JP	SELDSK		; 
+?STTRK:	JP	SETTRK		; 
+?STSEC:	JP	SETSEC		; 
+?STDMA:	JP	SETDMA		; 
+?READ:	JP	READ		; 
+?WRITE:	JP	WRITE		; 
+
+?LISTS:	JP	LISTST		; 
+?SCTRN:	JP	SECTRN		; 
+
+?CONOS:	JP	CONOST		; 
+?AUXIS:	JP	AUXIST		; 
+?AUXOS:	JP	AUXOST		; 
+?DVTBL:	JP	DEVTBL		; 
+?DEVIN:	JP	?CINIT		; IN CHARIO.Z80
+
+?DRTBL:	JP	GETDRV		; 
+?MLTIO:	JP	MULTIO		; 
+?FLUSH:	JP	FLUSH		; 
+
+?MOV:	JP	?MOVE		; 
+?TIM:	JP	RETURN		; NOT INSTALLED
+?BNKSL:	JP	BNKSEL		; 
+?STBNK:	JP	SETBNK		; 
+?XMOV:	JP	?XMOVE		; 
+
+	JP	?USERF		; IN EXTMEM.Z80
+	JP	RETURN		; 
+	JP	RETURN		; 
+	NOP			; GIVE CORRECT START FOR INT.VECTORS.
+	PAGE
+;**********************************************************
+;*		  INTERRUPT VECTORS			  *
+;**********************************************************
+INTVECT	EQU	$			; INTERRUPT VECTOR ADDRESS
+
+PIOIRV	EQU	$			; PIO BASE INTERRUPT VECTOR
+	DEFW	PIOGAI			; GRAPHIC SCREEN READY
+	DEFW	PIOGBI			; GRAPHIC KEY BOARD 
+
+CTCIRV	EQU	$			; CTC BASE INTERRUPT VEKTOR
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	CLKIRQ			; (10 Hz TICK)
+
+SIO1IV	EQU	$			; SIO1 BASE INTERRUPT VECTOR
+	DEFW	KBDIRQ			; KEYBOARD INT.
+	DEFW	KBDIRQ			; 
+	DEFW	KBDIRQ			; 
+	DEFW	KBDIRQ			; 
+	DEFW	KBDIRQ			; 
+	DEFW	KBDIRQ			; 
+	DEFW	KBDIRQ			; 
+	DEFW	KBDIRQ			; 
+
+SIO2IV	EQU	$			; SIO2 BASE INTERRUPT VECTOR
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+
+DMAIRV	EQU	$			; DMA BASE INTERRUPT VECTOR
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	DEFW	UNKINT			; 
+	PAGE
+
+; BOOT
+	DSEG			;; CODE IN BANK0
+
+BOOT:	DI			;; 
+	LD	SP,BOOT$STACK
+	CALL	?PATCH		;; PATCH IO-PART FROM LOADER.
+	LD	C,0		;; INIT ALL 16 CHARACTER DEVICES
+C$INIT$LOOP:
+	PUSH	BC
+	CALL	?CINIT		;; INIT CHARACTER DEV.
+	POP	BC
+	INC	C
+	LD	A,C
+	CP	16
+	JR	NZ,C$INIT$LOOP
+	CALL	?INIT		;; INIT THE OTHERS
+
+	LD	A,(BOTFLG)	;; SHALL A: BE WINCHESTER ?
+	AND	A
+	JR	Z,GOON		;; NO...JUMP.
+	LD	HL,(@DTBL+4)	;;  GET  C:
+	LD	DE,(@DTBL+2)	;;       B:
+	LD	BC,(@DTBL)	;;       A:
+	LD	(@DTBL),DE	;; B: --> A:
+	LD	(@DTBL+2),HL	;; C: --> B:
+	LD	(@DTBL+4),BC	;; A: --> C:
+
+; GO ON INIT 16 DISK UNITS.
+ 
+GOON:	LD	BC,16*256+0	;; B=NUMBERS. C= LOG. DRIVE
+	LD	HL,@DTBL	;; DRIVE-TABLE
+
+D$IN$LOOP:
+	PUSH	BC		;; SAVE NO. & DRIVE
+	LD	E,(HL)
+	INC	HL
+	LD	D,(HL)		;; DE=ADDRESS TO DPH
+	INC	HL
+	LD	A,E		;; DOES DRIVE EXIST?
+	OR	D
+	JR	Z,D$IN$NEXT	;; NO...JUMP.
+	PUSH	HL		;; SAVE HL 
+	EX	DE,HL
+	DEC	HL
+	DEC	HL
+	LD	A,(HL)		;; A=CONTROLLER RELATIVE ADDRESS
+	LD	(@RDRV),A
+	LD	A,C		;; LOGICAL ADDRESS.
+	LD	(@ADRV),A
+	DEC	HL
+	LD	D,(HL)
+	DEC	HL
+	LD	E,(HL)		;; DE=INIT ADDRESS
+	EX	DE,HL		;; 
+	CALL	IPCHL		;; JUMP TO INIT.
+	POP	HL		;; HL=DPH POINTER
+
+D$IN$NEXT:
+	POP	BC		;; B=NUMBERS. C=DRIVE
+	INC	C		;; NEXT DRIVE #
+	DJNZ	D$IN$LOOP	;; NEXT DPH-POINTER.
+	JP	BOOT$1
+
+	CSEG			; BANK 1.
+
+BOOT$1:
+	CALL	SET$JUMPS	; SET JUMPVECTORS
+	CALL	?LDCCP		; READ CCP.COM FROM DISK
+	JP	CCP		; 
+
+	; WBOOT
+
+WBOOT:
+	LD	SP,BOOT$STACK
+	CALL	SET$JUMPS	; INIT PAGE ZERO
+	CALL	?RLCCP		; REREAD CCP.COM
+	JP	CCP		; 
+
+SET$JUMPS:
+	LD	A,1		; SELECT BANK 1
+	CALL	?BNKSL
+	LD	A,JPOP		; Z80 JP OPCODE
+	LD	HL,?WBOOT	; WARM BOOT ENTRY POINT
+	LD	(0),A		; BIOS WARM START ENTRY
+	LD	(1),HL
+	LD	HL,(@MXTPA)	; BDOS ENTRY POINT
+	LD	(5),A
+	LD	(6),HL
+RETURN:	RET			; 
+
+	DS	64
+BOOT$STACK	EQU	$
+
+; DEVTBL --  RETURNS THE ADDRESS TO CHARACTER DEVICE TABLE
+
+DEVTBL:	LD	HL,@CTBL
+	RET
+
+; GETDRV --  RETURNS THE ADDRESS TO DRIVE TABLE
+
+GETDRV:	LD	HL,@DTBL
+	RET
+	PAGE
+;**********************************************************
+;*               CHARACTER I/O- ROUTINES                  *
+;**********************************************************
+
+; CONOUT -- CONSOLE OUTPUT.  SENDS CHAR IN (C) TO ALL
+; 	    CHOOSEN DEVICES.
+
+CONOUT:	LD	HL,(@COVEC)	; GET CONSOLE OUTPUT BIT VECTOR
+	JR	OUT$SCAN
+
+
+; AUXOUT --  AUXILLIARY OUTPUT.  SENS CHAR IN (C) TO ALL
+; 	     CHOOSEN DEVICES.
+
+AUXOUT:	LD	HL,(@AOVEC)	; GET AUX OUTPUT BIT VECTOR
+	JR	OUT$SCAN
+
+
+; LIST -- LIST OUTPUT.  SENDS CHAR IN (C) TO ALL
+; 	  CHOOSEN DEVICES.
+
+LIST:	LD	HL,(@LOVEC)	; GET LIST OUTPUT BIT VECTOR
+				; AND DO OUT$SCAN
+
+OUT$SCAN:
+	LD	B,0		; START WITH DEVICE 0.
+CO$NEXT:
+	ADD	HL,HL		; SHIFT NEXT BIT BIT
+	JR	NC,NO$OUT$DEV	; JUMP IF NO CARRY
+	PUSH	HL		; SAVE THE VECTOR AND
+	PUSH	BC		; COUNTER AND CHAR.
+CO$OUT$RDY:
+	CALL	COSTER
+	OR	A		; READY ?
+	JR	Z,CO$OUT$RDY	; NO...JUMP
+	POP	BC		; B=COUNTER C=CHAR
+	PUSH	BC		; SAVE
+	CALL	?CO		; SEND CHAR IF DEVICE IS CHOOSEN
+	POP	BC		; B=COUNTER C=CHAR
+	POP	HL		; BIT VECTOR
+NO$OUT$DEV:
+	INC	B		; NEXT DEVICE #
+	LD	A,H		; TEST IF ANY DEVICES LEFT
+	OR	L
+	JR	NZ,CO$NEXT	; YES...JUMP
+	RET
+
+
+; CONOST -- CONSOLE OUTPUT STATUS. RETURNS TRUE IF ALL
+; 	    CHOOSEN CONSOLE OUTPUT DEVICES ARE READY.
+
+CONOST:	LD	HL,(@COVEC)	; GET CONSOLE OUTPUT BIT VECTOR
+	JR	OST$SCAN
+
+
+; AUXOST -- AUXILIARY OUTPUT STATUS. RETURNS TRUE IF ALL
+; 	    CHOOSEN AUX OUTPUT DEVICES ARE READY.
+
+AUXOST:	LD	HL,(@AOVEC)	; GET AUX OUTPUT BIT VECTOR
+	JR	OST$SCAN
+
+
+; LISTST -- LIST OUTPUT STATUS. RETURNS TRUE IF ALL
+; 	    CHOOSEN LIST OUTPUT DEVICES ARE READY.
+
+LISTST:	LD	HL,(@LOVEC)	; GET LIST OUTPUT BIT VECTOR.
+
+
+OST$SCAN:
+	LD	B,0		; START WITH DEVICE 0
+COS$NEXT:
+	ADD	HL,HL		; SHIFT OUT NEXT BIT
+	PUSH	HL		; SAVE THE VECTOR
+	PUSH	BC		; B=COUNTER C=CHAR
+	LD	A,-1		; SET DEVICE READY
+	CALL	C,COSTER	; GET STATUS IF DEVICE CHOOSEN
+	POP	BC		; B=COUNTER C=CHAR
+	POP	HL		; HL=VECTOR
+	OR	A		; TEST IF DEVICE READY.
+	RET	Z		; IF ALL NOT READY, RETURN FALSE.
+	INC	B		; NEXT DEVICE
+	LD	A,H		; CHECK IF MORE CHOOSEN DEVICES
+	OR	L
+	JR	NZ,COS$NEXT	; YES...JUMP
+	OR	0FFH		; ALL CHOOSEN DEVICES READY
+	RET			; RETURN TRUE
+
+; CHECK IF OUTPUT DEVICE READY (XON/XOFF SUPPORT).
+
+COSTER:	LD	L,B		; CHANGE DEVICE # TO 16 BITS
+	LD	H,0		; HL=DEV#
+	PUSH	HL		; 
+	ADD	HL,HL		; OFFSET IN DEVICE-TABLE
+	ADD	HL,HL
+	ADD	HL,HL		; HL=HL*8
+	LD	DE,@CTBL+6	; DE= MODE BYTE F\R DEV 0
+	ADD	HL,DE		; HL=R[TT MODE BYTE
+	LD	A,(HL)		; GET MODE BYTE
+	AND	MB$XONXOFF	; XON/XOFF PROTOCOLL?
+	POP	HL		; HL=DEVICE #
+	JP	Z,?COST		; NO XON/XOFF...JUMP
+	LD	DE,XOFFLIST
+	ADD	HL,DE		; HL=PLACE IN XOFFLIST
+	LD	C,0		; FLAGSTATUS FOR ^C, ^S, ^Q ONLY
+	CALL	CISTL
+	LD	A,(HL)
+	CALL	NZ,CIL
+	CP	CTLQ
+	JR	NZ,NOT$Q
+	LD	A,-1		; SET READY-FLAG
+NOT$Q:	CP	CTLS		; CTL-S?
+	JR	NZ,NOT$S	; NO...JUMP
+	LD	A,0		; CLEAR FLAG
+NOT$S:	LD	(HL),A		; SAVE FLAG
+	CALL	COST1		; GET OUTPUT STATUS
+	AND	(HL)		; AND MASK WITH XON/XOFF FLAG
+	RET			; AND RETURN IT AS STATUS
+
+CISTL:	PUSH	BC		; GET INPUT STATUS WITH (BC) & (HL)
+	PUSH	HL
+	CALL	?CIST
+	POP	HL
+	POP	BC
+	OR	A
+	RET
+
+COST1:	PUSH	BC		; GET OUTPUT STATUS, SAVE (BC) & (HL)
+	PUSH	HL
+	CALL	?COST
+	POP	HL
+	POP	BC
+	OR	A
+	RET
+
+CIL:	PUSH	BC		; GET INPUT AND SAVE (BC) & (HL)
+	PUSH	HL
+	CALL	?CI
+	POP	HL
+	POP	BC
+	RET
+
+; CONST -- CONSOLE INPUT STATUS. RETURNS TRUE IF ANY CHOOSEN
+; 	   CONSOLE INPUT DEVICE HAS A CHAR AVAILABLE.
+
+CONST:	LD	HL,(@CIVEC)	; GET CONSOLE INPUT BIT VECTOR
+	JR	IST$SCAN
+
+; AUXIST -- AUXILIARY INPUT STATUS. RETURNS TRUE IF ANY CHOOSEN
+; 	    AUX INPUT DEVICE HAS A CHAR AVAILABLE.
+
+AUXIST:	LD	HL,(@AIVEC)	; GET AUX INPUT BIT VECTOR
+
+IST$SCAN:
+	LD	BC,0		; START WITH DEVICE 0
+				; CREG = 0 = FLAG, STATUS CALL ONLY
+CIS$NEXT:
+	XOR	A		; SET DEVICE NOT READY
+	ADD	HL,HL		; SHIFT OUT ONE BIT
+	CALL	C,CISTL		; CHECK STATUS ON THIS DEVICE
+	OR	A		; IF ANY READY RETURN TRUE.
+	RET	NZ
+	INC	B		; NEXT DEVICE #
+	LD	A,H		; CHECK IF ANY MORE DEV.
+	OR	L
+	JR	NZ,CIS$NEXT
+	XOR	A		; ALL CHOOSEN NOT READY. FALSE
+	RET
+
+; CONIN -- CONSOLE INPUT. RETURNS  CHAR FROM FIRST READY
+; 	   CONSOLE DEVICE.
+
+CONIN:	LD	HL,(@CIVEC)	; GET CONSOLE BIT VECTOR
+	JR	IN$SCAN
+
+; AUXIN -- AUXILIARY INPUT. RETURNS CHAR FROM FIRST READY
+; 	   AUX INPUT DEVICE.
+
+AUXIN:	LD	HL,(@AIVEC)	; GET AUX BIT VECTOR
+
+IN$SCAN:
+	PUSH	HL		; SAVE BIT VECTOR
+	LD	B,0		; START WITH DEVICE 0
+	LD	C,-1		; CREG = FF = STATUS CALL FOR INPUT
+CI$NEXT:
+	XOR	A		; SET NO CHAR
+	ADD	HL,HL		; SHIFT OUT ONE BIT
+	CALL	C,CISTL		; CHECK IF DEVICE HAS A CHAR
+	OR	A		; CHAR?
+	JR	NZ,CI$RDY	; YES...JUMP
+	INC	B		; TEST NEXT DEVICE
+	LD	A,H
+	OR	L
+	JR	NZ,CI$NEXT	; 
+	POP	HL		; HL=BIT VECTOR
+	JR	IN$SCAN		; LOOP UNTIL GOT A CHAR
+CI$RDY:	POP	HL		; HL=BIT VECTOR
+	JP	?CI		; GET INPUT FROM DEVICE # IN B.
+	PAGE
+;**********************************************************
+;*                    SUBROUTINES                         *
+;**********************************************************
+
+IPCHL:	JP	(HL)		; VECTOR-CALL
+
+?PMSG:				; WRITES MESSAGE @(HL) DETERM.
+				; WITH DEFB 0.
+	LD	A,(HL)		; GET NEXT BYTE
+	OR	A		; IS IT 0 ?
+	RET	Z		; YES...RETURN
+	PUSH	HL		; SAVE REGISTERS
+	PUSH	DE
+	PUSH	BC
+	LD	C,A		; CHAR IN (C)
+	CALL	?CONO		; WRITE
+	POP	BC
+	POP	DE
+	POP	HL
+	INC	HL		; HL-->NEXT BYTE
+	JR	?PMSG		; START OVER AGAIN
+
+; ?MOVE -- BLOCKMOVE MEMORY --> MEMORY
+; IN:			HL = TO ADDRESS
+;			DE = FROM ADDRES
+;			BC = COUNTER.
+; OUT:			HL & DE POINTING TO THE NEXT BYTES
+;                               THAT FOLLOWS THE MOVE.
+
+?MOVE:	LD	A,B		; IS IT ZERO-MOVE?
+	OR	C
+	RET	Z		; YES...QUIT
+	LD	A,(BNKFLG)	; IS ?XMOVE INVOLVED?
+	AND	A
+	JR	NZ,MOVE1	; YES...JUMP
+	EX	DE,HL		; EXCHANGE ADDRESSES TO FIT
+	LDIR			; THIS INSTRUCTION.
+	EX	DE,HL		; GET THEM BACK.
+	RET
+MOVE1:	XOR	A		; ZERO ?XMOVE-FLAG
+	LD	(BNKFLG),A
+	LD	(SRCADR),DE	; SET SOURCE-ADDRESS IN DMA-TABLE
+	LD	(DSTADR),HL	; SET DEST-ADDRESS IN DMA-TABLE
+	ADD	HL,BC		; HL= END-DEST-ADDRESS.
+	PUSH	HL		;     SAVED.
+	EX	DE,HL		;
+	ADD	HL,BC		; HL= END-SOURCE-ADDRESS
+	PUSH	HL		;      SAVED.
+	DEC	BC		; REDUCE BLOCK LENGTH WITH 1
+	LD	(LENGTH),BC	; CHECK FOR THE DMA COMMAND
+	LD	A,B
+	OR	C
+	LD	A,11001101B	; IF NOT ONE BYTE SET BURST MODE
+	JR	NZ,MOVE2
+	LD	A,10001101B	; ELSE SET BYTE MODE.
+MOVE2:	LD	(MODE),A	; SAVE THE MODE
+	LD	HL,(DSTBNK)	;
+	LD	A,H		; DEST-BANK IN A.
+	RLA			; SHIFT OUT LEFT
+	OR	L		; ADD ON SOURCE-BANK.
+	AND	00000011B	; MASK ANY FAULTS.
+	LD	L,A		; 
+	LD	H,0		; PUT THE CODE I HL
+	LD	DE,BNKTBL	; OFFSET IN THE TABLE
+	ADD	HL,DE		; POINT TO THE RIGHT BYTE
+	LD	A,(HL)		; GET IT.
+	LD	HL,BNKMSK	; ADD ON BANKMASK
+	OR	(HL)
+	LD	HL,DMATBL	; POINT TO THE DMA-TABLE.
+	DI			; SHUT UP FOR A MOMENT.
+	OUT	(BNKMUX),A	; START THE DMA
+	CALL	INISTM
+	LD	A,B		;
+	OR	C
+	JR	Z,MOVE4
+MOVE3:	IN	A,(DMA)		; READ STATUS
+	AND	00100000B	; IS IT READY?
+	JR	NZ,MOVE3
+MOVE4:	LD	A,DMDISA	; DISABLE DMA
+	OUT	(DMA),A
+	EI			; SPEAK AGAIN
+	POP	DE		; GET THE PARAMETERS BACK
+	POP	HL
+	LD	BC,0		; COUNTER=0
+	RET
+
+; ?XMOVE -- SETS CORRECT BANKS FOR DATA TRANSFERES.
+; IN:			B = TO-BANK
+;			C = FROM-BANK
+; OUT:			NONE.
+;
+
+?XMOVE:
+	LD	A,TRUE
+	LD	(BNKFLG),A	; MARK ?XMOVE
+	LD	(DSTBNK),BC	; GIVES (C) IN TO-BANK
+				; AND (B) IN FROM-BANK.
+	RET
+
+; BNKSEL -- BANKSELECT.
+; IN:			A = MEMORY BANK.
+;
+                                
+BNKSEL:	LD	(@CBNK),A	; SAVE CURRENT BANK
+	AND	1		; MASK 
+	PUSH	HL		; SAVE 
+	LD	HL,BNKMSK	; 
+	LD	A,BANK0		; START WITH BANK 0.
+	JR	Z,BNK1		; BANK0 ?  YES...JUMP
+	LD	A,BANK1		; SET BANK 1.
+BNK1:	DI			; NOTHING CRAZY MAY HAPPEN NOW
+	LD	(HL),A
+	OUT	(BNKMUX),A	; SEND TO BANK SELECT PORT
+	POP	HL
+	EI			; IT WORKED.
+	RET
+                                
+       	PAGE
+	DSEG			;; BANK 0.
+;***********************************************************
+;*	            DISK-DRIVE-ROUTINES                    *
+;***********************************************************
+
+; SELDSK -- SELECT DISK DRIVE. DOES THE LOGIN-PROCEDURE FOR 
+;           THE DRIVE IF IT IS THE FIRST TIME SELECT.
+; IN:			C = SELECTED DRIVE.
+;			E = BIT0 IS 0 IF NOT SELECTED BEFORE
+; OUT:			HL = 0 IF SELECTED DRIVE DOES NOT EXIST
+;			HL = @DPH IF SELECTED DRIVE EXISTS
+
+SELDSK:	LD	A,C
+	LD	(@ADRV),A	;; SAVE #
+	LD	L,C		;; CREATE INDEX
+	LD	H,0
+	ADD	HL,HL		;; HL=2*DRIVE #TO OFFSET
+	LD	BC,@DTBL	;; POINT TO DRIVE-TABLE-HEAD
+	ADD	HL,BC		;; HL=CORRECT VECTOR IN @DTBL
+	LD	A,(HL)		;; GET DPH-POINTER
+	INC	HL
+	LD	H,(HL)
+	LD	L,A		;; HL=DPH-POINTER
+	OR	H		;; SET Z-FLAG AND
+	RET	Z		;; RETURN IF NO DRIVE
+	LD	A,E
+	AND	1		;; FIRST SELECT?
+	RET	NZ		;; NO...RETURN
+	PUSH	HL		;; SAVE DPH-POINTER
+	EX	DE,HL
+	LD	HL,-2		;; GET (DPH-2)
+	ADD	HL,DE
+	LD	A,(HL)
+	LD	(@RDRV),A	;; SAVE THE CONTROLLER RELATIVE DRIVE#
+	LD	HL,-6		;; GET THE LOGIN-VECTOR
+	ADD	HL,DE
+	LD	A,(HL)
+	INC	HL
+	LD	H,(HL)
+	LD	L,A
+	CALL	IPCHL		;; DO LOGIN
+	POP	HL		;; HL=DPH-POINTER
+	RET
+	PAGE
+; HOME -- HOME SELECTED DRIVE.  DO SETTRK (0).
+
+HOME:	LD	BC,0		;; TRACK=0
+
+; SETTRK --  SET TRACK ADDRESS.
+; IN:			BC = TRACK ADDRESS
+; OUT:			@TRK = TRACK ADDRESS
+
+SETTRK:	LD	(@TRK),BC	;; SAVE TRACK ADDRESS
+	RET
+
+
+; SETSEC -- SET SECTOR ADDRESS.
+; IN:			BC = SECTOR ADDRESS
+; OUT:			@SECT = SECTOR ADDRESS
+
+SETSEC:	LD	(@SECT),BC	;; SAVE SECTOR ADDRESS
+	RET
+
+; SETDMA -- SET DIRECT MEMORY ACCESS DISK ADDRESS.
+; IN:			BD = DMA ADDRESS
+; OUT:			@DMA = DMA ADDRESS
+;			@DBNK = @CBNK
+
+SETDMA:	LD	(@DMA),BC	;; SET GLOBAL DMA ADDRESS
+	LD	A,(@CBNK)	;; DEFAULT DMA BANK IS CURRENT BANK
+				;; GET CURRENT BANK & DO SETBNK
+
+; SETBNK -- SET DISK I/O MEMORY BANK.
+; IN:			A = DISK BANK #
+; OUT:			@DBNK = DISK BANK #
+
+SETBNK:
+	LD	(@DBNK),A	;; SET DISK DMA BANK
+	RET
+
+; SECTRN -- SECTOR TRANSLATE. TRANSLATE LOGICAL SECTOR NUMBER TO
+; PHYSICAL SECTOR NUMBER.
+; IN:			BC = LOGICAL SECTOR #
+;			DE = POINTING TO TRANS TABLE
+;			     (0 IF NONE)
+; OUT:			HL = PHYSICAL SECTOR #.
+
+SECTRN:	LD	L,C		;; 
+	LD	H,B		;; HL=CP/M SECTOR # (RELATIVE 0)
+	INC	HL		;; HL=   -"-        (RELATIVE 1)
+	LD	A,D		;; IS DE=0
+	OR	E
+	RET	Z		;; YES...RETURN, NO TRANS TABLE
+	DEC	HL		;; HL= CP/M SECTOR # (RELATIVE 0)
+	ADD	HL,DE		;; HL=INDEX IN TRANS TABLE
+	LD	L,(HL)		;; TRANSLATE TO SECTOR # FROM TABLE
+	LD	H,0		;; 8 BITS VALUE
+	RET
+
+; READ -- READS PHYSICAL SECTOR FROM SELECTED DISK.
+; IN:			NONE
+; OUT:			A = 0 NO ERROR.
+;			A = 1 IF ERROR.
+;			A = 0FFH IF MEDIA CHANGE.
+
+READ:	LD	DE,-8		;; INDEX OFFSET TO READ-ROUTINE
+	PUSH	DE		;; ON THE STACK
+	JR	RW$COMMON	;; READ-WRITE-GEMENSAM.
+
+
+; WRITE -- WRITES PHYSICAL SECTOR ON SELECTED DISK.
+; IN:			C = DEBLOCKING-CODE
+; OUT:			A = 0 NO ERRORS.
+;			A = 1 PHYSICAL ERROR.
+;			A = 2 DISK READ-ONLY
+;			A = 0FFH IF MEDIA CHANGE.
+
+WRITE:	LD	DE,-10		;; INDEX OFFSET TO WRITE-ROUTINE
+	PUSH	DE		;; ON THE STACK
+
+RW$COMMON:
+	LD	HL,(@ADRV)	;; GET DRIVE #
+	LD	H,0
+	ADD	HL,HL		;; HL=2*DRIVE#
+	LD	DE,@DTBL
+	ADD	HL,DE
+	LD	A,(HL)
+	INC	HL
+	LD	H,(HL)
+	LD	L,A		;; HL=DPH
+	POP	DE		;; DE=READ/WRITE
+	PUSH	HL		;; SAVE DPH-ADDRESS 
+	ADD	HL,DE		;; HL=READ/WRITE IN DPH
+	LD	A,(HL)
+	INC	HL
+	LD	H,(HL)
+	LD	L,A		;; HL=READ/WRITE-VECTOR
+	POP	DE		;; DE=DPH
+	DEC	DE
+	DEC	DE
+	LD	A,(DE)
+	LD	(@RDRV),A	;; A=CONTROLLER RELATIVE DRIVE#
+	INC	DE		;; BACK TO DPH
+	INC	DE
+	JP	(HL)		;; DO THE ROUTINE IN EXTMEM.Z80
+
+; MULTIO -- SET MULTIPLE SECTOR COUNT.
+; IN:			A = SECTOR COUNT.
+; OUT:			@CNT = MULTIPLE SECTOR COUNT
+
+MULTIO:	LD	(@CNT),A	;; SAVE THE COUNTER.
+	RET
+
+; FLUSH --
+; NOT INSTALLED.
+
+FLUSH:	XOR	A		;; RETURN NO ERRORS.
+	RET
+	PAGE
+;********************************************************
+;*                     VARIABLES                        *
+;********************************************************
+
+
+	CSEG			; MUST BE IN BANK1
+
+@ADRV:	DEFS	1		; SELECTED DISK DRIVE #
+@RDRV:	DEFS	1		; CONTROLLER RELATIVE DISK DRIVE#
+@TRK:	DEFS	2		; TRACK #
+@SECT:	DEFS	2		; SECTOR #
+@DMA:	DEFS	2		; DMA ADDRESS
+@CNT:	DEFB	0		; RECORD COUNT FOR MULTISECTOR I/O
+@DBNK:	DEFB	0		; BANK FOR DMA OPERATIONS
+@CBNK:	DEFB	0		; BANK FOR PROCESSOR OPERATIONS
+BNKMSK:	DEFB	BANK0		; MASK FOR PROC-/DMA-OPERATIONS.
+
+BNKFLG:	DEFB	0		; FLAG FOR ?XMOV
+DSTBNK:	DEFS	1		; DEST-BANK FOR ?XMOVE-?MOVE
+SRCBNK:	DEFS	1		; SOURCE-BANK FOR ?XMOVE-?MOVE
+
+BNKTBL:	DEFB	DMBK00		; BANK0 --> BANK0
+	DEFB	DMBK10		; BANK1 --> BANK0
+	DEFB	DMBK01		; BANK0 --> BANK1
+	DEFB	DMBK11		; BANK1 --> BANK1
+
+DMATBL:	DEFB	17,DMA		; 17 BYTES TO DMA
+	DEFB	DMDISA		; DISABLE DMA
+	DEFB	01111101B	; CR1A: BLOCKLENGTH LOW o. HI FOLLOWS,
+				; PORT A START ADDRESS LOW  o. HI
+				; FOLLOWS A->B, TRANSFER.
+SRCADR:	DEFS	2		; SORCE-ADDRESS (PORT A)
+LENGTH:	DEFS	2		; BLOCKLENGTH - 1.
+	DEFB	00010100B	; CR1B: PORT ADDR. INC. PORT A-MEMORY.
+	DEFB	00010000B	; CR1B: PORT ADDR. INC. PORT B-MEMORY
+MODE:	DEFS	1		; CR2B:   BURST/BYTE-MODE
+DSTADR:	DEFS	2		; DEST-ADDRESS (PORT B)
+	DEFB	10000010B	; CR2A: STOP END-OF-BLOCK
+	DEFB	11001111B	; CR2D: LOAD STARTADRESSES FOR BOTH
+				; PORTS AND ZERO THE COUNTER.
+	DEFB	10001011B	; CR2D: ZERO STATUS-BITS
+	DEFB	10110011B	; CR2D: FORCE READY.
+	DEFB	DMENAB		; ENABLE DMA
+	DEFB	10111111B	; CR2D: SET NEXT READ STATUS.
+
+	DEFB	0		; TABLE END.
+
+XOFFLIST:	DEFB	-1,-1,-1,-1,-1,-1,-1,-1
+		DEFB	-1,-1,-1,-1,-1,-1,-1,-1
+
+	END
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bnkbdos3.spr


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/bnkbios3.spr


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/boot.rel


+ 176 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/boot.z80

@@ -0,0 +1,176 @@
+	TITLE	'BOOT.Z80'
+
+;***********************************************************
+;*  THIS MODULE PATCHES THE IO-PARAMETERS FROM THE LOADER  *
+;*  TO THE SCB.ASM AND CHARIO.Z80.                         *
+;*  IT ALSO LOADS CCP.COM ON COLDBOOT TO A RESERVED AREA   *
+;*  IN BANK0 0000H - 0DFFH, FROM WHERE IT WILL BE RELOADED *
+;*  TO BANK1 ADDRESS 0100H ON WARMBOOT.                    *
+;***********************************************************
+; LATEST CHANGE: 1984-06-20.  PSW.
+; BIOSREVSION D.
+
+	.Z80
+	PAGE	42
+FALSE	EQU	0
+TRUE	EQU	NOT FALSE
+
+SWITCH	EQU	1CH		; BIT5: TERMINAL TYPE
+
+CR	EQU	13
+LF	EQU	10
+BDOS	EQU	5		; HOPP-VEKTOR TO CP/M 
+BASE1	EQU	100H		; CCP I BANK 1
+BASE0	EQU	000H		; CCP I BANK 0.
+
+CIVC	EQU	20H		; IN LOADER, BUT SWITCH DEPENDING
+COVC	EQU	22H		;  -"-     ,       -"-
+LOVC	EQU	24H		; IN LOADER
+AIVC	EQU	26H		;   -"-
+AOVC	EQU	28H		;   -"-
+C0BD	EQU	2AH		; BAUD DEV#0
+C1BD	EQU	2BH		; BAUD DEV#1
+S1STRT	EQU	30H		; SIO TABLES 
+SILEN	EQU	23H		; LENGTH
+
+	EXTRN	INTVECT,?PMSG
+	EXTRN	?BNKSL,?MOV,?XMOV
+	EXTRN	@COVEC,@CIVEC,@LOVEC,@AOVEC,@AIVEC
+	EXTRN	C0BAUD,C1BAUD,SI1ATBL
+
+	ENTRY	?INIT,?PATCH,?LDCCP,?RLCCP
+
+	EXTRN	?TITEL
+
+	PAGE
+	DSEG			;; BANK 0.
+; ?PATCH -- THIS ROUTINE PATCHES THE IO-PARAMETERS 
+;           FROM THE LOADER.
+
+?PATCH:	LD	HL,(CIVC)	;; CONSOLE INPUT VECTOR
+	LD	(@CIVEC),HL
+	LD	HL,(COVC)	;; CONSOLE OUTPUT VECTOR
+	LD	(@COVEC),HL
+	IN	A,(SWITCH)	;; 
+	AND	00100000B	;; GRAPHIC TERMINAL ?
+	JR	Z,PATCH1	;; NO...JUMP
+	LD	HL,1000H	;; SET DEVICE GRAPH:
+	LD	(@CIVEC),HL	;; FOR CONSOLE INPUT
+	LD	(@COVEC),HL	;; FOR CONSOLE OUTPUT.
+PATCH1:	LD	HL,(LOVC)	;; LIST OUTPUT VECTOR
+	LD	(@LOVEC),HL
+	LD	HL,(AIVC)	;; AUX INPUT VECTOR
+	LD	(@AIVEC),HL
+	LD	HL,(AOVC)	;; AUX OUTPUT VECTOR
+	LD	(@AOVEC),HL
+	LD	A,(C0BD)	;; BAUD DEV#0
+	LD	(C0BAUD),A
+	LD	A,(C1BD)	;; BAUD DEV#1
+	LD	(C1BAUD),A
+	LD	HL,S1STRT	;; MOVE SIO TABLES
+	LD	DE,SI1ATBL
+	LD	BC,SILEN
+	LDIR
+	RET
+
+; ?INIT -- SET UP INTERRUP VECTOR ENABLE INTERRUPT AND
+;          WRITE A PART OF SIGNON MESSAGE.
+
+?INIT:	LD	HL,INTVECT
+	LD	A,H		;; LOAD INTERRUPT VECTOR PAGE
+	LD	I,A		;; INTO Z80 REGISTER I.
+	EI			;; MUST GO IF GRAPHIC TERM. 
+	LD	HL,SIGNON	;; WRITE 1/2 ROW IN SIGNON.
+	CALL	?PMSG
+	LD	HL,?TITEL	;; WRITE 1/2 ROW IN SIGNON.
+	CALL	?PMSG		;; IS IN DRIVES.ASM
+	RET
+
+	CSEG			; BANK1
+; ?LDCCP -- IS CALLED FROM BIOSKRNL.Z80 TO LOAD CCP FROM
+;           THE FILE CCP.COM. IT WILL BE STORED IN A BUFFER
+;           AREA IN BANK1 AND WHEN ?RLCCP IS CALLED IT WILL
+;           BE RELOADED TO BANK1 FOR EXECUTION.
+; NOTE:     WHEN ?RLCCP IS CALLED BANK1 IS ACTIVE.
+
+?LDCCP:	XOR	A
+	LD	(CCP$FCB+15),A
+	LD	HL,0
+	LD	(FCB$NR),HL
+	LD	DE,CCP$FCB	; OPEN FILE 'CCP.COM'
+	LD	C,15
+	CALL	BDOS
+	INC	A		; FILE OPEN?
+	JR	NZ,CCPOPEN	; YES...JUMP
+CCPERR:	LD	HL,ERRCCP
+	LD	A,0		; SET BANK0
+	CALL	?BNKSL
+	CALL	?PMSG		; WRITE ERROR MESSAGE
+	LD	A,1
+	CALL	?BNKSL
+	LD	C,1		; GET CONSOLE INPUT
+	CALL	BDOS
+	LD	HL,CRLF
+	CALL	?PMSG		; NEW LINE.
+	JR	?LDCCP		; TRY AGAIN.
+
+; LOAD CCP FROM 'CCP.COM'
+
+CCPOPEN:
+	LD	DE,26		; UP TO 26 SECT. READ
+	LD	C,44		; MULTI-SECTOR-COUNT
+	CALL	BDOS
+	LD	DE,BASE1	; ADDRESS IN BANK1.
+	LD	C,26
+	CALL	BDOS		; SET DMA ADDRESS
+	LD	DE,CCP$FCB
+	LD	C,20
+	CALL	BDOS		; READ RECORDS.
+	CP	1		; ANY ERRORS?
+	JR	NZ,CCPERR	; YES...JUMP
+CCPOP3:	LD	B,0		; DEST.-BANK
+	LD	C,1		; SOURCE-BANK
+	CALL	?XMOV
+	LD	DE,BASE1	; SOURCE-ADDRESS
+	LD	HL,BASE0	; DEST.-ADDRESS
+	JR	RLOOP1
+
+; ?RLCCP -- RELOADS CCP FROM BANK0 0000H - 0DFFH TO
+;           BANK1 0100H -
+;           ?LDCCP USES THE MAIN PART OF THIS ROUTINE
+;           TO MOVE CCP FROM BANK1 TO BANK0 ON COLDBOOT.
+
+?RLCCP:	LD	B,1		; DEST.-BANK
+	LD	C,0		; SOURCE-BANK
+	CALL	?XMOV
+	LD	DE,BASE0	; SOURCE-ADDRESS
+	LD	HL,BASE1	; DEST.-ADDRESS
+RLOOP1:	LD	BC,13*256	; COUNT
+	CALL	?MOV
+	LD	A,1		; SET BANK1
+	JP	?BNKSL
+
+CCP$FCB:
+	DEFB	1		; DRIVE A
+	DEFB	'CCP     COM'
+	DEFB	0		; EX
+	DEFB	0		; S1
+	DEFB	0		; S2
+	DEFB	0		; RC
+	DEFW	0,0,0,0		; D0 --
+	DEFW	0,0,0,0		; --DN
+FCB$NR:	DB	0
+	DB	0,0,0
+CRLF:	DEFB	CR,LF,0
+ 
+
+	DSEG
+
+; MESSAGES IN BANK0.
+
+ERRCCP:	DEFB	'CCP.COM-error. Press <RET> to retry',0
+SIGNON:	DEFB	CR,CR,LF
+	DEFB	'CP/M Plus Version 3.0 - Jet-',0
+
+	END
+

+ 29 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/callvers.asm

@@ -0,0 +1,29 @@
+	; CALLVERS program
+
+bdos	equ	5			; entry point for BDOS
+prtstr	equ	9			; print string function
+vers	equ	12			; get version function
+cr	equ	0dh			; carriage return
+lf	equ	0ah			; line feed
+
+	org	100h
+	mvi 	d,5			; Perform 5 times
+loop:	push	d			; save counter
+	mvi 	c,prtstr 
+	lxi 	d,call$msg		; print call message
+	call 	bdos
+	mvi 	c,vers 
+	call 	bdos			; try to get version #
+					; CALLVERS will intercept
+	mov 	a,l 
+	sta	curvers
+	pop 	d
+	dcr 	d			; decrement counter
+	jnz 	loop
+	mvi 	c,0
+	jmp 	bdos
+call$msg:
+	db	cr,lf,'**** CALLVERS **** $'
+curvers	db	0
+	end
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/ccp.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/chario.rel


+ 709 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/chario.z80

@@ -0,0 +1,709 @@
+	TITLE	'CHARIO.Z80  I/O-HANDLER'
+
+;**********************************************************
+;* THIS MODULE TAKES CARE OF ALL CHAR I/O FUNCTIONS FOR   *
+;* CP/M 3.0 .                                             *
+;* A TABLE OF DEVICE-NAMES IS DEFINED TOGEATHER WITH A    *
+;* DEVICE-HANDLER-TABLE WITH ADDRESSES AND ROUTINES.      *
+;* THE INTERRUPT-DRIVEN KEYBOARD ROUTINE IS HERE.         *
+;*                                                        *
+;* THE GLOBAL SUBROUTINE 'INISTM' IS ALSO IN THIS MODULE. *
+;**********************************************************
+; LATEST CHANGE: 1984-06-21.  PSW.
+; BIOSREVISION D.
+
+	.Z80
+
+	ENTRY	?CINIT,?CI,?CO,?CIST,?COST
+	ENTRY	@CTBL
+	ENTRY	INISTM
+	ENTRY	KBDIRQ,UNKINT
+	ENTRY	PIOGAI,PIOGBI
+	ENTRY	C0BAUD,C1BAUD,SI1ATBL
+
+	EXTRN	SIO1IV,CTCIRV,PIOIRV
+	EXTRN	?PMSG
+	PAGE	42
+; SPECIAL CHARACTERS AND CONSTANS:
+
+EOF	EQU	1AH			; CP/M END OF FILE CHAR (^Z)
+CTRLC	EQU	'C'-'@'
+FALSE	EQU	0
+TRUE	EQU	NOT FALSE
+
+MB$INPUT	EQU	00000001B	; DEVICE HANDLES INPUT
+MB$OUTPUT	EQU	00000010B	; DEVICE HANDLES OUTPUT
+MB$IN$OUT	EQU	MB$INPUT+MB$OUTPUT
+MB$SOFTBAUD	EQU	00000100B	; SOFTWARE SELECTABLE BAUD RATE
+MB$SERIAL	EQU	00001000B	; DEVICE USES PROTOCOL
+MB$XON$XOFF	EQU	00010000B	; XON/XOFF PROTOCOL ON
+
+; PORT-ADDRESSES.
+
+SIO1AD	EQU	0		; MODEM/PRINTER - DATA
+SIO1AC	EQU	SIO1AD+1	; MODEM/PRINTER - CONTROL/STATUS
+SIO1BD	EQU	SIO1AD+2	; V24,TERMINAL - DATA
+SIO1BC	EQU	SIO1AD+3	; V24,TERMINAL - CONTROL/STATUS
+SIO2AD	EQU	4		; RS422/NETWORK - DATA
+SIO2AC	EQU	SIO2AD+1	; RS422/NETWORK - CONTROL/STATUS
+SIO2BD	EQU	SIO2AD+2	; 
+SIO2BC	EQU	SIO2AD+3	; 
+				; SUPPORTED WITH 1,228,800 Hz
+CTC0	EQU	8		; CTC CHAN 0 - BAUDRATE SIO1A/TIMER
+CTC1	EQU	CTC0+1		; CTC CHAN 1 - BAUDRATE SIO1B/TIMER
+CTC2	EQU	CTC0+2		; CTC CHAN 2 - TIMER TO CTC3 (HALVED)
+CTC3	EQU	CTC0+3		; CTC CHAN 3 - REALTIMECLOCK/COUNTER
+				;
+PIOAD	EQU	0CH		; PIO A DATA - CENTRONICS DATA
+PIOAC	EQU	PIOAD+1		; PIO A CONTROL (WRITE ONLY)
+PIOBD 	EQU	PIOAD+2		; PIO B DATA - CENTRONICS CTRL
+				;         	   + MODEM CTRL
+				; BIT0 CEN. *BUSY
+				; BIT1 CEN. *PAPER EMPTY
+				; BIT2 CEN. *SELECT
+				; BIT3 CEN. *FAULT
+				; BIT4 CEN. *STROBE
+				; BIT5 CEN. *ACK
+				; BIT6 PIO BUFFER DIRECTION CH. B
+				; BIT7 PIO BUFFER DIRECTION CH. A
+PIOBC	EQU	PIOAD+3		; PIO B CONTROL (WRITE ONLY)
+
+SWITCH	EQU	1CH		; READABLE SWITCH
+				; BIT3: CONSOLE BAUDRATE
+				; xxxx0xxx  9600 BAUD
+				; xxxx1xxx 19200 BAUD
+				; BIT4: CONSOLE HANDSHAKE
+				; xxx0xxxx NO HANDSHAKE
+				; xxx1xxxx HANSHAKE
+				; BIT5: TERMINAL TYPE
+				; xx0xxxxx SERIAL
+				; xx1xxxxx GRAPHIC
+
+PIOGAD	EQU	20H		; PIO A GRAPHIC PORT DATA OUT (DISPLAY)
+PIOGAC	EQU	PIOGAD+1	; PIO A GRAPHIC PORT CONTROL (WRITE ONLY)
+PIOGBD	EQU	PIOGAD+2	; PIO B GRAPHIC PORT DATA IN (KBD)
+PIOGBC	EQU	PIOGAD+3	; PIO B GRAPHIC PORT CONTROL (WRITE ONLY)
+	PAGE
+	CSEG			; BANK0
+;**********************************************************
+;*        NAME TABLE OF THE DEVICES IN THE SYSTEM.        *
+;**********************************************************
+@CTBL:	DEFB	'CRT   '	; DEVICE 0, CRT OR CONSOLE
+	DEFB	MB$IN$OUT+MB$SERIAL+MB$SOFTBAUD
+C0BAUD:	DEFB	14		; 9600 BAUD. WILL BE PATCHED.
+
+	DEFB	'LPT   '	; DEVICE 1, SERIAL LINE PRINTER
+	DEFB	MB$IN$OUT+MB$SERIAL+MB$SOFTBAUD
+C1BAUD:	DEFB	14		; 9600 BAUD. WILL BE PATCHED.
+
+	DEFB	'CEN   '	; DEVICE 2, CENTRONICS PARALLEL
+	DEFB	MB$OUTPUT	; OUTPUT ONLY.
+	DEFB	0		; NO BAUDRATE
+
+	DEFB	'GRAPH '	; DEVICE 3, GRAPHIC TERMINAL
+	DEFB	MB$IN$OUT
+	DEFB	0		; NO BAUDRATE
+
+	DEFB	0		; END TABLE
+
+BDTBL:	DEFB	-1,0		; 0:  NONE
+	DEFB	-1,0		; 1:    50
+	DEFB	0,0C4H		; 2:    75
+	DEFB	174,0C4H	; 3:   110
+	DEFB	143,0C4H	; 4:   134.5
+	DEFB	0,84H		; 5:   150
+	DEFB	128,84H		; 6:   300
+	DEFB	64,84H		; 7:   600
+	DEFB	32,84H		; 8:  1200
+	DEFB	-1,0		; 9:  1800
+	DEFB	16,84H		;10:  2400
+	DEFB	-1,0		;11:  3600
+	DEFB	8,84H		;12:  4800
+	DEFB	-1,0		;13:  7200
+	DEFB	4,84H		;14:  9600
+	DEFB	2,84H		;15: 19200
+	DEFB	1,84H		;16: 38400
+	DEFB	1,44H		;17: 76800
+
+BTLKUP:
+	AND	0FH		; MASK MAX 15.
+	RLA			; *2 FOR TABLE-LOOKUP
+	LD	E,A		; INDEX TABLE FOR CTC CONSTANS.
+	LD	D,0		; (IF CTC CONST.=0FFH, NO BAUD RATE
+	LD	HL,BDTBL
+	ADD	HL,DE
+	LD	A,(HL)
+	CP	-1
+	RET	Z		; CANNOT SET THIS BAUD RATE
+	INC	HL		; GET SIO BYTE.
+	LD	B,(HL)
+	RET
+	PAGE
+; INISTM -- WRITES A NUMBER OF BYTE TO ONE OR MORE PORTS.
+; IN:		     HL = TABLE-ADDRESS.
+;                    TABLEVIEW (BYTE BY BYTE):
+;                    NO OF BYTES, PORT#, BYTE1,...,
+;                    NO OF BYTES, PORT#, BYTE1,...,
+;                    0 (DETERMINATOR).
+
+INISTM:	LD	A,(HL)		; LOAD BYTE
+	OR	A		; IS IT ZERO?
+	RET	Z		; YES...TERMINATE
+	LD	B,A		; NO...THEN IT IS A BYTE COUNTER.
+	INC	HL		; NEXT BYTE, WHICH IS THE PORT#
+	LD	C,(HL)		; STORED IN C.
+	INC	HL		; POINT TO DATA BYTE1
+	OTIR			; SEND (B) BYTES TO PORT (C)
+	JR	INISTM		; GO ON.
+	PAGE
+;********************************************************
+;*							*
+;*		CONSOLE AND LIST DEVICE I/O		*
+;*							*
+;********************************************************
+
+; ?CINIT --
+; IN:			C = LOGICAL UNIT #
+;
+; IF THERE IS A PHYSICAL UNIT IN @CTBL FOR THIS LOGICAL UNIT,
+; IT WILL BE INITILIZED WITH WITH BAUD RATE BYTE IN THE TABLE.
+?CINIT:
+	LD	B,C
+	INC	B		; MAKE DEVICE # (RELATIVE 1)
+	DJNZ	INIT1		; TEST IF DEV# IS 0
+
+; INIT DEVICE 0			; CRT:
+	LD	HL,SIO1IV	; SET SIOVECTOR
+	LD	A,L
+	LD	(SIOVEC),A
+	LD	HL,CTCIRV	; SET CTCVECTOR
+	LD	A,L
+	LD	(CTCVEC),A
+	IN	A,(SWITCH)	; READ SWITCH
+	AND	00001000B	; BIT3 BAUDRATE
+	JR	Z,INIT01
+	LD	A,15		; 19200 BAUD
+	LD	(C0BAUD),A
+INIT01:	IN	A,(SWITCH)
+	AND	00010000B	; BIT4 HANDSHAKE
+	JR	Z,INIT02
+	LD	A,11100001B	; Rx 8 BITS, AUTO ENABL., Rx ENABLE
+	LD	(HANDSH),A
+INIT02:	LD	A,(C0BAUD)
+	CALL	BTLKUP
+	RET	Z
+	LD	(BAUDB),A
+	LD	A,B
+	LD	(CLKB),A
+	LD	HL,SI1BTBL	; POINT TO INIT.TABLE
+INSIO:	CALL	INISTM		; SEND TO THE PORT.
+	DEC	C		; POINT TO THE DATA PORT
+	IN	A,(C)		; CLEAR THE INPUT
+	IN	A,(C)		; OF THE SIO.
+	RET			; READY
+
+INIT1:	DJNZ	INIT2		; JUMP IF NOT DEV #1.
+
+; INIT DEV #1.			; LPT:
+	LD	A,(C1BAUD)	; GET CHAR DEVICE 1 BAUD BYTE.
+				; CALC BAUD RATE BYTES
+INIT1B:	CALL	BTLKUP		; CHECK IN BAUD TABLE
+	RET	Z		; NOT COORECT...RETURN
+	LD	(BAUDA),A	; SET CTC COUNTER CONSTANT
+	LD	A,B		; GET SIO CONSTANT
+	LD	(CLKA),A	; SET IT
+	LD	HL,SI1ATBL	; POINT TO THE INIT. TABLE
+	JR	INSIO		; DO
+
+INIT2:	DJNZ	INIT3		; JUMP IF NOT DEV #2
+
+; INIT DEVICE #2		; CEN:
+	LD	HL,PIOTBL	; POINT TO THE INIT. TABLE
+	CALL	INISTM		; DO
+	RET
+
+INIT3:	DJNZ	INIT4		; JUMP IF NOT DEV #3
+	
+; INIT DEVICE #3		; GRAPH:
+	LD	HL,PIOIRV	; POINT TO INTERRUPT VECTOR
+	LD	A,L
+	LD	(PIAVEC),A	; STORE LO BYTE IN TABLE
+	INC	A
+	INC	A		; PIOGB INTERRUPT
+	LD	(PIBVEC),A
+	LD	HL,PIOGTBL	; POINT TO INIT. TABLE
+	CALL	INISTM		; DO
+	
+INIT4:	RET			; NO MORE DEVICES.
+	PAGE
+; ?CI:
+; CHAR INPUT FROM DEVICE # IN REGISTER (B).
+
+?CI:
+	INC	B		; DEVICE # (RELATIVE 1)
+	DJNZ	CI1		; JUMP IF NOT DEVICE #0
+
+; CONIN -- CONSOLE CHAR INPUT. DEVICE #0.
+; IN:			NONE.
+; OUT:			A = CHAR (PARITY BIT = 0).
+;			AF,DE,HL,BC WILL BE CHANGED.
+
+CONIN:
+	LD	HL,RNGCNT	; POINT TO THE RING BUFFER COUNTER.
+	XOR	A		;        ZERO 
+CONIN1:	OR	(HL)		; GET IT.
+	JR	Z,CONIN1	; LOOP FOR CHAR.
+	DI
+	DEC	(HL)		; COUNT DOWN
+	LD	DE,(RNGOUT)	; GET THE OUTPUT-POINTER
+	LD	A,(DE)		; A=OUTPUT CHAR (PARITY RESET).
+	AND	07FH		; CLEAR BIT 7
+	LD	HL,RNGEND	; INC RING BUFFER-OUTPUT-POINTER
+	SBC	HL,DE		; IS THE BUFFEREND?
+	INC	DE		;        (INC)
+	JR	NZ,CONIN2	; NO...JUMP
+	LD	DE,RNGBEG	; SET BUFFER START
+CONIN2:	LD	(RNGOUT),DE	; SAVE THE POINTER.
+	EI
+	RET
+
+CI1:	DJNZ	CI2		; JUMP IF NOT DEVICE 1
+
+; AUXIN -- GIVES INPUT FROM SIO1 A.
+;
+; IN:			NONE
+; OUT:			A = CHAR.
+
+AUXIN:	CALL	AUXIST		; CHAR IN SIO BUFFER?
+	JR	Z,AUXIN		; NO...WAIT
+	IN	A,(SIO1AD)	; READ CHAR
+	RET
+
+CI2:	DJNZ	CI3		; JUMP IF NOT DEVICE 2
+; CENTRONICS IS DEVICE 2, OUTPUT ONLY.
+
+CI4:	LD	A,EOF		; END-OF-FILE-TOKEN.
+	RET
+CI3:	DJNZ	CI4		; JUMP IF NOT DEVICE 3
+
+
+; GRIN -- GRAPHIC KEYBOARD INPUT. DEVICE #3.
+; IN:			NONE.
+; OUT:			A = CHAR (PARITY BIT = 0).
+;			AF,DE,HL,BC WILL BE CHANGED.
+
+GRIN:
+	LD	HL,GRCNT	; POINT TO THE RING BUFFER COUNTER.
+	XOR	A		;        ZERO 
+GRIN1:	OR	(HL)		; GET IT.
+	JR	Z,GRIN1		; LOOP FOR CHAR.
+	DI
+	DEC	(HL)		; COUNT DOWN
+	LD	DE,(GRNOUT)	; GET THE OUTPUT-POINTER
+	LD	A,(DE)		; A=OUTPUT CHAR (PARITY RESET).
+;	AND	07FH		; CLEAR BIT 7
+	LD	HL,GRNEND	; INC RING BUFFER-OUTPUT-POINTER
+	SBC	HL,DE		; IS THE BUFFEREND?
+	INC	DE		;        (INC)
+	JR	NZ,GRIN2	; NO...JUMP
+	LD	DE,GRNBEG	; SET BUFFER START
+GRIN2:	LD	(GRNOUT),DE	; SAVE THE POINTER.
+	EI
+	RET
+
+	PAGE
+; ?CO -- SEND A CHARACTER TO A CHOOSEN DEVICE.
+; IN:			B = DEVICE #
+;			C = CHAR.
+
+?CO:
+	INC	B		; MAKE DEVICE # (RELATIVE 1)
+	DJNZ	CO1		; JUMP IF NOT DEVICE 0
+
+; CONOUT -- SIO1B OUTPUT ROUTINE.
+;
+; IN:			C = CHAR --> SIO1B
+; OUT:			A = WRITTEN CHAR.
+
+CONOUT:
+	CALL	CNOST		; TEST OUTPUT STATUS
+	JR	Z,CONOUT	; WAIT FOR READY
+	LD	A,C
+	OUT	(SIO1BD),A
+	RET	
+
+CO1:	DJNZ	CO2		; JUMP IF NOT DEVICE 1
+
+; AUXOUT --  SIO1A OUTPUT ROUTINE.
+; IN:			C = CHAR --> SIO1A
+; OUT:			A = WRITTEN CHAR
+
+AUXOUT:
+	CALL	AUXOST		; TEST OUTPUT STATUS
+	JR	Z,AUXOUT	; WAIT FOR READY.
+	LD	A,C
+	OUT	(SIO1AD),A
+	RET
+
+CO2:	DJNZ	CO3		; JUMP IF NOT DEVICE 2
+
+; LISTC --  CENTRONICS PARALLEL OUTPUT ROUTINE.
+; IN:			C = CHAR --> PIOA
+; OUT:			A = WRITTEN CHAR.
+
+LISTC:	
+;	LD	A,01010000B	; STROBE HIGH
+;	OUT	(PIOBD),A
+	
+LISTC1:	CALL	LSTTST		; TEST OUTPUT STATUS
+	JR	Z,LISTC1	; WAIT FOR READY.
+	LD	A,C
+	OUT	(PIOAD),A
+	LD	A,01000000B	; STROBE
+	OUT	(PIOBD),A
+	LD	A,01010000B	; STROBE HIGH
+	OUT	(PIOBD),A
+	RET
+
+CO3:	DJNZ	CO4		; JUMP IF NOT DEVICE 3
+
+; GROUT -- GRAPHIC OUTPUT ROUTINE.
+; IN:			C = CHAR --> PIOGA
+; OUT:			A = WRITTEN CHAR
+
+GROUT:	CALL	GROST		; TEST OUTPUT STATUS
+	JR	Z,GROUT		; WAIT FOR READY
+	LD	A,C
+	DI
+	OUT	(PIOGAD),A
+	INC	(HL)		; HL -->GRSCNT
+	EI
+CO4:	RET
+	PAGE
+; ?CIST -- CHAR INPUT STATUS FROM CHOOSEN DEVICE.
+; IN:			B = DEVICE #
+
+?CIST:
+	INC	B		; MAKE DEVICE # (RELATIVE 1)
+	DJNZ	CIS1		; JUMP IF NOT DEVICE 0.
+
+; CONST -- CONSOLE INPUT STATUS CHECK.
+; IN:			NONE
+; OUT:			A = 0, Z = 1 IF NO CHAR AVAIL.
+;			A = 0FFH, Z = 0 AT LEAST ONE CHAR AVAIL.
+
+CONST:
+	LD	A,(RNGCNT)	; ANY CHAR IN THE BUFFER?
+	OR	A
+	RET	Z		; NO...RETURN
+	OR	0FFH		; YES...SET FLAG
+	RET 
+
+CIS1:	DJNZ	CIS2		; JUMP IF NOT DEVICE 1.
+
+; AUXIST -- AUXILIARY INPUT STATUS.
+; IN:			NONE
+; OUT:			A = 0, Z = 1 IF NOT READY
+;			A = 0FFH, Z = 0 IF CHAR AVAIL.
+
+AUXIST:
+	IN	A,(SIO1AC)	; READY STATUS.
+	AND	00000001B	; MASK Rx CHAR AVAILABLE
+	RET	Z		; NOT READY...RETURN
+	OR	0FFH		; MARK CHAR AVAIL
+	RET
+
+CIS2:	DJNZ	CIS3		; JUMP IF NOT DEVICE 2
+; CENTRONICS DOES NOT HANDLE INPUT. RETURNS NOT READY.
+
+CIS4:	XOR	A		; NOT READY
+	RET
+CIS3:	DJNZ	CIS4		; JUMP IF NOT DEVICE 3. NO MORE DEV.
+
+; GRINST -- GRAPHIC INPUT STATUS.
+; IN:			NONE
+; OUT:			A = 0, Z = 1 IF NOT READY
+;			A = 0FFH, Z = 0 IF CHAR AVAIL.
+
+GRINST:
+	LD	A,(GRCNT)	; TEST GR. CHAR. COUNTER
+	OR	A
+	RET	Z		; RETURN NO CHAR
+	OR	0FFH		; SET READY
+	RET
+	PAGE
+; ?COST -- CHARACTER OUTPUT STATUS FROM CHOOSEN DEVICE.
+; IN:			B = DEVICE #.
+
+?COST:
+	INC	B		; MAKE DEVICE # (RELATIVE 1)
+	DJNZ	COS1		; JUMP IF NOT DEVICE 0.
+
+; CNOST: -- CONSOLE OUTPUT STATUS CHECK.
+; IN:			NONE
+; OUT:			A = 0, Z = 1 IF NOT READY
+;			A = 0FFH, Z = 0 IF READY FOR OUTPUT
+
+CNOST:
+	IN	A,(SIO1BC)	; READ STATUS.
+	AND	00000100B	; MASK Tx BUFFER EMPTY
+	RET	Z		; NOT READY...RETURN
+	OR	0FFH		; SET FLAG FOR READY OUTPUT.
+	RET
+
+COS1:	DJNZ	COS2		; JUMP IF NOT DEVICE 1.
+
+; AUXOST -- AUXILIARY OUTPUT STATUS.
+; IN:			NONE
+; OUT:			A = 0, Z = 1 IF NOT READY
+;			A = 0FFH, Z = 0 IF READY FOR OUTPUT.
+
+AUXOST:
+	IN	A,(SIO1AC)	; READ STATUS
+	AND	00000100B	; MASK Tx BUFFER EMPTY
+	RET	Z		; NOT READY...RETURN
+	OR	0FFH		; SET FLAG FOR READY OUTPUT.
+	RET
+
+COS2:	DJNZ	COS3		; JUMP IF NOT DEVICE 2.
+
+; LSTTST -- PARALLEL PORT TEST IF READY.
+; IN:			NONE
+; OUT: 			A = 0, Z = 1 IF NOT READY
+;			A = 0FFH, Z = 0 IF READY FOR OUTPUT.
+
+LSTTST:
+	IN	A,(PIOBD)	; READ ACK AND BUSY.
+	AND	00100001B
+	CP	00100000B	; READY AND NOT BUSY
+	LD	A,0FFH
+	JR	Z,LSTT1		; YES...JUMP
+	LD	A,0		; SET NOT READY
+LSTT1:	AND	A
+	RET
+
+COS3:	DJNZ	COS4		; JUMP IF NOT DEVICE 3.
+
+; GROST -- GRAPHIC OUTPUT STATUS.
+; IN:			NONE
+; OUT:			A = 0, Z = 1 IF NOT READY
+;			A = 0FFH, Z = 0 IF READY FOR OUTPUT.
+
+GROST:	LD	HL,GRSCNT	; GET STATUS COUNTER
+	LD	A,(HL)
+	CP	0FFH		; IS IT READY
+	JR	Z,GROST1	; YES...JUMP
+	XOR	A		; MARK NOT READY
+GROST1:	OR	A
+	RET
+
+COS4:	XOR	A		; NOT READY. CAUSE NO
+	RET			; MORE DEVICES.
+
+	PAGE
+; KBDIRQ -- CONSOLE KEYBOARD INTERRUPT SERVICE ROUTIN.
+; USES LOCAL STACK IN ORDER NOT TO INTERFERE WITH THE
+; USER PROGRAM STACK.
+
+KBDIRQ:
+	LD	(USRSK2),SP	; OWN STACK
+	LD	SP,OWNSK2
+	PUSH	AF		; SAVE REGISTERS.
+	PUSH	DE
+	PUSH	HL
+	LD	HL,RNGCNT	; HL --> NO OF CHAR IN BUFFER
+	LD	A,(HL)		; A = NO OF CHAR IN BUFFERT
+	CP	RNGEND-RNGBEG	; IS BUFFER FULL?
+	IN	A,(SIO1BD)	;         A = CHAR (CLR INTERRUPT)
+	JR	Z,KBDIR2	; YES...JUST JUMP AND QUIT
+	INC	(HL)		; INC CHAR-COUNTER 
+	AND	07FH		; MASK PARITY
+	LD	HL,(RNGIN)	; HL --> INPUT
+	LD	(HL),A		; SAVE INPUT CHAR IN BUFFER.
+	AND	A		; CLEAR CARRY BIT
+	EX	DE,HL		; SAVE INPUT POINTER IN DE.
+	LD	HL,RNGEND	; HL=BUFFEREND FOR TEST
+	SBC	HL,DE		; POINTER AT END?
+	INC	DE		;            INC
+	JP	NZ,KBDIR1	; NO...JUMP
+	LD	DE,RNGBEG	; SET POINTER TO BUFFERSTART
+KBDIR1:	LD	(RNGIN),DE	; SAVE THE POINTER.
+KBDIR2:	POP	HL		; USER REGS. BACK
+	POP	DE
+	POP	AF
+	LD	SP,(USRSK2)	; AND USER STACK.
+
+UNKINT:
+	EI			; BACK FROM INTERRUPT.
+	RETI
+
+; PIOGAI -- INTERRUPT FROM GRAPHIC TERMINAL.
+; TELLS TERMINAL READY.
+
+PIOGAI:	PUSH	AF
+	LD	A,0FFH
+	LD	(GRSCNT),A
+	POP	AF
+	JR	UNKINT
+
+; PIOGBI -- GRAPHIC KEYBOARD INTERRUPT SERVICE ROUTIN.
+
+PIOGBI:	LD	(USRSK3),SP
+	LD	SP,OWNSK3
+	PUSH	AF		; SAVE REGISTERS.
+	PUSH	DE
+	PUSH	HL
+	LD	HL,GRCNT	; HL --> NO OF CHAR IN BUFFER
+	LD	A,(HL)		; A = NO OF CHAR IN BUFFERT
+	CP	GRNEND-GRNBEG	; IS BUFFER FULL?
+	IN	A,(PIOGBD)	;         A = CHAR (CLR INTERRUPT)
+	JR	Z,PIOGB2	; YES...JUST JUMP AND QUIT
+	INC	(HL)		; INC CHAR-COUNTER 
+	LD	HL,(GRNIN)	; HL --> INPUT
+	LD	(HL),A		; SPAR INPUT CHAR IN BUFFER.
+	XOR	A
+	EX	DE,HL		; SAVE INPUT POINTER IN DE.
+	LD	HL,GRNEND	; HL=BUFFEREND FOR TEST
+	SBC	HL,DE		; POINTER AT END?
+	INC	DE		;            INC
+	JP	NZ,PIOGB1	; NO...JUMP
+	LD	DE,GRNBEG	; SET POINTER TO BUFFERSTART
+PIOGB1:	LD	(GRNIN),DE	; SAVE THE POINTER.
+PIOGB2:	POP	HL		; USER REGS. BACK
+	POP	DE
+	POP	AF
+	LD	SP,(USRSK3)
+	EI			; BACK FROM INTERRUPT.
+	RETI
+
+	PAGE
+;**********************************************************
+;*                    OTHER TABLES                        *
+;**********************************************************
+; NOTE: THE SIO1-TABLES ARE PATCHES FROM THE LOADER IN
+;       BOOT.Z80-MODULE. 
+;       IT VERY IMPORTANT THAT SIZE AND ORDER IN THIS
+;       TABLES NOT ARE ALTERED.
+
+SI1ATBL:			; MODEM/AUX/PRINTER.
+	DEFB	3,CTC0		; 3 BYTES TO CTC CHAN 0
+	DEFB	01000101B	; CTC0: INT. DIS, COUNTER MODE,
+				; NEG. EDGE, TIME CONST. FOLLOWS,
+				; COUNTING CONT.
+BAUDA:	DEFB	4		; GIVES 307200 Hz TO SIO1A
+CTCVEC:	DEFS	1		; CTCINTERRUPTVECTOR.
+
+	DEFB	9,SIO1AC	; 9 BYTES TO SIO1 A/MODEM
+	DEFB	18H		; RESET CHANNEL.
+	DEFB	14H		; WR 4:
+CLKA:	DEFB	10000100B	; x32 CLOCK, 1 STOP BIT, NO PARITY.
+	DEFB	13H		; WR 3:
+	DEFB	11100001B	; Rx 8 BITS, AUTO ENABL., Rx ENABLE.
+	DEFB	15H		; WR 5:
+	DEFB	11101010B	; DTR, Tx 8 BITS, Tx ENABLE, *RTS LOW.
+	DEFB	01		; WR 1:
+	DEFB	00000000B	; NO INTERRUPTS, UNMODIFIED INTERRUPT
+				; VECTOR (BOTH CHANNELS).
+	DEFB	0		; END TABLE.
+
+SI1BTBL:
+	DEFB	2,CTC1		; 2 BYTES TO CTC CHAN 1
+	DEFB	01000101B	; CTC1: INT. DIS, COUNTER MODE,
+				; NEG. EDGE, TIME CONST. FOLLOWS,
+				; COUNTING CONT.
+BAUDB:	DEFB	4		; GIVES 307200 Hz TO SIO1B.
+
+	DEFB	11,SIO1BC	; 11 BYTES TO SIO1 B/TERMINAL
+	DEFB	18H		; RESET CHANNEL
+	DEFB	12H		; WR 2:
+SIOVEC:	DEFS	1		; INTERRUPTVECTOR
+	DEFB	14H		; WR 4:
+CLKB:	DEFB	10000100B	; x32 CLOCK, 1 STOP BIT, NO PARITY
+	DEFB	13H		; WR 3:
+HANDSH:	DEFB	11000001B	; Rx 8 BITS, Rx ENABLE.
+	DEFB	15H		; WR 5:
+	DEFB	11101010B	; DTR, Tx 8 BITS, Tx ENABLE, *RTS LOW
+	DEFB	01		; WR 1:
+	DEFB	00011100B	; INT ON ALL Rx CHAR (PARITY DOES NOT
+				; AFFECT VECTOR), STATUS AFFECTS VECTOR.
+	DEFB	0		; END TABLE.
+
+	PAGE
+
+; PIO PORT A INIT TABLE
+
+PIOTBL:	DEFB	2,PIOAC		; 2 BYTES TO PIO A CTLR-REG.
+	DEFB	00001111B	; SELECT MODE 0 OPERATION
+	DEFB	00000011B	; INTERUPT DISABLE.
+
+; PIO PORT B INIT TABLE
+
+	DEFB	4,PIOBC		; 4 BYTES TO PIO B CTRL-REG.
+	DEFB	11001111B	; SELECT MODE 3 OPERATION
+	DEFB	00101111B	; BIT 7,6,4=OUTPUT ALL OTHERS INPUTS
+	DEFB	00110111B	; INTERRUPT CONTROL WORD = DISABLED
+	DEFB	00000001B	; MASK WORD, ONLY MONITOR BIT 0.
+
+; SET PIO A BUFFER FOR OUTPUT
+
+	DEFB	1,PIOBD		; 1 BYTE TO PIO B  DATA
+	DEFB	01010000B
+
+; REAL TIME CLOCK INITIALIZATION TABLE
+
+	DEFB	2,CTC2		; 2 BYTES TO CTC CHAN 2
+	DEFB	01000101B	; CTC2: INT. DIS, COUNTER MODE,
+				; NEG. EDGE, TIME CONST. FOLLOWS,
+				; COUNTING CONT.
+	DEFB	0		; GIVES 4800 Hz TO CTC3.
+
+
+	DEFB	2,CTC3		; 2 BYTES TO CTC CHAN 3.
+	DEFB	11000101B	; INT. ENABLED, COUNTER MODE
+				; NEG. EDGE, TIME CONST. FOLLOWS,
+				; COUNTING CONT.
+	DEFB	240		; GIVES 20 Hz, WHICH IS DIVIDED
+				; BY 2 (HARDWARE).
+				; INERRUPT 10 times/second.
+	DEFB	0		; END TABLE.
+
+; INIT. GRAPHIC TERMINAL
+
+PIOGTBL:
+	DEFB	3,PIOGAC	; BYTES TO PIOGA CONTROL
+PIAVEC:	DEFS	1		; VECTOR FOR A
+	DEFB	00001111B	; OUTPUT ONLY. MODE 0
+	DEFB	10000111B	; ENABLE INTERRUPT.
+
+	DEFB	3,PIOGBC	; BYTES TO PIOGB CONTROL
+PIBVEC:	DEFS	1		; VECTOR FOR B
+	DEFB	01001111B	; INPUT ONLY. MODE 1
+	DEFB	10000111B	; ENABLE INTERRUPT
+
+	DEFB	0		; END TABLE.
+	PAGE
+
+USRSK2:	DEFS	2		; USER STACK SAVED HERE
+	DEFS	10H		; LOCAL STACK.
+OWNSK2	EQU	$
+USRSK3:	DEFS	2
+	DEFS	10H
+OWNSK3	EQU	$
+
+
+RNGCNT:	DEFB	0		; NO OF CHAR IN BUFFER
+RNGIN:	DEFW	RNGBEG		; POINTS TO INPUT PLACE
+RNGOUT:	DEFW	RNGBEG		; POINTS TO OUTPUT PLACE
+				; IF EQU BUFFER IS EMPTY.
+RNGBEG:	DEFS	22		; KEYBOARD RING BUFFER.
+RNGEND	EQU	$-1
+
+
+GRSCNT:	DEFB	0FFH		; GRAPHIC OUTPUT STATUS COUNTER (0FF=READY)
+GRCNT:	DEFB	0		; NO OF CHAR IN GRAPHIC RING BUFFER
+GRNIN:	DEFW	GRNBEG		; POINTER TO GRAPHIC INPUT PLACE
+GRNOUT:	DEFW	GRNBEG		; POINTER TO GRAPHIC OUTPUT PLACE
+GRNBEG:	DEFS	22		; GRAPHIC RING BUFFER
+GRNEND	EQU	$-1
+	END
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/copysys.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/cpm3.sys


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/cpmldr.rel


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/date.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/device.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dir.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dirlbl.rsx


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dit.com


+ 209 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dump.asm

@@ -0,0 +1,209 @@
+;	Dump program, reads input file and displays hex data
+;
+	org	100h
+bdos	equ	0005h	;dos entry point
+cons	equ	1	;read console
+typef	equ	2	;type function
+printf	equ	9	;buffer print entry
+brkf	equ	11	;break key function (true if char ready)
+openf	equ	15	;file open
+readf	equ	20	;read function
+;
+fcb	equ	5ch	;file control block address
+buff	equ	80h	;input disk buffer address
+;
+;	non graphic characters
+cr	equ	0dh	;carriage return
+lf	equ	0ah	;line feed
+;
+;	file control block definitions
+fcbdn	equ	fcb+0	;disk name
+fcbfn	equ	fcb+1	;file name
+fcbft	equ	fcb+9	;disk file type (3 characters)
+fcbrl	equ	fcb+12	;file's current reel number
+fcbrc	equ	fcb+15	;file's record count (0 to 128)
+fcbcr	equ	fcb+32	;current (next) record number (0 to 127)
+fcbln	equ	fcb+33	;fcb length
+;
+;	set up stack
+	lxi	h,0
+	dad	sp
+;	entry stack pointer in hl from the ccp
+	shld	oldsp
+;	set sp to local stack area (restored at finis)
+	lxi	sp,stktop
+;	read and print successive buffers
+	call	setup	;set up input file
+	cpi	255	;255 if file not present
+	jnz	openok	;skip if open is ok
+;
+;	file not there, give error message and return
+	lxi	d,opnmsg
+	call	err
+	jmp	finis	;to return
+;
+openok:	;open operation ok, set buffer index to end
+	mvi	a,80h
+	sta	ibp	;set buffer pointer to 80h
+;	hl contains next address to print
+	lxi	h,0	;start with 0000
+;
+gloop:
+	push	h	;save line position
+	call	gnb
+	pop	h	;recall line position
+	jc	finis	;carry set by gnb if end file
+	mov	b,a
+;	print hex values
+;	check for line fold
+	mov	a,l
+	ani	0fh	;check low 4 bits
+	jnz	nonum
+;	print line number
+	call	crlf
+;
+;	check for break key
+	call	break
+;	accum lsb = 1 if character ready
+	rrc		;into carry
+	jc	finis	;don't print any more
+;
+	mov	a,h
+	call	phex
+	mov	a,l
+	call	phex
+nonum:
+	inx	h	;to next line number
+	mvi	a,' '
+	call	pchar
+	mov	a,b
+	call	phex
+	jmp	gloop
+;
+finis:
+;	end of dump
+	call	crlf
+	lhld	oldsp
+	sphl
+;	stack pointer contains ccp's stack location
+	ret		;to the ccp
+;
+;
+;	subroutines
+;
+break:	;check break key (actually any key will do)
+	push h! push d! push b; environment saved
+	mvi	c,brkf
+	call	bdos
+	pop b! pop d! pop h; environment restored
+	ret
+;
+pchar:	;print a character
+	push h! push d! push b; saved
+	mvi	c,typef
+	mov	e,a
+	call	bdos
+	pop b! pop d! pop h; restored
+	ret
+;
+crlf:
+	mvi	a,cr
+	call	pchar
+	mvi	a,lf
+	call	pchar
+	ret
+;
+;
+pnib:	;print nibble in reg a
+	ani	0fh	;low 4 bits
+	cpi	10
+	jnc	p10
+;	less than or equal to 9
+	adi	'0'
+	jmp	prn
+;
+;	greater or equal to 10
+p10:	adi	'a' - 10
+prn:	call	pchar
+	ret
+;
+phex:	;print hex char in reg a
+	push	psw
+	rrc
+	rrc
+	rrc
+	rrc
+	call	pnib	;print nibble
+	pop	psw
+	call	pnib
+	ret
+;
+err:	;print error message
+;	d,e addresses message ending with "$"
+	mvi	c,printf	;print buffer function
+	call	bdos
+	ret
+;
+;
+gnb:	;get next byte
+	lda	ibp
+	cpi	80h
+	jnz	g0
+;	read another buffer
+;
+;
+	call	diskr
+	ora	a	;zero value if read ok
+	jz	g0	;for another byte
+;	end of data, return with carry set for eof
+	stc
+	ret
+;
+g0:	;read the byte at buff+reg a
+	mov	e,a	;ls byte of buffer index
+	mvi	d,0	;double precision index to de
+	inr	a	;index=index+1
+	sta	ibp	;back to memory
+;	pointer is incremented
+;	save the current file address
+	lxi	h,buff
+	dad	d
+;	absolute character address is in hl
+	mov	a,m
+;	byte is in the accumulator
+	ora	a	;reset carry bit
+	ret
+;
+setup:	;set up file 
+;	open the file for input
+	xra	a	;zero to accum
+	sta	fcbcr	;clear current record
+;
+	lxi	d,fcb
+	mvi	c,openf
+	call	bdos
+;	255 in accum if open error
+	ret
+;
+diskr:	;read disk file record
+	push h! push d! push b
+	lxi	d,fcb
+	mvi	c,readf
+	call	bdos
+	pop b! pop d! pop h
+	ret
+;
+;	fixed message area
+signon:	db	'file dump version 2.0$'
+opnmsg:	db	cr,lf,'no input file present on disk$'
+
+;	variable area
+ibp:	ds	2	;input buffer pointer
+oldsp:	ds	2	;entry sp value from ccp
+;
+;	stack area
+	ds	64	;reserve 32 level stack
+stktop:
+;
+	end
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/dump.com


+ 47 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/echovers.asm

@@ -0,0 +1,47 @@
+	; ECHOVERS RSX
+
+pstring	equ	9			; string print function
+cr	equ	0dh
+lf	equ	0ah
+;
+;		RSX PREFIX STRUCTURE
+;
+	db	0,0,0,0,0,0		; room for serial number
+	jmp	ftest			; begin of program
+next	db	0c3H			; jump
+        dw	0			; next module in line
+prev:	dw	0			; previous module
+remov:	db	0ffh			; remove flag set
+nonbnk:	db	0
+	db	'ECHOVERS'
+space:	ds	3
+
+ftest:					; is this function 12?
+	mov 	a,c 
+	cpi 	12 
+	jz 	begin			; yes - intercept
+        jmp 	next			; some other function 
+
+begin:
+	lxi 	h,0	
+	dad 	sp 			;save stack
+	shld 	ret$stack
+	lxi 	sp,loc$stack
+
+	mvi 	c,pstring 
+	lxi 	d,test$msg		; print message
+	call 	next			; call BDOS
+
+	lhld 	ret$stack 		; restore user stack
+	sphl
+	lxi 	h,0031h			; return version number = 0031h
+	ret
+
+test$msg:
+	db	cr,lf,'**** ECHOVERS **** $'
+ret$stack:	
+	dw	0
+	ds	32			; 16 level stack
+loc$stack:
+	end
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/ed.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/erase.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/errors.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/extmem.rel


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/fastcopy.com


+ 497 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/fdrives.asm

@@ -0,0 +1,497 @@
+	TITLE 'FDRIVES.ASM     TABLES FOR DISKETTES'
+;*********************************************************
+;*    DEFINITION MODULE FOR THE FLOPPIES IN THE SYSTEM   *
+;*********************************************************
+; LATEST CHANGE: 1984-06-13.  PSW
+; BIOSREVISION D.
+; FOR THE RMAC ASSEMBLER
+TRUE	EQU	0FFH
+FALSE	EQU	0
+;******************************************************************
+;       What kind of floppy system do You want ?
+
+VERIFY	EQU	TRUE		; Verify after write.
+
+M8	EQU	FALSE		; A: 8" 2x77x8x1024, 256 ent. UNIT0
+				; B: 8" 2x77x8x1024, 256 ent. UNIT1
+				; C: 5" 2x80x5x1024, 128 ent. UNIT0
+				; D: 8" 1x77x26x128,  64 ent. UNIT1
+M5	EQU	FALSE		; A: 5" 2x77x8x1024, 256 ent. UNIT0
+				; B: 5" 2x77x8x1024, 256 ent. UNIT1
+				; C: 8" 2x77x8x1024, 256 ent. UNIT0
+				; D: 8" 1x77x26x128,  64 ent. UNIT0
+M596D	EQU	TRUE		; A: 5" 2x80x5x1024, 128 ent. UNIT0
+				; B: 5" 2x80x5x1024, 128 ent. UNIT1
+				; C: 8" 2x77x8x1024, 256 ent. UNIT0
+				; D: 8" 1x77x26x128,  64 ent. UNIT0
+M548D	EQU	FALSE		; A: 5" 2x40x5x1024, 128 ent. UNIT0
+				; B: 5" 2x40x5x1024, 128 ent. UNIT1
+				; C: 8" 2x77x8x1024, 256 ent. UNIT0
+				; D: 8" 1x77x26x128,  64 ent. UNIT0
+M548S	EQU	FALSE		; A: 5" 1x40x5x1024,  64 ent. UNIT0
+				; B: 5" 1x40x5x1024,  64 ent. UNIT1
+				; C: 8" 2x77x8x1024, 256 ent. UNIT0
+				; D: 8" 1x77x26x128,  64 ent. UNIT0
+; MARK CORRECT FLOPPY SYSTEM WITH TRUE. NOTE ONLY ONE TUE.
+;******************************************************************
+	PAGE	42
+RATE0	EQU	00000000B	; 3ms/6ms
+RATE1	EQU	00000001B	; 6ms/12ms
+RATE2	EQU	00000010B	; 10ms/20ms
+RATE3	EQU	00000011B	; 15ms/30ms
+
+DOUBLS	EQU	0FFH		; DOUBLE SIDED
+SINGLS	EQU	0		; SINGLE SIDED
+
+UNIT0	EQU	00000000B	; PHYSICAL UNIT SELECT 0
+UNIT1	EQU	00000001B	; PHYSICAL UNIT SELECT 1
+UNIT2	EQU	00000010B	; PHYSICAL UNIT SELECT 2
+UNIT3	EQU	00000011B	; PHYSICAL UNIT SELECT 3
+
+INCH5	EQU	00001000B	; 5"-FLOPPY
+INCH8	EQU	11010100B	; 8"-FLOPPY
+
+DOUBLD	EQU	00000000B	; DOUBLE DENSITY
+SINGLD	EQU	00100000B	; SINGLE DENSITY
+
+COMM	EQU	0C0H		; COMMON AREA
Š
+	IF	M8
+SIGN	EQU	'8'
+	ELSE
+SIGN	EQU	'5'
+	ENDIF
+	EXTRN	FDREAD,FDWRIT,FDLGIN,FDINIT
+	PUBLIC	@DTBL,?TITEL
+	PUBLIC	@COMMO
+	CSEG
+@DTBL:	DW	FLA,FLB,FLC,FLD
+	DW	0,0,0,0
+	DW	0,0,0,0
+	DW	0,0,0,0
+@COMMO:	DB	COMM
+	PAGE
+	DSEG
+	IF	M8
+; Define 8" 2x77x8x1024, 256 entries. UNIT A:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH8+UNIT0+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLA:	DW	0		; NO TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F8D		; ADDRESS T. DPB
+	DW	0FFFEH		; CHECKSUM VECTOR SET BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR SET BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM SETUP
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK 
+
+
+; Define 8" 2x77x8x1024, 256 entries. UNIT B:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH8+UNIT1+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLB:	DW	0		; NO TRANS TABLE 
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F8D		; ADDRESS T. DPB
+	DW	0FFFEH		; CHECKSUM VECTOR SET BY GENCPM
Š	DW	0FFFEH		; ALLOC VECTOR SET BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM SETUP
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK
+
+	ENDIF
+	IF	M5
+; Define 5.25" 2x77x8x1024, 256 entries. UNIT A:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT0+DOUBLD+11000000B
+				; $FDXSL 2 MHz 8" Mode
+	DB	0		; 
+FLA:	DW	0		; NO TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F5MAX		; ADDRESS TO DPB
+	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK.
+
+
+; Define 5.25" 2x77x8x1024, 256 entries. UNIT B:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT1+DOUBLD+11000000B
+				; $FDXSL 2 MHz 8" Mode
+	DB	0		; 
+FLB:	DW	0		; NO TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F5MAX		; ADDRESS TO DPB
+	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK.
+
+	ENDIF
+	IF	M596D
+; Define 5.25" 2x80x5x1024, 128 entries. UNIT A:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT0+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLA:	DW	0		; NO TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F596D		; ADDRESS TO DPB
+	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK.
+
+
+; Define 5.25" 2x80x5x1024, 128 entries. UNIT B:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT1+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLB:	DW	0		; NO TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F596D		; ADDRESS TO DPB
+	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK.
+
+	ENDIF
+	IF	M548D
+
+; Define 5.25" 2x40x5x1024, 128 entries. UNIT A:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT0+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLA:	DW	0		; NO TRANS TABLE 
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F548D		; ADDRESS T. DPB
+	DW	0FFFEH		; CHECKSUM VECTOR SET BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR SET BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM SETUP
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK
+
+
+; Define 5.25" 2x40x5x1024, 128 entries. UNIT B:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT1+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLB:	DW	0		; NO TRANS TABLE 
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F548D		; ADDRESS T. DPB
+	DW	0FFFEH		; CHECKSUM VECTOR SET BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR SET BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM SETUP
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK
+
+	ENDIF
+	IF	M548S
+
+; Define 5.25" 1x40x5x1024, 64 entries. UNIT A:
+
+	DW	FDWRIT
Š	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT0+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLA:	DW	0		; NO TRANS TABLE 
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F548S		; ADDRESS T. DPB
+	DW	0FFFEH		; CHECKSUM VECTOR SET BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR SET BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM SETUP
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK
+
+
+; Define 5.25" 1x40x5x1024, 64 entries. UNIT B:
+
+	DW	FDWRIT
Š	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	DB	INCH5+UNIT1+DOUBLD
+				; $FDXSL
+	DB	0		; 
+FLB:	DW	0		; NO TRANS TABLE 
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F548S		; ADDRESS T. DPB
+	DW	0FFFEH		; CHECKSUM VECTOR SET BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR SET BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM SETUP
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK
+
+	ENDIF
+
+; Define UNIT C:
+; If M8 it is 5.25" 2x80x5x1024, 128 entries
+;          else  8" 2x77x8x1024, 256 entries.
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	IF	M8
+	DB	INCH5+UNIT0+DOUBLD ; $FDXSL
+	ELSE
+	DB	INCH8+UNIT0+DOUBLD
+	ENDIF
+	DB	0		; 
+FLC:	DW	0		; NO TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	IF	M8
+	DW	F596D		; ADDRESS TO DPB
+	ELSE
+	DW	F8D
+	ENDIF
+	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK.
+
+; Define 8" 1x77x26x128, 64 entries (IBM). UNIT D:
+
+	DW	FDWRIT
+	DW	FDREAD
+	DW	FDLGIN
+	DW	FDINIT
+	IF	M8
+	DB	INCH8+UNIT1+SINGLD ; $FDXSL
+	ELSE
+	DB	INCH8+UNIT0+SINGLD
+	ENDIF
+	DB	0		; 
+FLD:	DW	TRANS		; TRANS TABLE
+	DB	0,0,0,0,0,0,0,0,0
+	DB	0		; MEDIAFLAG
+	DW	F8S		; ADDRESS TO DPB
+	DW	0FFFEH		; CHECKSUM VECTOR GEN. BY GENCPM
+	DW	0FFFEH		; ALLOC VECTOR GEN. BY GENCPM
+	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
+	DW	0FFFEH		; DIRBCB, DTABCB, HASH
+	DB	0		; HASH BANK.
+
+	CSEG
+; DPB for 8" 2x77x8x1024, 256 entries.
+
+F8D:	DW	64		; Number of logical sect/track
+	DB	4,0FH		; BLOCK SKIFT and MASK
+	DB	0		; EXTENT MASK
+	DW	607		; MAX BLOCKNUMBER
+	DW	256-1		; 256 DIR. ENTRIES
+	DB	0F0H,0		; ALLOC VECTOR TO DIR
+	DW	256/4		; CHECKSUMMA SIZE
+	DW	2		; NUMBER OF OFFSET TRACKS
+	DB	0		; PHYS. SECTOR SIZE
+	DB	0		; PHYS. SECTOR SHIFT-MASK
+
+	DB	0		; Floppy
+	DB	8		; No. of log.sec./phys. sec.
+	DB	22		; Read time out
+	DB	19		; Write time out
+	DB	0FFH		; Double sided
+	DB	VERIFY		; Verify after write
+	DB	RATE0		; Step rate
+	DB	INCH8+DOUBLD	; Boot select
+	DB	0,0,0,0,0,0	; Dummies
+
+
+; DPB for 8" 1x77x26x128, 64 entries. (IBM)
+
+F8S:	DW	26		; No. of logical sectors/track.
+	DB	3,7		; BLOCK SKIFT AND MASK
+	DB	0		; EXTENT MASK
+	DW	242		; MAX BLOCKNUMBER
+	DW	64-1		; 64 DIR. ENTRIES
+	DB	0C0H,0		; ALLOC VECTOR TO DIR
+	DW	64/4		; CHECKSUM SIZE
+	DW	2		; OFFSET TRACK
+	DB	0		; PHYS.SECTOR SIZE
+	DB	0		; PHYS. SECTOR SHIFT-MASK
+
+	DB	0		; Floppy
+	DB	1		; No. of logical sectors/phys. sector.
+	DB	22		; Read time out
+	DB	19		; Write time out
+	DB	0		; Single sided
+	DB	VERIFY		; Verify after write
+	DB	RATE0		; Step rate
+	DB	INCH8+SINGLD	; Boot select
+	DB	0,0,0,0,0,0	; Dummies
+
+; DPB for 5.25" 2x77x8x1024, 256 entries.
+
+F5MAX:	DW	64		; No. of logical sectors/track.
+	DB	4,0FH		; BLOCK SKIFT AND MASK
+	DB	0		; EXTENT MASK
+	DW	607		; MAX BLOCKNUMBER
+	DW	256-1		; 256 DIR. ENTRIES
+	DB	0F0H,0		; ALLOC VECTOR TO DIR
+	DW	256/4		; CHECKSUM SIZE
+	DW	2		; OFFSET TRACKS
+	DB	0		; PHYS. SECTOR SIZE
+	DB	0		; PHYS. SECTOR SHIFT-MASK
+
+	DB	0		; Floppy
+	DB	8		; No. of logical sectors/phys. sector.
+	DB	22		; Read time out
+	DB	19		; Write time out
+	DB	0FFH		; Double sided
+	DB	VERIFY		; Verify after write
+	DB	RATE0		; Step rate
+	DB	INCH5+DOUBLD+11000000B	; Boot select
+	DB	0,0,0,0,0,0	; Dummies
+
+
+; DPB for 5.25" 2x80x5x1024, 128 entries.
+
+F596D:	DW	40		; No. of logical sectors/track.
+	DB	4,0FH		; BLOCK SKIFT AND MASK
+	DB	0		; EXTENT MASK
+	DW	394		; MAX BLOCKNUMBER
+	DW	128-1		; 128 DIR. ENTRIES
+	DB	0C0H,0		; ALLOC VECTOR TO DIR
+	DW	128/4		; CHECKSUM SIZE
+	DW	2		; OFFSET TRACKS
+	DB	0		; PHYS. SECTOR SIZE
+	DB	0		; PHYS. SECTOR SHIFT-MASK
+
+	DB	0		; Floppy
+	DB	8		; No. of logical sectors/phys. sector.
+	DB	22		; Read time out
+	DB	19		; Write time out
+	DB	0FFH		; Double sided
+	DB	VERIFY		; Verify after write
+	DB	RATE0		; Step rate
+	DB	INCH5+DOUBLD	; Boot select
+	DB	0,0,0,0,0,0	; Dummies
+
+; DPB for 5.25" 2x40x5x1024, 128 entries.
+
+F548D:	DW	40		; No. of logical sectors/track.
+	DB	4,0FH		; BLOCK SKIFT AND MASK
+	DB	1		; EXTENT MASK
+	DW	194		; MAX BLOCKNUMBER
+	DW	128-1		; 128 DIR. ENTRIES
+	DB	0C0H,0		; ALLOC VECTOR TO DIR
+	DW	128/4		; CHECKSUM SIZE
+	DW	2		; OFFSET TRACKS
+	DB	0		; PHYS: SECTOR SIZE
+	DB	0		; PHYS. SECTOR SHIFT-MASK
+
+	DB	0		; Floppy
+	DB	8		; No. of logical sectors/phys. sector
+	DB	22		; Read time out
+	DB	19		; Write time out
+	DB	0FFH		; Double sided
+	DB	VERIFY		; Verify after write
+	DB	RATE0		; Step rate
+	DB	INCH5+DOUBLD	; Boot select
+	DB	0,0,0,0,0,0	; Dummies
+
+
+; DPB for 5.25" 1x40x5x1024, 64 entries.
+
+F548S:	DW	40		; No. of logical sectors/track.
+	DB	3,7		; BLOCK SKIFT AND MASK
+	DB	0		; EXTENT MASK
+	DW	189		; MAX BLOCKNUMBER
+	DW	64-1		; 64 DIR. ENTRIES
+	DB	0C0H,0		; ALLOC VECTOR TILL DIR
+	DW	64/4		; CHECKSUM SIZE
+	DW	2		; OFFSET TRACKS
+	DB	0		; PHYS. SECTOR SIZE
+	DB	0		; PHYS. SECTOR SHIFT-MASK
+
+	DB	0		; Floppy
+	DB	8		; No. of logical sector/phys. sector
+	DB	22		; Read time out
+	DB	19		; Write time out
+	DB	0		; Single sided
+	DB	VERIFY		; Verify after write
+	DB	RATE0		; Step rate
+	DB	INCH5+DOUBLD	; Boot select
+	DB	0,0,0,0,0,0	; Dummies
+
+?TITEL:	DB	'80. '
+	DB	SIGN,'"-floppy-version. '
+	IF	M8
+	DB	'2x1.2 MBytes.'
+	ENDIF
+	IF	M5
+	DB	'2x1.2 MBytes.'
+	ENDIF
+	IF	M596D
+	DB	'2x800 KBytes.'
+	ENDIF
+	IF	M548D
+	DB	'2x400 KBytes.'
+	ENDIF
+	IF	M548S
+	DB	'2x200 KBytes.'
+	ENDIF
+	DB	13,10,0	
+
+TRANS:	DB	1,7,13,19,25
Š	DB	5,11,17,23
+	DB	3,9,15,21
+	DB	2,8,14,20,26
+	DB	6,12,18,24
+	DB	4,10,16,22
+
+	END
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/fdrives.rel


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/formater.com


+ 158 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gcf.dat

@@ -0,0 +1,158 @@
+PRTMSG   = Y
+PAGWID   = 4F
+PAGLEN   = 17
+BACKSPC  = N
+RUBOUT   = N
+BOOTDRV  = A
+MEMTOP   = FF
+BNKSWT   = Y
+COMBAS   = C0
+LERROR   = Y
+NUMSEGS  = 01
+MEMSEG00 = 0F,73,00
+MEMSEG01 = 0D,84,00
+MEMSEG02 = 00,C0,03
+MEMSEG03 = 00,C0,04
+MEMSEG04 = 00,C0,05
+MEMSEG05 = 00,C0,06
+MEMSEG06 = 00,C0,07
+MEMSEG07 = 00,C0,08
+MEMSEG08 = 00,C0,09
+MEMSEG09 = 00,C0,0A
+MEMSEG0A = 00,C0,0B
+MEMSEG0B = 00,C0,0C
+MEMSEG0C = 00,C0,0D
+MEMSEG0D = 00,C0,0E
+MEMSEG0E = 00,C0,0F
+MEMSEG0F = 00,C0,10
+HASHDRVA = Y
+HASHDRVB = Y
+HASHDRVC = Y
+HASHDRVD = Y
+HASHDRVE = Y
+HASHDRVF = Y
+HASHDRVG = Y
+HASHDRVH = Y
+HASHDRVI = Y
+HASHDRVJ = Y
+HASHDRVK = Y
+HASHDRVL = Y
+HASHDRVM = Y
+HASHDRVN = Y
+HASHDRVO = Y
+HASHDRVP = Y
+ALTBNKSA = N
+ALTBNKSB = N
+ALTBNKSC = N
+ALTBNKSD = N
+ALTBNKSE = N
+ALTBNKSF = N
+ALTBNKSG = N
+ALTBNKSH = N
+ALTBNKSI = N
+ALTBNKSJ = N
+ALTBNKSK = N
+ALTBNKSL = N
+ALTBNKSM = N
+ALTBNKSN = N
+ALTBNKSO = N
+ALTBNKSP = N
+NDIRRECA = 20
+NDIRRECB = 20
+NDIRRECC = 40
+NDIRRECD = 00
+NDIRRECE = 20
+NDIRRECF = 20
+NDIRRECG = 08
+NDIRRECH = 08
+NDIRRECI = 01
+NDIRRECJ = 01
+NDIRRECK = 01
+NDIRRECL = 01
+NDIRRECM = 01
+NDIRRECN = 01
+NDIRRECO = 01
+NDIRRECP = 01
+NDTARECA = 00
+NDTARECB = 00
+NDTARECC = 00
+NDTARECD = 00
+NDTARECE = 00
+NDTARECF = 00
+NDTARECG = 00
+NDTARECH = 00
+NDTARECI = 01
+NDTARECJ = 01
+NDTARECK = 01
+NDTARECL = 01
+NDTARECM = 01
+NDTARECN = 01
+NDTARECO = 01
+NDTARECP = 01
+ODIRDRVA = A
+ODIRDRVB = A
+ODIRDRVC = A
+ODIRDRVD = C
+ODIRDRVE = A
+ODIRDRVF = A
+ODIRDRVG = A
+ODIRDRVH = A
+ODIRDRVI = A
+ODIRDRVJ = A
+ODIRDRVK = A
+ODIRDRVL = A
+ODIRDRVM = A
+ODIRDRVN = A
+ODIRDRVO = A
+ODIRDRVP = A
+ODTADRVA = A
+ODTADRVB = A
+ODTADRVC = A
+ODTADRVD = A
+ODTADRVE = A
+ODTADRVF = A
+ODTADRVG = A
+ODTADRVH = A
+ODTADRVI = A
+ODTADRVJ = A
+ODTADRVK = A
+ODTADRVL = A
+ODTADRVM = A
+ODTADRVN = A
+ODTADRVO = A
+ODTADRVP = A
+OVLYDIRA = Y
+OVLYDIRB = Y
+OVLYDIRC = Y
+OVLYDIRD = Y
+OVLYDIRE = Y
+OVLYDIRF = Y
+OVLYDIRG = Y
+OVLYDIRH = Y
+OVLYDIRI = Y
+OVLYDIRJ = Y
+OVLYDIRK = Y
+OVLYDIRL = Y
+OVLYDIRM = Y
+OVLYDIRN = Y
+OVLYDIRO = Y
+OVLYDIRP = Y
+OVLYDTAA = Y
+OVLYDTAB = Y
+OVLYDTAC = Y
+OVLYDTAD = Y
+OVLYDTAE = Y
+OVLYDTAF = Y
+OVLYDTAG = Y
+OVLYDTAH = Y
+OVLYDTAI = Y
+OVLYDTAJ = Y
+OVLYDTAK = Y
+OVLYDTAL = Y
+OVLYDTAM = Y
+OVLYDTAN = Y
+OVLYDTAO = Y
+OVLYDTAP = Y
+CRDATAF  = N
+DBLALV   = Y
+

+ 158 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gcw.dat

@@ -0,0 +1,158 @@
+PRTMSG   = Y
+PAGWID   = 4F
+PAGLEN   = 17
+BACKSPC  = N
+RUBOUT   = N
+BOOTDRV  = A
+MEMTOP   = FF
+BNKSWT   = Y
+COMBAS   = BC
+LERROR   = Y
+NUMSEGS  = 01
+MEMSEG00 = 0F,5F,00
+MEMSEG01 = 0D,84,00
+MEMSEG02 = 00,C0,03
+MEMSEG03 = 00,C0,04
+MEMSEG04 = 00,C0,05
+MEMSEG05 = 00,C0,06
+MEMSEG06 = 00,C0,07
+MEMSEG07 = 00,C0,08
+MEMSEG08 = 00,C0,09
+MEMSEG09 = 00,C0,0A
+MEMSEG0A = 00,C0,0B
+MEMSEG0B = 00,C0,0C
+MEMSEG0C = 00,C0,0D
+MEMSEG0D = 00,C0,0E
+MEMSEG0E = 00,C0,0F
+MEMSEG0F = 00,C0,10
+HASHDRVA = Y
+HASHDRVB = Y
+HASHDRVC = Y
+HASHDRVD = N
+HASHDRVE = Y
+HASHDRVF = Y
+HASHDRVG = Y
+HASHDRVH = Y
+HASHDRVI = Y
+HASHDRVJ = Y
+HASHDRVK = Y
+HASHDRVL = Y
+HASHDRVM = Y
+HASHDRVN = Y
+HASHDRVO = Y
+HASHDRVP = Y
+ALTBNKSA = N
+ALTBNKSB = N
+ALTBNKSC = N
+ALTBNKSD = N
+ALTBNKSE = N
+ALTBNKSF = N
+ALTBNKSG = N
+ALTBNKSH = N
+ALTBNKSI = N
+ALTBNKSJ = N
+ALTBNKSK = N
+ALTBNKSL = N
+ALTBNKSM = N
+ALTBNKSN = N
+ALTBNKSO = N
+ALTBNKSP = N
+NDIRRECA = 08
+NDIRRECB = 3F
+NDIRRECC = 3F
+NDIRRECD = 00
+NDIRRECE = 20
+NDIRRECF = 20
+NDIRRECG = 08
+NDIRRECH = 08
+NDIRRECI = 01
+NDIRRECJ = 01
+NDIRRECK = 01
+NDIRRECL = 01
+NDIRRECM = 01
+NDIRRECN = 01
+NDIRRECO = 01
+NDIRRECP = 01
+NDTARECA = 00
+NDTARECB = 00
+NDTARECC = 00
+NDTARECD = 00
+NDTARECE = 00
+NDTARECF = 00
+NDTARECG = 00
+NDTARECH = 00
+NDTARECI = 01
+NDTARECJ = 01
+NDTARECK = 01
+NDTARECL = 01
+NDTARECM = 01
+NDTARECN = 01
+NDTARECO = 01
+NDTARECP = 01
+ODIRDRVA = A
+ODIRDRVB = A
+ODIRDRVC = A
+ODIRDRVD = C
+ODIRDRVE = A
+ODIRDRVF = A
+ODIRDRVG = A
+ODIRDRVH = A
+ODIRDRVI = A
+ODIRDRVJ = A
+ODIRDRVK = A
+ODIRDRVL = A
+ODIRDRVM = A
+ODIRDRVN = A
+ODIRDRVO = A
+ODIRDRVP = A
+ODTADRVA = A
+ODTADRVB = A
+ODTADRVC = A
+ODTADRVD = A
+ODTADRVE = A
+ODTADRVF = A
+ODTADRVG = A
+ODTADRVH = A
+ODTADRVI = A
+ODTADRVJ = A
+ODTADRVK = A
+ODTADRVL = A
+ODTADRVM = A
+ODTADRVN = A
+ODTADRVO = A
+ODTADRVP = A
+OVLYDIRA = Y
+OVLYDIRB = Y
+OVLYDIRC = Y
+OVLYDIRD = Y
+OVLYDIRE = Y
+OVLYDIRF = Y
+OVLYDIRG = Y
+OVLYDIRH = Y
+OVLYDIRI = Y
+OVLYDIRJ = Y
+OVLYDIRK = Y
+OVLYDIRL = Y
+OVLYDIRM = Y
+OVLYDIRN = Y
+OVLYDIRO = Y
+OVLYDIRP = Y
+OVLYDTAA = Y
+OVLYDTAB = Y
+OVLYDTAC = Y
+OVLYDTAD = Y
+OVLYDTAE = Y
+OVLYDTAF = Y
+OVLYDTAG = Y
+OVLYDTAH = Y
+OVLYDTAI = Y
+OVLYDTAJ = Y
+OVLYDTAK = Y
+OVLYDTAL = Y
+OVLYDTAM = Y
+OVLYDTAN = Y
+OVLYDTAO = Y
+OVLYDTAP = Y
+CRDATAF  = N
+DBLALV   = Y
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gencom.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gencpm.com


+ 158 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/gencpm.dat

@@ -0,0 +1,158 @@
+PRTMSG   = Y
+PAGWID   = 4F
+PAGLEN   = 17
+BACKSPC  = N
+RUBOUT   = N
+BOOTDRV  = A
+MEMTOP   = FF
+BNKSWT   = Y
+COMBAS   = BC
+LERROR   = Y
+NUMSEGS  = 01
+MEMSEG00 = 0F,5F,00
+MEMSEG01 = 0D,84,00
+MEMSEG02 = 00,C0,03
+MEMSEG03 = 00,C0,04
+MEMSEG04 = 00,C0,05
+MEMSEG05 = 00,C0,06
+MEMSEG06 = 00,C0,07
+MEMSEG07 = 00,C0,08
+MEMSEG08 = 00,C0,09
+MEMSEG09 = 00,C0,0A
+MEMSEG0A = 00,C0,0B
+MEMSEG0B = 00,C0,0C
+MEMSEG0C = 00,C0,0D
+MEMSEG0D = 00,C0,0E
+MEMSEG0E = 00,C0,0F
+MEMSEG0F = 00,C0,10
+HASHDRVA = Y
+HASHDRVB = Y
+HASHDRVC = Y
+HASHDRVD = N
+HASHDRVE = Y
+HASHDRVF = Y
+HASHDRVG = Y
+HASHDRVH = Y
+HASHDRVI = Y
+HASHDRVJ = Y
+HASHDRVK = Y
+HASHDRVL = Y
+HASHDRVM = Y
+HASHDRVN = Y
+HASHDRVO = Y
+HASHDRVP = Y
+ALTBNKSA = N
+ALTBNKSB = N
+ALTBNKSC = N
+ALTBNKSD = N
+ALTBNKSE = N
+ALTBNKSF = N
+ALTBNKSG = N
+ALTBNKSH = N
+ALTBNKSI = N
+ALTBNKSJ = N
+ALTBNKSK = N
+ALTBNKSL = N
+ALTBNKSM = N
+ALTBNKSN = N
+ALTBNKSO = N
+ALTBNKSP = N
+NDIRRECA = 08
+NDIRRECB = 3F
+NDIRRECC = 3F
+NDIRRECD = 00
+NDIRRECE = 20
+NDIRRECF = 20
+NDIRRECG = 08
+NDIRRECH = 08
+NDIRRECI = 01
+NDIRRECJ = 01
+NDIRRECK = 01
+NDIRRECL = 01
+NDIRRECM = 01
+NDIRRECN = 01
+NDIRRECO = 01
+NDIRRECP = 01
+NDTARECA = 00
+NDTARECB = 00
+NDTARECC = 00
+NDTARECD = 00
+NDTARECE = 00
+NDTARECF = 00
+NDTARECG = 00
+NDTARECH = 00
+NDTARECI = 01
+NDTARECJ = 01
+NDTARECK = 01
+NDTARECL = 01
+NDTARECM = 01
+NDTARECN = 01
+NDTARECO = 01
+NDTARECP = 01
+ODIRDRVA = A
+ODIRDRVB = A
+ODIRDRVC = A
+ODIRDRVD = C
+ODIRDRVE = A
+ODIRDRVF = A
+ODIRDRVG = A
+ODIRDRVH = A
+ODIRDRVI = A
+ODIRDRVJ = A
+ODIRDRVK = A
+ODIRDRVL = A
+ODIRDRVM = A
+ODIRDRVN = A
+ODIRDRVO = A
+ODIRDRVP = A
+ODTADRVA = A
+ODTADRVB = A
+ODTADRVC = A
+ODTADRVD = A
+ODTADRVE = A
+ODTADRVF = A
+ODTADRVG = A
+ODTADRVH = A
+ODTADRVI = A
+ODTADRVJ = A
+ODTADRVK = A
+ODTADRVL = A
+ODTADRVM = A
+ODTADRVN = A
+ODTADRVO = A
+ODTADRVP = A
+OVLYDIRA = Y
+OVLYDIRB = Y
+OVLYDIRC = Y
+OVLYDIRD = Y
+OVLYDIRE = Y
+OVLYDIRF = Y
+OVLYDIRG = Y
+OVLYDIRH = Y
+OVLYDIRI = Y
+OVLYDIRJ = Y
+OVLYDIRK = Y
+OVLYDIRL = Y
+OVLYDIRM = Y
+OVLYDIRN = Y
+OVLYDIRO = Y
+OVLYDIRP = Y
+OVLYDTAA = Y
+OVLYDTAB = Y
+OVLYDTAC = Y
+OVLYDTAD = Y
+OVLYDTAE = Y
+OVLYDTAF = Y
+OVLYDTAG = Y
+OVLYDTAH = Y
+OVLYDTAI = Y
+OVLYDTAJ = Y
+OVLYDTAK = Y
+OVLYDTAL = Y
+OVLYDTAM = Y
+OVLYDTAN = Y
+OVLYDTAO = Y
+OVLYDTAP = Y
+CRDATAF  = N
+DBLALV   = Y
+

+ 4 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/genfbios.sub

@@ -0,0 +1,4 @@
+PIP GENCPM.DAT=GCF.DAT[W
+LINK BNKBIOS3[B]=BIOSKRNL,BOOT,CHARIO,FDRIVES,SCB,EXTMEM
+GENCPM $1 $2
+

+ 4 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/genwbios.sub

@@ -0,0 +1,4 @@
+PIP GENCPM.DAT=GCW.DAT[W
+LINK BNKBIOS3[B]=BIOSKRNL,BOOT,CHARIO,WDRIVES,SCB,EXTMEM
+GENCPM $1 $2
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/get.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/help.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/help.hlp


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hexcom.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hist.utl


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hit.com


+ 102 - 0
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/hitdit.doc

@@ -0,0 +1,102 @@
+
+               HIT och DIT
+
+
+     HIÔ  ocè DIÔ {ò ² prograí f|ò snabâ ocè enkeì |verf|rinç  aö �
+filer mellan JET-datorer.
+
+     \verf|ringeî  skeò viá eî bildsk{rmskabeì soí ansluteó pý då �
+seriellá printer/Modeí portarna®  \verf|ringeî skeò blockvió  12¸ �
+byteó  peò  blocë meä kontrollsummá LRC f|ò varjå blocë  ocè  meä �
+automatisk kontroll av antal block, hastigheten {r 38400 Baud.
+
+     HIÔ {ò programmeô soí arbetaò é deî mottagandå datorn.
+
+Startaó  meä kommandoô HIT¬  oí mottagná fileò skalì placeraó  pý �
+defaulô drive¬  elleò meä 'HIÔ Drive:§ oí filerná ská placeraó pý �
+annaî  drivå {î default®  HIÔ skriveò kontinuerligô uô vilkeî fiì �
+soí  {ò undeò |verf|rinç ocè angeò vilká fileò soí haò  |verf|rtó �
+korrekt®  HIÔ avslutaó meä CTRÌ C®  Observerá atô HIÔ raderaò ev® �
+tidigarå fileò oí deô ankommeò nyá meä sammá namn.
+
+Exempel:
+
+A>B:HIT B:
+
+HIT ( 1.1 ) JET-80 CPM 3.0 
+
+Reciving file QQ      .SUB   Old file deleted.   File transferred
+Reciving file SS      .SUB   Old file deleted.   File transferred
+Reciving file C       .SUB   Old file deleted.   File transferred
+Reciving file PROFILE .SUB   Old file deleted.   File transferred
+
+     4 Files transferred
+
+No data   -- waiting-- 
+Reciving file M80     .COM   Old file deleted.  File transferred
+Reciving file M80     .REL   Old file deleted.  File transferred
+Reciving file MATH    .H     Old file deleted.  File transferred
+
+     7 Files transferred
+
+HIT terminated due to operator request
+
+    7 Files transferred
+
+HIT end
+.PA
Š     DIÔ {ò programmeô soí arbetaò é deî s{ndandå datorn.
+
+Startaó  meä kommandoô 'DIÔ Filnamn'®  F|ò filnamî  g{lleò  sammá �
+syntaø  soí  é PIÐ ocè DIR¬  D.v.ó '?§ ocè '*§ kaî  anv{ndaó  soí �
+"wildcard"®  S{ndningeî inledó meä atô samtligá fileò soí matchaò �
+"Filnamn¢ skrivs® DIÔ kaî avbrytaó meä CTRÌ C.
+
+Exempel:
+
+A>B:DIT *.Z80
+
+DIT ( 1.0 )   JET-80  CP/M 3.0
+
+Files to be sent:
+
+CHARIO  .Z80   BOOT    .Z80   IOS     .Z80   WDRIVES .Z80  
+FDRIVES .Z80   BIOSKRNL.Z80   
+No answer -waiting 
+
+Sending file A:CHARIO  .Z80  
+
+Exit due to fatal error
+
+No FILES transferred
+     2 Errors
+
+DIT end
+
+
+
+A>B:
+B>DIT *.Z80
+
+DIT ( 1.0 )   JET-80  CP/M 3.0
+
+----  NO Files  ---  
+
+
+B>DIT A:*.Z80
+
+DIT ( 1.0 )   JET-80  CP/M 3.0
+
+Files to be sent:
+
+BOOT    .Z80   IOS     .Z80   WDRIVES .Z80   FDRIVES .Z80   BIOSKRNL.Z80   
+CHARIO  .Z80   
+
+Sending file A:CHARIO  .Z80  File transferd
+Sending file A:BIOSKRNL.Z80  File transferd
+Sending file A:FDRIVES .Z80  
+
+Exit due to operator request
+
+     2 Files transferred
+DIT end
Š
+

BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/initdir.com


BIN
sw/CPM/CPM_Plus_3.0_snr_1113_59590/CPM_Plus_3.0_snr_1113_59590/ios.rel


Some files were not shown because too many files changed in this diff