Browse Source

Bringing trunk up to status of old "current"

pull/3/head
wayne 13 years ago
parent
commit
191f08cc46
  1. BIN
      Apps/apps-bins/access.com
  2. BIN
      Apps/apps-bins/banker.com
  3. BIN
      Apps/apps-bins/cpmname.com
  4. BIN
      Apps/apps-bins/findfile.com
  5. BIN
      Apps/apps-bins/map.com
  6. BIN
      Apps/apps-bins/meta.com
  7. BIN
      Apps/apps-bins/multifmt.com
  8. BIN
      Apps/apps-bins/noaccess.com
  9. BIN
      Apps/apps-bins/setlabel.com
  10. BIN
      Apps/apps-bins/sysgen.com
  11. BIN
      Apps/apps-bins/termtype.com
  12. BIN
      Apps/apps-bins/view.com
  13. 338
      Apps/apps-srcs/TESTV5.BAS
  14. BIN
      Apps/apps-srcs/sources.lbr
  15. 28
      Apps/apps-srcs/testv5.c
  16. BIN
      Apps/apps-srcs/testv5.cmd
  17. 4
      Apps/apps-srcs/testv5.sub
  18. 473
      Apps/apps-srcs/tms9918.h
  19. BIN
      Apps/core/access.com
  20. BIN
      Apps/core/cpmname.com
  21. BIN
      Apps/core/findfile.com
  22. BIN
      Apps/core/map.com
  23. BIN
      Apps/core/meta.com
  24. BIN
      Apps/core/multifmt.com
  25. BIN
      Apps/core/noaccess.com
  26. BIN
      Apps/core/setlabel.com
  27. BIN
      Apps/core/sysgen.com
  28. BIN
      Apps/core/termtype.com
  29. BIN
      Apps/core/view.com
  30. 4
      Apps/n8vidtst/build.sub
  31. 67
      Apps/n8vidtst/n8vidtst.c
  32. BIN
      Apps/n8vidtst/n8vidtst.cpm
  33. 18
      Apps/n8vidtst/readme.txt
  34. 637
      Apps/n8vidtst/tms9918.h
  35. 1
      DiskImg/Blank.img
  36. 25
      DiskImg/Build.cmd
  37. 45
      DiskImg/Build.ps1
  38. 12663
      DiskImg/Disk.img
  39. 341
      DiskImg/diskdefs
  40. BIN
      DiskImg/hd0/X0.DAT
  41. BIN
      DiskImg/hd1/X1.DAT
  42. BIN
      DiskImg/hd2/X2.DAT
  43. 69
      DiskImg/hd3/VIDATT.Z80
  44. BIN
      DiskImg/hd3/WS.OVR
  45. BIN
      DiskImg/hd3/WSCHANGE.COM
  46. BIN
      DiskImg/hd3/WSCHANGE.OVR
  47. BIN
      DiskImg/hd3/WSCHHELP.OVR
  48. BIN
      DiskImg/hd3/WSHELP.OVR
  49. BIN
      DiskImg/hd3/WSMSGS.OVR
  50. BIN
      DiskImg/hd3/WSPRINT.OVR
  51. 142
      DiskImg/hd3/WSPRINT.TST
  52. 880
      DiskImg/hd3/WSREADME.TXT
  53. BIN
      DiskImg/hd3/WSSHORT.OVR
  54. BIN
      DiskImg/hd3/WSU.COM
  55. BIN
      Doc/RomWBW Architecture.pdf
  56. 132
      Doc/SD-howto.txt
  57. BIN
      Doc/Source/RomWBW Architecture.docx
  58. BIN
      Doc/Source/RomWBW Architecture.vsd
  59. 76
      Source/bnk1.asm
  60. 5
      Source/bootapp.asm
  61. 5
      Source/bootrom.asm
  62. 29
      Source/cbios.asm
  63. 90
      Source/dbgmon.asm
  64. 43
      Source/loader.asm
  65. 8
      Source/ppide.asm
  66. 44
      Source/ppp.asm
  67. 32
      Source/sd.asm
  68. 36
      Source/std.asm
  69. 58
      Source/util.asm
  70. 57
      Source/vdu.asm
  71. 8
      Source/ver.inc
  72. 378
      XSource/Makefile
  73. 7
      XSource/README.TXT
  74. 162
      XSource/bin/8051.H
  75. 62
      XSource/bin/COPYRIGH.TXT
  76. BIN
      XSource/bin/CPMCHATTR
  77. BIN
      XSource/bin/CPMCHMOD
  78. BIN
      XSource/bin/CPMCP
  79. BIN
      XSource/bin/CPMLS
  80. BIN
      XSource/bin/CPMRM
  81. BIN
      XSource/bin/CVT2MAC
  82. BIN
      XSource/bin/MAKE
  83. 20
      XSource/bin/MOTO.H
  84. 63
      XSource/bin/Makefile
  85. 82
      XSource/bin/ORDERFRM.HTM
  86. 55
      XSource/bin/ORDERFRM.TXT
  87. BIN
      XSource/bin/README-MAC.PNG
  88. 18
      XSource/bin/README.1ST
  89. 46
      XSource/bin/README.TXT
  90. 213
      XSource/bin/RELNOTES.TXT
  91. BIN
      XSource/bin/TASM
  92. 215
      XSource/bin/TASM05.TAB
  93. 205
      XSource/bin/TASM3210.TAB
  94. 456
      XSource/bin/TASM3225.TAB
  95. 281
      XSource/bin/TASM48.TAB
  96. 285
      XSource/bin/TASM51.TAB
  97. 222
      XSource/bin/TASM65.TAB
  98. 348
      XSource/bin/TASM68.TAB
  99. 290
      XSource/bin/TASM70.TAB
  100. 594
      XSource/bin/TASM80.TAB

BIN
Apps/apps-bins/access.com

Binary file not shown.

BIN
Apps/apps-bins/banker.com

Binary file not shown.

BIN
Apps/apps-bins/cpmname.com

Binary file not shown.

BIN
Apps/apps-bins/findfile.com

Binary file not shown.

BIN
Apps/apps-bins/map.com

Binary file not shown.

BIN
Apps/apps-bins/meta.com

Binary file not shown.

BIN
Apps/apps-bins/multifmt.com

Binary file not shown.

BIN
Apps/apps-bins/noaccess.com

Binary file not shown.

BIN
Apps/apps-bins/setlabel.com

Binary file not shown.

BIN
Apps/apps-bins/sysgen.com

Binary file not shown.

BIN
Apps/apps-bins/termtype.com

Binary file not shown.

BIN
Apps/apps-bins/view.com

Binary file not shown.

338
Apps/apps-srcs/TESTV5.BAS

@ -0,0 +1,338 @@
5 PRINT "Simple VIDEO test for N8-2511; I/O Base is assumed as 128"
10 BASE=128
20 DATAP=BASE+24
30 CMDP=BASE+25
40 GOTO 140
50 PRINT "Let's set VDP write address to #0000"
60 OUT CMDP,0
70 OUT CMDP,64 :REM 40H
80 REM NOW LET's clear first 16Kb of VDP memory
90 PRINT "NOW LET's clear first 16Kb of VDP memory"
100 FOR A=0 TO 16383
110 REM PRINT "ADDR:";HEX$(A);CHR$(13);
120 OUT DATAP,0
130 NEXT A
140 PRINT "Now it is time to set up VDP registers"
160 REM Register 0 to #0
170 REM Set mode selection bit M3 (maybe also M4 & M5) to zero and
180 REM disable external video & horizontal interrupt
190 OUT CMDP,0
200 OUT CMDP,128 :REM 80h
210 REM Register 1 to #50
220 PRINT "Select 40 column mode, enable screen and disable vertical interrupt"
230 OUT CMDP,80 :REM 50h
240 OUT CMDP,129 :REM 81h
250 REM Register 2 to #0
260 PRINT "Set pattern name table to #0000"
270 OUT CMDP,0
280 OUT CMDP,130 :REM 82H
290 REM REGISTER 3 IS IGNORED AS 40 COLUMN MODE DOES NOT NEED COLOR TABLE
300 REM Register 4 to #1
310 PRINT "SET PATTERN GENERATOR TABLE TO #800"
320 OUT CMDP,1
330 OUT CMDP,132 :REM 84h
340 REM Registers 5 (Sprite attribute) & 6 (Sprite pattern) are ignored
350 REM as 40 column mode does not have sprites
360 REM Register 7 to #F0
370 PRINT "Set colors to white on black"
380 OUT CMDP,240 :REM F0h
390 OUT CMDP,135 :REM 87h
400 REM Let's set VDP write address to #800 so, that we can write
410 REM character set to memory
430 OUT CMDP,0
440 OUT CMDP,72 :REM 48h
450 REM Create a character set
460 PRINT "Create a character set"
470 FOR C=0 TO 255
480 FOR D=0 TO 7
500 READ V
510 OUT DATAP,V
520 NEXT D
530 NEXT C
540 REM Let's set write address to start of name table
550 PRINT "LET's put characters to screen"
555 D=0
560 OUT CMDP,0
570 OUT CMDP,64 :REM 40h
580 REM LET's put characters to screen
600 FOR C=0 TO ((40 * 24) - 1)
610 OUT DATAP,D
620 D=D+1
630 IF D=128 THEN D=0
640 NEXT C
700 BASE=128
710 DATAP=BASE+24
720 CMDP=BASE+25
730 OUT CMDP,0
740 OUT CMDP,0
750 FOR C=0 TO 16
760 V = INP(DATAP)
770 PRINT HEX$(V)
780 NEXT C
790 STOP
800 BASE=128
810 DATAP=BASE+24
820 CMDP=BASE+25
830 FOR C=0 TO 255
840 PRINT HEX$(C)
850 OUT CMDP,C
860 OUT CMDP,135 :REM REGISTER 7
870 INPUT "<RET> TO CONTINUE",A$
880 NEXT C
890 END
10000 DATA 0,0,0,0,0,0,0,0
10001 DATA 0,0,0,60,60,48,48,48
10002 DATA 0,0,0,240,240,48,48,48
10003 DATA 48,48,48,60,60,0,0,0
10004 DATA 48,48,48,240,240,0,0,0
10005 DATA 48,48,48,48,48,48,48,48
10006 DATA 0,0,0,255,255,0,0,0
10007 DATA 0,32,112,248,112,32,0,0
10008 DATA 248,216,136,0,136,216,248,0
10009 DATA 0,0,0,0,0,0,0,0
10010 DATA 0,0,0,0,0,0,0,0
10011 DATA 24,24,32,96,144,96,0,0
10012 DATA 32,80,32,32,112,32,0,0
10013 DATA 0,0,0,0,0,0,0,0
10014 DATA 0,0,0,0,0,0,0,0
10015 DATA 168,80,80,216,80,80,168,0
10016 DATA 48,48,48,252,252,48,48,48
10017 DATA 16,48,112,240,112,48,16,0
10018 DATA 32,112,32,32,32,112,32,0
10019 DATA 80,80,80,80,0,80,0,0
10020 DATA 120,168,168,104,40,40,0,0
10021 DATA 48,48,48,252,252,0,0,0
10022 DATA 0,0,0,252,252,48,48,48
10023 DATA 48,48,48,240,240,48,48,48
10024 DATA 32,112,32,32,32,32,32,32
10025 DATA 48,48,48,60,60,48,48,48
10026 DATA 0,16,24,252,24,16,0,0
10027 DATA 0,32,96,252,96,32,0,0
10028 DATA 0,0,0,0,0,0,0,0
10029 DATA 0,0,0,0,0,0,0,0
10030 DATA 0,0,0,0,0,0,0,0
10031 DATA 0,0,0,0,0,0,0,0
10032 DATA 0,0,0,0,0,0,0,0
10033 DATA 48,120,120,48,0,48,0,0
10034 DATA 216,216,80,0,0,0,0,0
10035 DATA 72,72,252,72,72,252,72,72
10036 DATA 32,120,160,120,36,248,32,0
10037 DATA 0,200,208,32,88,152,0,0
10038 DATA 48,72,72,80,96,144,120,0
10039 DATA 48,48,64,0,0,0,0,0
10040 DATA 16,32,32,32,32,32,16,0
10041 DATA 32,16,16,16,16,16,32,0
10042 DATA 32,168,112,248,112,168,32,0
10043 DATA 0,32,32,248,32,32,0,0
10044 DATA 0,0,0,0,0,48,48,64
10045 DATA 0,0,0,252,0,0,0,0
10046 DATA 0,0,0,0,0,48,48,0
10047 DATA 4,8,16,32,64,128,0,0
10048 DATA 112,152,168,168,168,200,112,0
10049 DATA 32,96,32,32,32,32,248,0
10050 DATA 32,80,16,32,64,128,248,0
10051 DATA 112,136,8,112,8,136,112,0
10052 DATA 48,80,144,248,16,16,16,0
10053 DATA 248,128,128,240,8,136,112,0
10054 DATA 56,64,128,240,136,136,112,0
10055 DATA 248,8,16,32,32,32,32,0
10056 DATA 112,136,136,112,136,136,112,0
10057 DATA 112,136,136,120,8,136,112,0
10058 DATA 0,48,48,0,48,48,0,0
10059 DATA 0,48,48,0,48,48,96,0
10060 DATA 16,32,64,128,64,32,16,0
10061 DATA 0,0,252,0,252,0,0,0
10062 DATA 64,32,16,8,16,32,64,0
10063 DATA 112,136,8,48,32,0,32,0
10064 DATA 112,136,184,176,128,128,112,0
10065 DATA 32,80,136,248,136,136,136,0
10066 DATA 240,72,72,112,72,72,240,0
10067 DATA 112,136,128,128,128,136,112,0
10068 DATA 240,72,72,72,72,72,240,0
10069 DATA 248,136,128,224,128,136,248,0
10070 DATA 248,136,128,240,128,128,128,0
10071 DATA 112,136,128,184,136,136,112,0
10072 DATA 136,136,136,248,136,136,136,0
10073 DATA 248,32,32,32,32,32,248,0
10074 DATA 28,8,8,8,8,136,112,0
10075 DATA 136,144,160,192,160,144,136,0
10076 DATA 128,128,128,128,128,136,248,0
10077 DATA 136,216,168,136,136,136,136,0
10078 DATA 136,200,168,168,168,152,136,0
10079 DATA 112,136,136,136,136,136,112,0
10080 DATA 240,136,136,240,128,128,128,0
10081 DATA 112,136,136,136,168,152,120,4
10082 DATA 240,136,136,240,160,144,136,0
10083 DATA 112,136,64,32,16,136,112,0
10084 DATA 248,32,32,32,32,32,112,0
10085 DATA 136,136,136,136,136,136,112,0
10086 DATA 136,136,136,80,80,80,32,0
10087 DATA 136,136,136,168,168,168,80,0
10088 DATA 136,136,80,32,80,136,136,0
10089 DATA 136,136,80,32,32,32,32,0
10090 DATA 248,136,16,32,64,136,248,0
10091 DATA 120,64,64,64,64,64,120,0
10092 DATA 0,128,64,32,16,8,0,0
10093 DATA 120,8,8,8,8,8,120,0
10094 DATA 32,80,136,0,0,0,0,0
10095 DATA 0,0,0,0,0,0,252,0
10096 DATA 96,96,16,0,0,0,0,0
10097 DATA 0,0,240,8,120,136,112,0
10098 DATA 128,128,128,240,136,136,240,0
10099 DATA 0,0,0,112,128,128,112,0
10100 DATA 8,8,8,120,136,136,120,0
10101 DATA 0,0,112,136,248,128,112,0
10102 DATA 0,48,72,224,64,64,64,0
10103 DATA 0,0,56,72,72,56,8,112
10104 DATA 0,128,128,176,200,136,136,0
10105 DATA 0,0,32,0,96,32,112,0
10106 DATA 0,8,0,24,8,8,72,48
10107 DATA 128,128,144,160,192,160,144,0
10108 DATA 32,32,32,32,32,32,32,0
10109 DATA 0,0,0,80,168,168,136,0
10110 DATA 0,0,0,176,200,136,136,0
10111 DATA 0,0,0,112,136,136,112,0
10112 DATA 0,0,112,72,72,112,64,64
10113 DATA 0,96,56,72,72,56,8,8
10114 DATA 0,0,0,176,200,128,128,0
10115 DATA 0,0,96,128,96,16,96,0
10116 DATA 0,0,64,224,64,64,32,0
10117 DATA 0,0,0,144,144,144,104,0
10118 DATA 0,0,0,136,136,80,32,0
10119 DATA 0,0,0,136,168,168,80,0
10120 DATA 0,0,0,72,48,48,72,0
10121 DATA 0,0,136,80,32,64,128,0
10122 DATA 0,0,248,16,32,64,248,0
10123 DATA 16,32,32,64,32,32,16,0
10124 DATA 32,32,32,0,32,32,32,0
10125 DATA 64,32,32,16,32,32,64,0
10126 DATA 108,144,0,0,0,0,0,0
10127 DATA 112,80,80,80,80,80,112,0
10128 DATA 0,0,0,0,0,0,0,0
10129 DATA 0,0,0,0,0,0,0,0
10130 DATA 0,0,0,0,0,0,0,0
10131 DATA 0,0,0,0,0,0,0,0
10132 DATA 0,0,0,0,0,0,0,0
10133 DATA 0,0,0,0,0,0,0,0
10134 DATA 0,0,0,0,0,0,0,0
10135 DATA 0,0,0,0,0,0,0,0
10136 DATA 0,0,0,0,0,0,0,0
10137 DATA 0,0,0,0,0,0,0,0
10138 DATA 0,0,0,0,0,0,0,0
10139 DATA 0,0,0,0,0,0,0,0
10140 DATA 0,0,0,0,0,0,0,0
10141 DATA 0,0,0,0,0,0,0,0
10142 DATA 0,0,0,0,0,0,0,0
10143 DATA 0,0,0,0,0,0,0,0
10144 DATA 0,0,0,0,0,0,0,0
10145 DATA 0,0,0,0,0,0,0,0
10146 DATA 0,0,0,0,0,0,0,0
10147 DATA 0,0,0,0,0,0,0,0
10148 DATA 0,0,0,0,0,0,0,0
10149 DATA 0,0,0,0,0,0,0,0
10150 DATA 0,0,0,0,0,0,0,0
10151 DATA 0,0,0,0,0,0,0,0
10152 DATA 0,0,0,0,0,0,0,0
10153 DATA 0,0,0,0,0,0,0,0
10154 DATA 0,0,0,0,0,0,0,0
10155 DATA 0,0,0,0,0,0,0,0
10156 DATA 0,0,0,0,0,0,0,0
10157 DATA 0,0,0,0,0,0,0,0
10158 DATA 0,0,0,0,0,0,0,0
10159 DATA 0,0,0,0,0,0,0,0
10160 DATA 32,64,240,8,120,136,112,0
10161 DATA 16,32,0,96,32,32,248,0
10162 DATA 16,32,0,112,136,136,112,0
10163 DATA 16,32,0,136,136,136,116,0
10164 DATA 16,32,0,176,200,136,136,0
10165 DATA 16,32,0,200,168,152,136,0
10166 DATA 112,136,136,124,0,252,0,0
10167 DATA 112,136,136,112,0,252,0,0
10168 DATA 32,0,32,32,64,136,112,0
10169 DATA 0,0,0,0,252,128,128,128
10170 DATA 0,0,0,0,252,4,4,4
10171 DATA 136,144,168,84,136,28,0,0
10172 DATA 136,144,168,88,184,8,0,0
10173 DATA 48,0,48,120,120,48,0,0
10174 DATA 20,40,80,160,80,40,20,0
10175 DATA 160,80,40,20,40,80,160,0
10176 DATA 84,170,84,170,84,170,84,170
10177 DATA 170,84,170,84,170,84,170,84
10178 DATA 182,108,218,182,108,218,182,108
10179 DATA 24,24,24,24,24,24,24,24
10180 DATA 24,24,24,24,248,24,24,24
10181 DATA 24,24,24,248,24,248,24,24
10182 DATA 108,108,108,108,236,108,108,108
10183 DATA 0,0,0,0,252,108,108,108
10184 DATA 0,0,0,252,108,236,108,108
10185 DATA 108,108,236,12,236,108,108,108
10186 DATA 108,108,108,108,108,108,108,108
10187 DATA 0,0,252,14,238,108,108,108
10188 DATA 108,108,236,12,252,0,0,0
10189 DATA 100,100,252,0,0,0,0,0
10190 DATA 48,48,240,48,48,240,0,0
10191 DATA 0,0,0,0,240,48,48,48
10192 DATA 48,48,48,48,60,0,0,0
10193 DATA 48,48,48,48,252,0,0,0
10194 DATA 0,0,0,0,252,48,48,48
10195 DATA 48,48,48,48,60,48,48,48
10196 DATA 0,0,0,0,252,0,0,0
10197 DATA 48,48,48,48,252,48,48,48
10198 DATA 48,48,60,48,60,48,48,48
10199 DATA 216,216,220,216,216,216,216,216
10200 DATA 216,216,216,220,192,252,0,0
10201 DATA 0,0,0,252,192,220,216,216
10202 DATA 216,216,216,220,192,0,252,0
10203 DATA 0,0,0,0,0,0,252,0
10204 DATA 216,216,216,220,192,220,216,216
10205 DATA 0,0,0,252,0,252,0,0
10206 DATA 216,216,216,220,0,220,216,216
10207 DATA 48,48,48,252,0,0,252,0
10208 DATA 216,216,216,252,0,0,0,0
10209 DATA 0,0,252,0,0,252,48,48
10210 DATA 0,0,0,0,0,252,216,216
10211 DATA 216,216,216,252,0,0,0,0
10212 DATA 48,48,48,60,48,48,60,0
10213 DATA 0,0,0,62,48,62,48,48
10214 DATA 0,0,0,0,0,252,216,216
10215 DATA 216,216,216,216,220,216,216,216
10216 DATA 48,48,252,0,0,252,48,48
10217 DATA 48,48,48,240,0,0,0,0
10218 DATA 0,0,0,60,48,48,48,48
10219 DATA 252,252,252,252,252,252,252,252
10220 DATA 0,0,0,252,252,252,192,192
10221 DATA 192,192,192,192,192,192,192,192
10222 DATA 12,12,12,12,12,12,12,12
10223 DATA 12,12,12,12,252,252,252,0
10224 DATA 0,0,0,104,144,144,104,0
10225 DATA 112,136,136,176,136,136,240,64
10226 DATA 240,144,128,128,128,128,128,0
10227 DATA 248,80,80,80,80,72,0,0
10228 DATA 248,136,64,32,64,136,248,0
10229 DATA 0,0,0,124,136,136,112,0
10230 DATA 0,0,0,136,136,136,112,128
10231 DATA 0,0,116,152,16,16,28,0
10232 DATA 252,16,56,68,56,16,252,0
10233 DATA 48,204,204,252,204,204,56,0
10234 DATA 120,132,132,132,72,72,132,0
10235 DATA 60,64,56,68,68,68,56,0
10236 DATA 0,0,108,146,146,108,0,0
10237 DATA 0,0,0,56,88,104,112,0
10238 DATA 56,64,128,248,128,64,56,0
10239 DATA 0,0,48,204,204,204,204,0
10240 DATA 252,0,0,252,0,0,252,0
10241 DATA 16,16,124,16,16,0,254,0
10242 DATA 32,16,8,16,32,0,254,0
10243 DATA 16,32,64,32,16,0,254,0
10244 DATA 24,52,48,48,48,48,48,48
10245 DATA 48,48,48,48,48,48,176,112
10246 DATA 48,48,0,252,0,48,48,0
10247 DATA 0,100,152,0,100,152,0,0
10248 DATA 56,68,68,56,0,0,0,0
10249 DATA 0,56,56,0,0,0,0,0
10250 DATA 0,0,56,0,0,0,0,0
10251 DATA 14,8,8,72,40,24,8,0
10252 DATA 0,0,0,176,72,72,72,0
10253 DATA 0,0,240,60,64,128,248,0
10254 DATA 252,252,252,252,252,252,252,252
10255 DATA 0,0,0,0,0,0,0,0

BIN
Apps/apps-srcs/sources.lbr

Binary file not shown.

28
Apps/apps-srcs/testv5.c

@ -0,0 +1,28 @@
/* testv5.c 8/30/2012 dwg - derived from Wayne's TESTV5.BAS */
/* Simple VIDEO test for N8; I/O Base assumed as 128 */
#include "tms9918.h"
int main(argc,argv)
int argc;
char *argv[];
{
vdp_clr16k();
vdp_setregs();
vdp_modes();
vdp_pnt();
vdp_pgt();
vdp_colors();
vdp_load_set450();
/* vdp_clr_regen(); */
vdp_fill();
/* vdp_num_regen(); */
/* vdp_clr_regen(); */
/* vdp_sync_regen(); */
func700();
/* vdp_display(); */
}


BIN
Apps/apps-srcs/testv5.cmd

Binary file not shown.

4
Apps/apps-srcs/testv5.sub

@ -0,0 +1,4 @@
cc testv5
as testv5
ln testv5.o -lc


473
Apps/apps-srcs/tms9918.h

@ -0,0 +1,473 @@
/* tms9918.h 8/31/2012 dwg - information from TI Docs */
/* http://www1.cs.columbia.edu/~sedwards/papers/TMS9918.pdf */
/* TMS9918 Modes:
Graphics I
Grtaphics Mode I provides 256x192 pixel display for generating
pattern graphics in 15 colors plus transparent.
Graphics II
Graphics mode II is an enhancement of Graphics Mode I, allowing
it to generate more complex color and pattern displays.
Multicolor
The Muylticolor mode provides an unrestricted 64x48
color-dot display employing 15 colors plus transparent.
Text Mode
The Text Mode provides twenty-four 40-character in two colors
and is intended to maximize the capacity of the TV screen to
display alphanumeric characters. (24 lines of forty blocks (each 8x8).
*/
#define BASE 128
#define DATAP (BASE+24)
#define CMDP (BASE+25)
#define WO_R0
#define WOR0B6
#define VDP_TRANSPARENT 0
#define VDP_BLACK 1
#define VDP_MED_GREEN 2
#define VDP_LGREEN 3
#define VDP_DBLUE 4
#define VDP_LBLUE 5
#define VDP_DRED 6
#define VDP_CYAN 7
#define VDP_MRED 8
#define VDP_LRED 9
#define VDP_DYELLOW 10
#define VDP_LYELLOW 11
#define VDP_DGREEN 12
#define VDP_MAGENTA 13
#define VDP_GRAY 14
#define VDP_WHITE 15
unsigned char regen[24*40];
unsigned char data[256*8] = {
/* 10000 */ 0,0,0,0,0,0,0,0,
/* 10001 */ 0,0,0,60,60,48,48,48,
/* 10002 */ 0,0,0,240,240,48,48,48,
/* 10003 */ 48,48,48,60,60,0,0,0,
/* 10004 */ 48,48,48,240,240,0,0,0,
/* 10005 */ 48,48,48,48,48,48,48,48,
/* 10006 */ 0,0,0,255,255,0,0,0,
/* 10007 */ 0,32,112,248,112,32,0,0,
/* 10008 */ 248,216,136,0,136,216,248,0,
/* 10009 */ 0,0,0,0,0,0,0,0,
/* 10010 */ 0,0,0,0,0,0,0,0,
/* 10011 */ 24,24,32,96,144,96,0,0,
/* 10012 */ 32,80,32,32,112,32,0,0,
/* 10013 */ 0,0,0,0,0,0,0,0,
/* 10014 */ 0,0,0,0,0,0,0,0,
/* 10015 */ 168,80,80,216,80,80,168,0,
/* 10016 */ 48,48,48,252,252,48,48,48,
/* 10017 */ 16,48,112,240,112,48,16,0,
/* 10018 */ 32,112,32,32,32,112,32,0,
/* 10019 */ 80,80,80,80,0,80,0,0,
/* 10020 */ 120,168,168,104,40,40,0,0,
/* 10021 */ 48,48,48,252,252,0,0,0,
/* 10022 */ 0,0,0,252,252,48,48,48,
/* 10023 */ 48,48,48,240,240,48,48,48,
/* 10024 */ 32,112,32,32,32,32,32,32,
/* 10025 */ 48,48,48,60,60,48,48,48,
/* 10026 */ 0,16,24,252,24,16,0,0,
/* 10027 */ 0,32,96,252,96,32,0,0,
/* 10028 */ 0,0,0,0,0,0,0,0,
/* 10029 */ 0,0,0,0,0,0,0,0,
/* 10030 */ 0,0,0,0,0,0,0,0,
/* 10031 */ 0,0,0,0,0,0,0,0,
/* 10032 */ 0,0,0,0,0,0,0,0,
/* 10033 */ 48,120,120,48,0,48,0,0,
/* 10034 */ 216,216,80,0,0,0,0,0,
/* 10035 */ 72,72,252,72,72,252,72,72,
/* 10036 */ 32,120,160,120,36,248,32,0,
/* 10037 */ 0,200,208,32,88,152,0,0,
/* 10038 */ 48,72,72,80,96,144,120,0,
/* 10039 */ 48,48,64,0,0,0,0,0,
/* 10040 */ 16,32,32,32,32,32,16,0,
/* 10041 */ 32,16,16,16,16,16,32,0,
/* 10042 */ 32,168,112,248,112,168,32,0,
/* 10043 */ 0,32,32,248,32,32,0,0,
/* 10044 */ 0,0,0,0,0,48,48,64,
/* 10045 */ 0,0,0,252,0,0,0,0,
/* 10046 */ 0,0,0,0,0,48,48,0,
/* 10047 */ 4,8,16,32,64,128,0,0,
/* 10048 */ 112,152,168,168,168,200,112,0,
/* 10049 */ 32,96,32,32,32,32,248,0,
/* 10050 */ 32,80,16,32,64,128,248,0,
/* 10051 */ 112,136,8,112,8,136,112,0,
/* 10052 */ 48,80,144,248,16,16,16,0,
/* 10053 */ 248,128,128,240,8,136,112,0,
/* 10054 */ 56,64,128,240,136,136,112,0,
/* 10055 */ 248,8,16,32,32,32,32,0,
/* 10056 */ 112,136,136,112,136,136,112,0,
/* 10057 */ 112,136,136,120,8,136,112,0,
/* 10058 */ 0,48,48,0,48,48,0,0,
/* 10059 */ 0,48,48,0,48,48,96,0,
/* 10060 */ 16,32,64,128,64,32,16,0,
/* 10061 */ 0,0,252,0,252,0,0,0,
/* 10062 */ 64,32,16,8,16,32,64,0,
/* 10063 */ 112,136,8,48,32,0,32,0,
/* 10064 */ 112,136,184,176,128,128,112,0,
/* 10065 */ 32,80,136,248,136,136,136,0,
/* 10066 */ 240,72,72,112,72,72,240,0,
/* 10067 */ 112,136,128,128,128,136,112,0,
/* 10068 */ 240,72,72,72,72,72,240,0,
/* 10069 */ 248,136,128,224,128,136,248,0,
/* 10070 */ 248,136,128,240,128,128,128,0,
/* 10071 */ 112,136,128,184,136,136,112,0,
/* 10072 */ 136,136,136,248,136,136,136,0,
/* 10073 */ 248,32,32,32,32,32,248,0,
/* 10074 */ 28,8,8,8,8,136,112,0,
/* 10075 */ 136,144,160,192,160,144,136,0,
/* 10076 */ 128,128,128,128,128,136,248,0,
/* 10077 */ 136,216,168,136,136,136,136,0,
/* 10078 */ 136,200,168,168,168,152,136,0,
/* 10079 */ 112,136,136,136,136,136,112,0,
/* 10080 */ 240,136,136,240,128,128,128,0,
/* 10081 */ 112,136,136,136,168,152,120,4,
/* 10082 */ 240,136,136,240,160,144,136,0,
/* 10083 */ 112,136,64,32,16,136,112,0,
/* 10084 */ 248,32,32,32,32,32,112,0,
/* 10085 */ 136,136,136,136,136,136,112,0,
/* 10086 */ 136,136,136,80,80,80,32,0,
/* 10087 */ 136,136,136,168,168,168,80,0,
/* 10088 */ 136,136,80,32,80,136,136,0,
/* 10089 */ 136,136,80,32,32,32,32,0,
/* 10090 */ 248,136,16,32,64,136,248,0,
/* 10091 */ 120,64,64,64,64,64,120,0,
/* 10092 */ 0,128,64,32,16,8,0,0,
/* 10093 */ 120,8,8,8,8,8,120,0,
/* 10094 */ 32,80,136,0,0,0,0,0,
/* 10095 */ 0,0,0,0,0,0,252,0,
/* 10096 */ 96,96,16,0,0,0,0,0,
/* 10097 */ 0,0,240,8,120,136,112,0,
/* 10098 */ 128,128,128,240,136,136,240,0,
/* 10099 */ 0,0,0,112,128,128,112,0,
/* 10100 */ 8,8,8,120,136,136,120,0,
/* 10101 */ 0,0,112,136,248,128,112,0,
/* 10102 */ 0,48,72,224,64,64,64,0,
/* 10103 */ 0,0,56,72,72,56,8,112,
/* 10104 */ 0,128,128,176,200,136,136,0,
/* 10105 */ 0,0,32,0,96,32,112,0,
/* 10106 */ 0,8,0,24,8,8,72,48,
/* 10107 */ 128,128,144,160,192,160,144,0,
/* 10108 */ 32,32,32,32,32,32,32,0,
/* 10109 */ 0,0,0,80,168,168,136,0,
/* 10110 */ 0,0,0,176,200,136,136,0,
/* 10111 */ 0,0,0,112,136,136,112,0,
/* 10112 */ 0,0,112,72,72,112,64,64,
/* 10113 */ 0,96,56,72,72,56,8,8,
/* 10114 */ 0,0,0,176,200,128,128,0,
/* 10115 */ 0,0,96,128,96,16,96,0,
/* 10116 */ 0,0,64,224,64,64,32,0,
/* 10117 */ 0,0,0,144,144,144,104,0,
/* 10118 */ 0,0,0,136,136,80,32,0,
/* 10119 */ 0,0,0,136,168,168,80,0,
/* 10120 */ 0,0,0,72,48,48,72,0,
/* 10121 */ 0,0,136,80,32,64,128,0,
/* 10122 */ 0,0,248,16,32,64,248,0,
/* 10123 */ 16,32,32,64,32,32,16,0,
/* 10124 */ 32,32,32,0,32,32,32,0,
/* 10125 */ 64,32,32,16,32,32,64,0,
/* 10126 */ 108,144,0,0,0,0,0,0,
/* 10127 */ 112,80,80,80,80,80,112,0,
/* 10128 */ 0,0,0,0,0,0,0,0,
/* 10129 */ 0,0,0,0,0,0,0,0,
/* 10130 */ 0,0,0,0,0,0,0,0,
/* 10131 */ 0,0,0,0,0,0,0,0,
/* 10132 */ 0,0,0,0,0,0,0,0,
/* 10133 */ 0,0,0,0,0,0,0,0,
/* 10134 */ 0,0,0,0,0,0,0,0,
/* 10135 */ 0,0,0,0,0,0,0,0,
/* 10136 */ 0,0,0,0,0,0,0,0,
/* 10137 */ 0,0,0,0,0,0,0,0,
/* 10138 */ 0,0,0,0,0,0,0,0,
/* 10139 */ 0,0,0,0,0,0,0,0,
/* 10140 */ 0,0,0,0,0,0,0,0,
/* 10141 */ 0,0,0,0,0,0,0,0,
/* 10142 */ 0,0,0,0,0,0,0,0,
/* 10143 */ 0,0,0,0,0,0,0,0,
/* 10144 */ 0,0,0,0,0,0,0,0,
/* 10145 */ 0,0,0,0,0,0,0,0,
/* 10146 */ 0,0,0,0,0,0,0,0,
/* 10147 */ 0,0,0,0,0,0,0,0,
/* 10148 */ 0,0,0,0,0,0,0,0,
/* 10149 */ 0,0,0,0,0,0,0,0,
/* 10150 */ 0,0,0,0,0,0,0,0,
/* 10151 */ 0,0,0,0,0,0,0,0,
/* 10152 */ 0,0,0,0,0,0,0,0,
/* 10153 */ 0,0,0,0,0,0,0,0,
/* 10154 */ 0,0,0,0,0,0,0,0,
/* 10155 */ 0,0,0,0,0,0,0,0,
/* 10156 */ 0,0,0,0,0,0,0,0,
/* 10157 */ 0,0,0,0,0,0,0,0,
/* 10158 */ 0,0,0,0,0,0,0,0,
/* 10159 */ 0,0,0,0,0,0,0,0,
/* 10160 */ 32,64,240,8,120,136,112,0,
/* 10161 */ 16,32,0,96,32,32,248,0,
/* 10162 */ 16,32,0,112,136,136,112,0,
/* 10163 */ 16,32,0,136,136,136,116,0,
/* 10164 */ 16,32,0,176,200,136,136,0,
/* 10165 */ 16,32,0,200,168,152,136,0,
/* 10166 */ 112,136,136,124,0,252,0,0,
/* 10167 */ 112,136,136,112,0,252,0,0,
/* 10168 */ 32,0,32,32,64,136,112,0,
/* 10169 */ 0,0,0,0,252,128,128,128,
/* 10170 */ 0,0,0,0,252,4,4,4,
/* 10171 */ 136,144,168,84,136,28,0,0,
/* 10172 */ 136,144,168,88,184,8,0,0,
/* 10173 */ 48,0,48,120,120,48,0,0,
/* 10174 */ 20,40,80,160,80,40,20,0,
/* 10175 */ 160,80,40,20,40,80,160,0,
/* 10176 */ 84,170,84,170,84,170,84,170,
/* 10177 */ 170,84,170,84,170,84,170,84,
/* 10178 */ 182,108,218,182,108,218,182,108,
/* 10179 */ 24,24,24,24,24,24,24,24,
/* 10180 */ 24,24,24,24,248,24,24,24,
/* 10181 */ 24,24,24,248,24,248,24,24,
/* 10182 */ 108,108,108,108,236,108,108,108,
/* 10183 */ 0,0,0,0,252,108,108,108,
/* 10184 */ 0,0,0,252,108,236,108,108,
/* 10185 */ 108,108,236,12,236,108,108,108,
/* 10186 */ 108,108,108,108,108,108,108,108,
/* 10187 */ 0,0,252,14,238,108,108,108,
/* 10188 */ 108,108,236,12,252,0,0,0,
/* 10189 */ 100,100,252,0,0,0,0,0,
/* 10190 */ 48,48,240,48,48,240,0,0,
/* 10191 */ 0,0,0,0,240,48,48,48,
/* 10192 */ 48,48,48,48,60,0,0,0,
/* 10193 */ 48,48,48,48,252,0,0,0,
/* 10194 */ 0,0,0,0,252,48,48,48,
/* 10195 */ 48,48,48,48,60,48,48,48,
/* 10196 */ 0,0,0,0,252,0,0,0,
/* 10197 */ 48,48,48,48,252,48,48,48,
/* 10198 */ 48,48,60,48,60,48,48,48,
/* 10199 */ 216,216,220,216,216,216,216,216,
/* 10200 */ 216,216,216,220,192,252,0,0,
/* 10201 */ 0,0,0,252,192,220,216,216,
/* 10202 */ 216,216,216,220,192,0,252,0,
/* 10203 */ 0,0,0,0,0,0,252,0,
/* 10204 */ 216,216,216,220,192,220,216,216,
/* 10205 */ 0,0,0,252,0,252,0,0,
/* 10206 */ 216,216,216,220,0,220,216,216,
/* 10207 */ 48,48,48,252,0,0,252,0,
/* 10208 */ 216,216,216,252,0,0,0,0,
/* 10209 */ 0,0,252,0,0,252,48,48,
/* 10210 */ 0,0,0,0,0,252,216,216,
/* 10211 */ 216,216,216,252,0,0,0,0,
/* 10212 */ 48,48,48,60,48,48,60,0,
/* 10213 */ 0,0,0,62,48,62,48,48,
/* 10214 */ 0,0,0,0,0,252,216,216,
/* 10215 */ 216,216,216,216,220,216,216,216,
/* 10216 */ 48,48,252,0,0,252,48,48,
/* 10217 */ 48,48,48,240,0,0,0,0,
/* 10218 */ 0,0,0,60,48,48,48,48,
/* 10219 */ 252,252,252,252,252,252,252,252,
/* 10220 */ 0,0,0,252,252,252,192,192,
/* 10221 */ 192,192,192,192,192,192,192,192,
/* 10222 */ 12,12,12,12,12,12,12,12,
/* 10223 */ 12,12,12,12,252,252,252,0,
/* 10224 */ 0,0,0,104,144,144,104,0,
/* 10225 */ 112,136,136,176,136,136,240,64,
/* 10226 */ 240,144,128,128,128,128,128,0,
/* 10227 */ 248,80,80,80,80,72,0,0,
/* 10228 */ 248,136,64,32,64,136,248,0,
/* 10229 */ 0,0,0,124,136,136,112,0,
/* 10230 */ 0,0,0,136,136,136,112,128,
/* 10231 */ 0,0,116,152,16,16,28,0,
/* 10232 */ 252,16,56,68,56,16,252,0,
/* 10233 */ 48,204,204,252,204,204,56,0,
/* 10234 */ 120,132,132,132,72,72,132,0,
/* 10235 */ 60,64,56,68,68,68,56,0,
/* 10236 */ 0,0,108,146,146,108,0,0,
/* 10237 */ 0,0,0,56,88,104,112,0,
/* 10238 */ 56,64,128,248,128,64,56,0,
/* 10239 */ 0,0,48,204,204,204,204,0,
/* 10240 */ 252,0,0,252,0,0,252,0,
/* 10241 */ 16,16,124,16,16,0,254,0,
/* 10242 */ 32,16,8,16,32,0,254,0,
/* 10243 */ 16,32,64,32,16,0,254,0,
/* 10244 */ 24,52,48,48,48,48,48,48,
/* 10245 */ 48,48,48,48,48,48,176,112,
/* 10246 */ 48,48,0,252,0,48,48,0,
/* 10247 */ 0,100,152,0,100,152,0,0,
/* 10248 */ 56,68,68,56,0,0,0,0,
/* 10249 */ 0,56,56,0,0,0,0,0,
/* 10250 */ 0,0,56,0,0,0,0,0,
/* 10251 */ 14,8,8,72,40,24,8,0,
/* 10252 */ 0,0,0,176,72,72,72,0,
/* 10253 */ 0,0,240,60,64,128,248,0,
/* 10254 */ 252,252,252,252,252,252,252,252,
/* 10255 */ 0,0,0,0,0,0,0,0
};
vdp_clr16k()
{
unsigned int a;
printf("Let's set VDP write address to #0000 \n");
out(CMDP,0); /* 0x00 - a6 a7 a8 a9 a10 a11 a12 a13 - all zeroes */
out(CMDP,64); /* 0x40 - 01 a0 a1 a2 a3 a4 a5 - all zeroes */
printf("Now let's clear first 16Kb of VDP memory\n");
for(a=0;a<16384;a++) {
out(DATAP,0);
}
}
vdp_setregs()
{
printf("Now it's time to set up VDP registers\n");
out(CMDP,0); /* 0x00 - 000000 - 0 M3 M3 of 0 required text mode */
/* 0 EX EX of 0 disables extVDP inp */
out(CMDP,128); /* 0x80 - 1 0000 000 - reg 0 */
}
vdp_modes()
{
printf("Select 40 column mode, ");
printf("enable screen and disable vertical interrupt\n");
out(CMDP,80); /* 0x50 - 0101 0000 - 0 4/16K Select 4027 RAM operation */
/* 1 BLANK Enables the active display */
/* 0 IE Disables VDP interrupt */
/* 1 M1 M1 of 1 is required for text mode */
/* 0 M2 M2 of zero is required for text mode */
/* 0 n/a */
/* 0 SIZE 0 sprites 8x8 */
/* 0 MAG 0 sprites 2X */
out(CMDP,129); /* 0x81 - 1 0000 001 - reg 1 */
}
vdp_pnt()
{
printf("Set pattern name table to #0000\n");
out(CMDP,0); /* 0x00 - 0000 0000 - name table base addr 0 */
out(CMDP,130); /* 0x82 - 1 0000 010 - reg 2 */
}
vdp_pgt()
{
printf("Set pattern generator table to #800\n");
out(CMDP,1); /* 0x01 - 00000 001 - pattern generator base addr 1 */
out(CMDP,132); /* 0x84 - 1 0000 100 - reg 4 */
}
vdp_colors()
{
printf("Set colors to white on black\n");
out(CMDP,240); /* 0xF0 - 1111 0000 - (text=1111 bkgd=0000 */
out(CMDP,135); /* 0x87 - 1 0000 111 - reg 7 */
}
vdp_load_set()
{
int c,d,index;
printf("Let's set VDP write address to #800 so ");
printf("that we can write character set to memory\n");
out(CMDP,0); /* 0x00 - a6 a7 a8 a9 a10 a11 a12 a13 - all zeroes */
out(CMDP,72); /* 0x48 - 01 a0=0 a1=0 a2=1 a3=0 a4=0 a5=0 */
/* a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 */
/* 0 0 0 1 0 0 0 0 0 0 0 0 0 0 */
/* 000 1000 0000 0000 */
printf("Create a character set\n");
index=0;
for(c=0;c<256;c++) {
for(d=0;d<8;d++) {
out(DATAP,data[index++]);
}
}
}
vdp_fill()
{
int c,d;
printf("Let's set write address to start of name table\n");
out(CMDP,0);
out(CMDP,64); /* 0x40 */
printf("Let's put characters to screen\n");
d = 0;
for(c=0;c<(40*24);c++) {
out(DATAP,d);
d++;
if(128 == d) d=0;
}
}
vdp_sync_regen()
{
int c,d;
printf("Let's set write address to start of name table\n");
out(CMDP,0);
out(CMDP,64); /* 0x40 */
printf("Let's put characters to screen\n");
d = 0;
for(c=0;c<(40*24);c++) {
out(DATAP,regen[c]);
}
}
func700()
{
out(CMDP,0);
out(CMDP,0);
}
vdp_clr_regen()
{
unsigned int index;
for(index=0;index<(24*40);index++) {
regen[index] = ' ';
}
}
vdp_set_regen()
{
unsigned int index;
for(index=0;index<40*24;index++) {
regen[index]=index&0x7f;
}
}
vdp_num_regen()
{
unsigned int index;
for(index=0;index<40*24;index++) {
regen[index]=0x30+(index%10);
}
}
vdp_display()
{
int c,v;
for(c=0;c<17;c++) {
v = in(DATAP);
printf("0x2x ",v);
}
}
/* eof - tms9918.h */


BIN
Apps/core/access.com

Binary file not shown.

BIN
Apps/core/cpmname.com

Binary file not shown.

BIN
Apps/core/findfile.com

Binary file not shown.

BIN
Apps/core/map.com

Binary file not shown.

BIN
Apps/core/meta.com

Binary file not shown.

BIN
Apps/core/multifmt.com

Binary file not shown.

BIN
Apps/core/noaccess.com

Binary file not shown.

BIN
Apps/core/setlabel.com

Binary file not shown.

BIN
Apps/core/sysgen.com

Binary file not shown.

BIN
Apps/core/termtype.com

Binary file not shown.

BIN
Apps/core/view.com

Binary file not shown.

4
Apps/n8vidtst/build.sub

@ -0,0 +1,4 @@
cc $1
as $1
ln $1.o -lc


67
Apps/n8vidtst/n8vidtst.c

@ -0,0 +1,67 @@
/* n8video.c 9/11/2012 dwg - derived from Wayne's TESTV5.BAS */
/* Simple VIDEO test for N8; I/O Base assumed as 128 */
#include "applvers.h"
#include "tms9918.h"
char szTemp[128];
char linenum;
char counter;
char outer;
char inner;
char limit;
int main(argc,argv)
int argc;
char *argv[];
{
int i;
char szTemp[64];
unsigned char chardex;
vdp_clr16k();
vdp_setregs();
vdp_modes();
vdp_pnt();
vdp_pgt();
vdp_colors();
vdp_load_set450();
if(outer == 3) style = TRIPLE;
vdp_main_frame("N8VIDTST(dwg)");
chardex = 0;
for(outer=0;outer<4;outer++) {
linenum = 4;
for(inner=0;inner<6;inner++) {
if(inner < 5) limit=11;
else limit=9;
for(i=0;i<limit;i++) {
sprintf(szTemp,"%c",chardex);
vdp_display(linenum,2+(i*3),szTemp);
sprintf(szTemp,"%02x",chardex++);
vdp_display(linenum+1,2+(i*3),szTemp);
}
linenum += 3;
if(inner==5) {
sprintf(szTemp,"Pg %d/4",outer+1);
vdp_display(20,29,szTemp);
}
}
if(outer < 3) {
vdp_display(22,2," Press any key to continue");
gets(szTemp);
}
}
vdp_display(22,1,"Execution complete,returned to CP/M");
if(argc == 2) {
sprintf(szTemp,"%c",atoi(argv[1]));
vdp_display(1,WIDTH-2,szTemp);
}
}


BIN
Apps/n8vidtst/n8vidtst.cpm

Binary file not shown.

18
Apps/n8vidtst/readme.txt

@ -0,0 +1,18 @@
readme - n8vidtst
The n8vidtst program is a preliminary test program to help determine
that the TMS9918 chip on the N8 is working correctly in text mode.
It displays four screens on the composite video, each displaying 64
of the possible 256 characters in my prelimiinary character set.
Everything is soft with the TMS9918, and the font is a set of character
array initializers in TMS9918.H.
Aztec C for CP/M-80 is used to compile and link this program.
The file N8VIDTST.CPM should be downloaded and renamed to n8vidtst.com
to run under CP/M on the N8.
Questions? Ask doug@goodall.com, or use the N8VEM Forum on google.

637
Apps/n8vidtst/tms9918.h

@ -0,0 +1,637 @@
/* tms9918.h 9/11/2012 dwg - information from TI Docs */
/* http://www1.cs.columbia.edu/~sedwards/papers/TMS9918.pdf */
/* To DO: fIX UPPER CASE T */
/* TMS9918 Modes:
Graphics I
Grtaphics Mode I provides 256x192 pixel display for generating
pattern graphics in 15 colors plus transparent.
Graphics II
Graphics mode II is an enhancement of Graphics Mode I, allowing
it to generate more complex color and pattern displays.
Multicolor
The Muylticolor mode provides an unrestricted 64x48
color-dot display employing 15 colors plus transparent.
Text Mode
The Text Mode provides twenty-four 40-character in two colors
and is intended to maximize the capacity of the TV screen to
display alphanumeric characters. (24 lines of forty blocks (each 8x8).
*/
/*
#define DEBUG
*/
#define WIDTH 37
#define HEIGHT 24
#define GUTTER 3
#define BASE 128
#define DATAP (BASE+24)
#define CMDP (BASE+25)
#define WO_R0
#define WOR0B6
#define VDP_TRANSPARENT 0
#define VDP_BLACK 1
#define VDP_MED_GREEN 2
#define VDP_LGREEN 3
#define VDP_DBLUE 4
#define VDP_LBLUE 5
#define VDP_DRED 6
#define VDP_CYAN 7
#define VDP_MRED 8
#define VDP_LRED 9
#define VDP_DYELLOW 10
#define VDP_LYELLOW 11
#define VDP_DGREEN 12
#define VDP_MAGENTA 13
#define VDP_GRAY 14
#define VDP_WHITE 15
#define SINGLE 11
#define TRIPLE 0
char style; /* can be SINGLE or TRIPPLE */
unsigned char vdp_regen[24*40];
unsigned char charset[256*8] = {
/* 10000 */ 0,0,0,0,0,0,0,0,
/* 10001 */ 0,0,0,60,60,48,48,48,
/* 10002 */ 0,0,0,240,240,48,48,48,
/* 10003 */ 48,48,48,60,60,0,0,0,
/* 10004 */ 48,48,48,240,240,0,0,0,
/* 10005 */ 48,48,48,48,48,48,48,48,
/* 10006 */ 0,0,0,255,255,0,0,0,
/* 10007 */ 0,32,112,248,112,32,0,0,
/* 10008 */ 248,216,136,0,136,216,248,0,
/* 10009 */ 0,0,0,0,0,0,0,0,
/* 10010 */ 0,0,0,0,0,0,0,0,
/* 10011 */ 24,24,32,96,144,96,0,0,
/* 10012 */ 32,80,32,32,112,32,0,0,
/* 10013 */ 0,0,0,0,0,0,0,0,
/* 10014 */ 0,0,0,0,0,0,0,0,
/* 10015 */ 168,80,80,216,80,80,168,0,
/* 10016 */ 48,48,48,252,252,48,48,48,
/* 10017 */ 16,48,112,240,112,48,16,0,
/* 10018 */ 32,112,32,32,32,112,32,0,
/* 10019 */ 80,80,80,80,0,80,0,0,
/* 10020 */ 120,168,168,104,40,40,0,0,
/* 10021 */ 48,48,48,252,252,0,0,0,
/* 10022 */ 0,0,0,252,252,48,48,48,
/* 10023 */ 48,48,48,240,240,48,48,48,
/* 10024 */ 32,112,32,32,32,32,32,32,
/* 10025 */ 48,48,48,60,60,48,48,48,
/* 10026 */ 0,16,24,252,24,16,0,0,
/* 10027 */ 0,32,96,252,96,32,0,0,
/* 10028 */ 0,0,0,0,0,0,0,0,
/* 10029 */ 0,0,0,0,0,0,0,0,
/* 10030 */ 0,0,0,0,0,0,0,0,
/* 10031 */ 0,0,0,0,0,0,0,0,
/* 10032 */ 0,0,0,0,0,0,0,0,
/* 10033 */ 48,120,120,48,0,48,0,0,
/* 10034 */ 216,216,80,0,0,0,0,0,
/* 10035 */ 72,72,252,72,72,252,72,72,
/* 10036 */ 32,120,160,120,36,248,32,0,
/* 10037 */ 0,200,208,32,88,152,0,0,
/* 10038 */ 48,72,72,80,96,144,120,0,
/* 10039 */ 48,48,64,0,0,0,0,0,
/* 10040 */ 16,32,32,32,32,32,16,0,
/* 10041 */ 32,16,16,16,16,16,32,0,
/* 10042 */ 32,168,112,248,112,168,32,0,
/* 10043 */ 0,32,32,248,32,32,0,0,
/* 10044 */ 0,0,0,0,0,48,48,64,
/* 10045 0,0,0,252,0,0,0,0, */
/* 10045 */ 0,0,0,112,0,0,0,0,
/* 10046 */ 0,0,0,0,0,48,48,0,
/* 10047 */ 4,8,16,32,64,128,0,0,
/* 10048 */ 112,152,168,168,168,200,112,0,
/* 10049 */ 32,96,32,32,32,32,248,0,
/* 10050 32,80,16,32,64,128,248,0, */
/* 10050 */ 112,136,8,16,96,128,248,0,
/* 10051 */ 112,136,8,112,8,136,112,0,
/* 10052 */ 48,80,144,248,16,16,16,0,
/* 10053 */ 248,128,128,240,8,136,112,0,
/* 10054 */ 56,64,128,240,136,136,112,0,
/* 10055 */ 248,8,16,32,32,32,32,0,
/* 10056 */ 112,136,136,112,136,136,112,0,
/* 10057 */ 112,136,136,120,8,136,112,0,
/* 10058 */ 0,48,48,0,48,48,0,0,
/* 10059 */ 0,48,48,0,48,48,96,0,
/* 10060 */ 16,32,64,128,64,32,16,0,
/* 10061 */ 0,0,252,0,252,0,0,0,
/* 10062 */ 64,32,16,8,16,32,64,0,
/* 10063 */ 112,136,8,48,32,0,32,0,
/* 10064 */ 112,136,184,176,128,128,112,0,
/* 10065 */ 32,80,136,248,136,136,136,0,
/* 10066 */ 240,72,72,112,72,72,240,0,
/* 10067 */ 112,136,128,128,128,136,112,0,
/* 10068 */ 240,72,72,72,72,72,240,0,
/* 10069 */ 248,136,128,224,128,136,248,0,
/* 10070 */ 248,136,128,240,128,128,128,0,
/* 10071 */ 112,136,128,184,136,136,112,0,
/* 10072 */ 136,136,136,248,136,136,136,0,
/* 10073 */ 248,32,32,32,32,32,248,0,
/* 10074 */ 28,8,8,8,8,136,112,0,
/* 10075 */ 136,144,160,192,160,144,136,0,
/* 10076 */ 128,128,128,128,128,136,248,0,
/* 10077 */ 136,216,168,136,136,136,136,0,
/* 10078 */ 136,200,168,168,168,152,136,0,
/* 10079 */ 112,136,136,136,136,136,112,0,
/* 10080 */ 240,136,136,240,128,128,128,0,
/* 10081 */ 112,136,136,136,168,152,120,4,
/* 10082 */ 240,136,136,240,160,144,136,0,
/* 10083 */ 112,136,64,32,16,136,112,0,
/* 10084 */ 248,32,32,32,32,32,112-64-16,0,
/* 10085 */ 136,136,136,136,136,136,112,0,
/* 10086 */ 136,136,136,80,80,80,32,0,
/* 10087 */ 136,136,136,168,168,168,80,0,
/* 10088 */ 136,136,80,32,80,136,136,0,
/* 10089 */ 136,136,80,32,32,32,32,0,
/* 10090 */ 248,136,16,32,64,136,248,0,
/* 10091 */ 120,64,64,64,64,64,120,0,
/* 10092 */ 0,128,64,32,16,8,0,0,
/* 10093 */ 120,8,8,8,8,8,120,0,
/* 10094 */ 32,80,136,0,0,0,0,0,
/* 10095 */ 0,0,0,0,0,0,252,0,
/* 10096 */ 96,96,16,0,0,0,0,0,
/* 10097 */ 0,0,240,8,120,136,112,0,
/* 10098 */ 128,128,128,240,136,136,240,0,
/* 10099 */ 0,0,0,112,128,128,112,0,
/* 10100 */ 8,8,8,120,136,136,120,0,
/* 10101 */ 0,0,112,136,248,128,112,0,
/* 10102 */ 0,48,72,224,64,64,64,0,
/* 10103 */ 0,0,56,72,72,56,8,112,
/* 10104 */ 0,128,128,176,200,136,136,0,
/* 10105 */ 0,0,32,0,96,32,112,0,
/* 10106 */ 0,8,0,24,8,8,72,48,
/* 10107 */ 128,128,144,160,192,160,144,0,
/* 10108 */ 32,32,32,32,32,32,32,0,
/* 10109 */ 0,0,0,80,168,168,136,0,
/* 10110 */ 0,0,0,176,200,136,136,0,
/* 10111 */ 0,0,0,112,136,136,112,0,
/* 10112 */ 0,0,112,72,72,112,64,64,
/* 10113 */ 0,96,56,72,72,56,8,8,
/* 10114 */ 0,0,0,176,200,128,128,0,
/* 10115 */ 0,0,96,128,96,16,96,0,
/* 10116 */ 0,0,64,224,64,64,32,0,
/* 10117 */ 0,0,0,144,144,144,104,0,
/* 10118 */ 0,0,0,136,136,80,32,0,
/* 10119 */ 0,0,0,136,168,168,80,0,
/* 10120 */ 0,0,0,72,48,48,72,0,
/* 10121 */ 0,0,136,80,32,64,128,0,
/* 10122 */ 0,0,248,16,32,64,248,0,
/* 10123 */ 16,32,32,64,32,32,16,0,
/* 10124 */ 32,32,32,0,32,32,32,0,
/* 10125 */ 64,32,32,16,32,32,64,0,
/* 10126 */ 108,144,0,0,0,0,0,0,
/* 10127 */ 112,80,80,80,80,80,112,0,
/****************************************************************/
/* These are Douglas Goodall's personal tri-plex semi graphics */
/* 10128 */ 252,128,188,160,172,168,168,168, /* upper left */
/* 10129 */ 252,0,252,0,252,0,0,0, /* top horz */
/* 10130 */ 252,4,244,20,212,84,84,84, /* upper right */
/* 10131 */ 84,84,84,84,84,84,84,84, /* right vert */
/* 10132 */ 84,84,84,212,20,244,4,252, /* lower right */
/* 10133 */ 0,0,0,255,0,255,0,255, /* bottom horz */
/* 10134 */ 168,168,168,172,160,188,128,252, /* lower left */
/* 10135 */ 168,168,168,168,168,168,168,168, /* left vert */
/* 10136 */ 168,168,172,160,172,168,168,168, /* left joint */
/* 10137 */ 84,84,212,20,212,84,84,84, /* right joint */
/* 10138 */ 0,0,252,0,252,0,0,0, /* inner horz */
/****************************************************************/
/****************************************************************/
/* These are Douglas Goodall's personal uni-plex semi graphics */
/* 10139 */ 252,128,128,128,128,128,128,128, /* upper left */
/* 10140 */ 252,0,0,0,0,0,0,0, /* top horz */
/* 10141 */ 252,4,4,4,4,4,4,4, /* upper right */
/* 10142 */ 4,4,4,4,4,4,4,4, /* right vert */
/* 10143 */ 4,4,4,4,4,4,4,252, /* lower right */
/* 10144 */ 0,0,0,0,0,0,0,252, /* bottom horz */
/* 10145 */ 128,128,128,128,128,128,128,252, /* lower left */
/* 10146 */ 128,128,128,128,128,128,128,128, /* left vert */
/* 10147 */ 128,128,128,252,128,128,128,128, /* left joint */
/* 10148 */ 4,4,4,252,4,4,4,4, /* right joint */
/* 10149 */ 0,0,0,252,0,0,0,0, /* inner horz */
/****************************************************************/
/* 10150 */ 0,0,0,0,0,0,0,0,
/* 10151 */ 0,0,0,0,0,0,0,0,
/* 10152 */ 0,0,0,0,0,0,0,0,
/* 10153 */ 0,0,0,0,0,0,0,0,
/* 10154 */ 0,0,0,0,0,0,0,0,
/* 10155 */ 0,0,0,0,0,0,0,0,
/* 10156 */ 0,0,0,0,0,0,0,0,
/* 10157 */ 0,0,0,0,0,0,0,0,
/* 10158 */ 0,0,0,0,0,0,0,0,
/* 10159 */ 0,0,0,0,0,0,0,0,
/* 10160 */ 32,64,240,8,120,136,112,0,
/* 10161 */ 16,32,0,96,32,32,248,0,
/* 10162 */ 16,32,0,112,136,136,112,0,
/* 10163 */ 16,32,0,136,136,136,116,0,
/* 10164 */ 16,32,0,176,200,136,136,0,
/* 10165 */ 16,32,0,200,168,152,136,0,
/* 10166 */ 112,136,136,124,0,252,0,0,
/* 10167 */ 112,136,136,112,0,252,0,0,
/* 10168 */ 32,0,32,32,64,136,112,0,
/* 10169 */ 0,0,0,0,252,128,128,128,
/* 10170 */ 0,0,0,0,252,4,4,4,
/* 10171 */ 136,144,168,84,136,28,0,0,
/* 10172 */ 136,144,168,88,184,8,0,0,
/* 10173 */ 48,0,48,120,120,48,0,0,
/* 10174 */ 20,40,80,160,80,40,20,0,
/* 10175 */ 160,80,40,20,40,80,160,0,
/* 10176 */ 84,170,84,170,84,170,84,170,
/* 10177 */ 170,84,170,84,170,84,170,84,
/* 10178 */ 182,108,218,182,108,218,182,108,
/* 10179 */ 24,24,24,24,24,24,24,24,
/* 10180 */ 24,24,24,24,248,24,24,24,
/* 10181 */ 24,24,24,248,24,248,24,24,
/* 10182 */ 108,108,108,108,236,108,108,108,
/* 10183 */ 0,0,0,0,252,108,108,108,
/* 10184 */ 0,0,0,252,108,236,108,108,
/* 10185 */ 108,108,236,12,236,108,108,108,
/* 10186 */ 108,108,108,108,108,108,108,108,
/* 10187 */ 0,0,252,14,238,108,108,108,
/* 10188 */ 108,108,236,12,252,0,0,0,
/* 10189 */ 100,100,252,0,0,0,0,0,
/* 10190 */ 48,48,240,48,48,240,0,0,
/* 10191 */ 0,0,0,0,240,48,48,48,
/* 10192 */ 48,48,48,48,60,0,0,0,
/* 10193 */ 48,48,48,48,252,0,0,0,
/* 10194 */ 0,0,0,0,252,48,48,48,
/* 10195 */ 48,48,48,48,60,48,48,48,
/* 10196 */ 0,0,0,0,252,0,0,0,
/* 10197 */ 48,48,48,48,252,48,48,48,
/* 10198 */ 48,48,60,48,60,48,48,48,
/* 10199 */ 216,216,220,216,216,216,216,216,
/* 10200 */ 216,216,216,220,192,252,0,0,
/* 10201 */ 0,0,0,252,192,220,216,216,
/* 10202 */ 216,216,216,220,192,0,252,0,
/* 10203 */ 0,0,0,0,0,0,252,0,
/* 10204 */ 216,216,216,220,192,220,216,216,
/* 10205 */ 0,0,0,252,0,252,0,0,
/* 10206 */ 216,216,216,220,0,220,216,216,
/* 10207 */ 48,48,48,252,0,0,252,0,
/* 10208 */ 216,216,216,252,0,0,0,0,
/* 10209 */ 0,0,252,0,0,252,48,48,
/* 10210 */ 0,0,0,0,0,252,216,216,
/* 10211 */ 216,216,216,252,0,0,0,0,
/* 10212 */ 48,48,48,60,48,48,60,0,
/* 10213 */ 0,0,0,62,48,62,48,48,
/* 10214 */ 0,0,0,0,0,252,216,216,
/* 10215 */ 216,216,216,216,220,216,216,216,
/* 10216 */ 48,48,252,0,0,252,48,48,
/* 10217 */ 48,48,48,240,0,0,0,0,
/* 10218 */ 0,0,0,60,48,48,48,48,
/* 10219 */ 252,252,252,252,252,252,252,252,
/* 10220 */ 0,0,0,252,252,252,192,192,
/* 10221 */ 192,192,192,192,192,192,192,192,
/* 10222 */ 12,12,12,12,12,12,12,12,
/* 10223 */ 12,12,12,12,252,252,252,0,
/* 10224 */ 0,0,0,104,144,144,104,0,
/* 10225 */ 112,136,136,176,136,136,240,64,
/* 10226 */ 240,144,128,128,128,128,128,0,
/* 10227 */ 248,80,80,80,80,72,0,0,
/* 10228 */ 248,136,64,32,64,136,248,0,
/* 10229 */ 0,0,0,124,136,136,112,0,
/* 10230 */ 0,0,0,136,136,136,112,128,
/* 10231 */ 0,0,116,152,16,16,28,0,
/* 10232 */ 252,16,56,68,56,16,252,0,
/* 10233 */ 48,204,204,252,204,204,56,0,
/* 10234 */ 120,132,132,132,72,72,132,0,
/* 10235 */ 60,64,56,68,68,68,56,0,
/* 10236 */ 0,0,108,146,146,108,0,0,
/* 10237 */ 0,0,0,56,88,104,112,0,
/* 10238 */ 56,64,128,248,128,64,56,0,
/* 10239 */ 0,0,48,204,204,204,204,0,
/* 10240 */ 252,0,0,252,0,0,252,0,
/* 10241 */ 16,16,124,16,16,0,254,0,
/* 10242 */ 32,16,8,16,32,0,254,0,
/* 10243 */ 16,32,64,32,16,0,254,0,
/* 10244 */ 24,52,48,48,48,48,48,48,
/* 10245 */ 48,48,48,48,48,48,176,112,
/* 10246 */ 48,48,0,252,0,48,48,0,
/* 10247 */ 0,100,152,0,100,152,0,0,
/* 10248 */ 56,68,68,56,0,0,0,0,
/* 10249 */ 0,56,56,0,0,0,0,0,
/* 10250 */ 0,0,56,0,0,0,0,0,
/* 10251 */ 14,8,8,72,40,24,8,0,
/* 10252 */ 0,0,0,176,72,72,72,0,
/* 10253 */ 0,0,240,60,64,128,248,0,
/* 10254 */ 252,252,252,252,252,252,252,252,
/* 10255 */ 0,0,0,0,0,0,0,0
};
vdp_read()
{
char c,v;
for(c=0;c<17;c++) {
v = in(DATAP);
printf("0x2x ",v);
}
}
vdp_display(line,column,string)
int line;
int column;
char * string;
{
char index;
vdp_write_ram(GUTTER+(line*40)+column);
for(index=0;index<strlen(string);index++) {
out(DATAP,string[index]);
}
}
vdp_pad(line,column,string)
int line;
int column;
char * string;
{
char index;
vdp_write_ram(GUTTER+(line*40)+column);
for(index=0;index<strlen(string);index++) {
out(DATAP,string[index]);
}
if(40>strlen(string)) {
for(index=strlen(string);index<40;index++) {
out(DATAP,' ');
}
}
}
vdp_hz_join(line)
int line;
{
char i;
char szTemp[2];
sprintf(szTemp,"%c",0x8a+style);
for(i=1;i<WIDTH-1;i++) {
vdp_display(line,i,szTemp);
}
sprintf(szTemp,"%c",0x88+style);
vdp_display(line,0,szTemp);
sprintf(szTemp,"%c",0x89+style);
vdp_display(line,WIDTH-1,szTemp);
}
vdp_main_frame(name)
char * name;
{
char i;
char szTemp[48];
sprintf(szTemp,"%c",0x81+style);
for(i=1;i<WIDTH-1;i++) {
vdp_display(0,i,szTemp);
}
sprintf(szTemp,"%c",0x85+style);
for(i=1;i<WIDTH-1;i++) {
vdp_display(HEIGHT-1,i,szTemp);
}
sprintf(szTemp,"%c",0x87+style);
for(i=1;i<HEIGHT-1;i++) {
vdp_display(i,0,szTemp);
}
sprintf(szTemp,"%c",0x83+style);
for(i=1;i<HEIGHT-1;i++) {
vdp_display(i,WIDTH-1,szTemp);
}
sprintf(szTemp,"%c",0x80+style);
vdp_display(0,0,szTemp);
sprintf(szTemp,"%c",0x82+style);
vdp_display(0,WIDTH-1,szTemp);
sprintf(szTemp,"%c",0x84+style);
vdp_display(HEIGHT-1,WIDTH-1,szTemp);
sprintf(szTemp,"%c",0x86+style);
vdp_display(HEIGHT-1,0,szTemp);
sprintf(szTemp,"%s %d/%d/%d Ver %d.%d.%d",
name,A_MONTH,A_DAY,A_YEAR,A_RMJ,A_RMN,A_RUP);
vdp_display(1,(WIDTH-strlen(szTemp))/2,szTemp);
vdp_hz_join(2);
vdp_hz_join(HEIGHT-3);
}
vdp_clr16k()
{
unsigned int a;
#ifdef DEBUG
printf("Let's set VDP write address to #0000 \n");
#endif
out(CMDP,0); /* 0x00 - a6 a7 a8 a9 a10 a11 a12 a13 - all zeroes */
out(CMDP,64); /* 0x40 - 01 a0 a1 a2 a3 a4 a5 - all zeroes */
#ifdef DEBUG
printf("Now let's clear first 16Kb of VDP memory\n");
#endif
for(a=0;a<16384;a++) {
out(DATAP,0);
}
}
vdp_setregs()
{
#ifdef DEBUG
printf("Now it's time to set up VDP registers\n");
#endif
out(CMDP,0); /* 0x00 - 000000 - 0 M3 M3 of 0 required text mode */
/* 0 EX EX of 0 disables extVDP inp */
out(CMDP,128); /* 0x80 - 1 0000 000 - reg 0 */
}
vdp_modes()
{
#ifdef DEBUG
printf("Select 40 column mode, ");
printf("enable screen and disable vertical interrupt\n");
#endif
out(CMDP,80); /* 0x50 - 0101 0000 - 0 4/16K Select 4027 RAM operation */
/* 1 BLANK Enables the active display */
/* 0 IE Disables VDP interrupt */
/* 1 M1 M1 of 1 is required for text mode */
/* 0 M2 M2 of zero is required for text mode */
/* 0 n/a */
/* 0 SIZE 0 sprites 8x8 */
/* 0 MAG 0 sprites 2X */
out(CMDP,129); /* 0x81 - 1 0000 001 - reg 1 */
}
vdp_pnt()
{
#ifdef DEBUG
printf("Set pattern name table to #0000\n");
#endif
out(CMDP,0); /* 0x00 - 0000 0000 - name table base addr 0 */
out(CMDP,130); /* 0x82 - 1 0000 010 - reg 2 */
}
vdp_pgt()
{
#ifdef DEBUG
printf("Set pattern generator table to #800\n");
#endif
out(CMDP,1); /* 0x01 - 00000 001 - pattern generator base addr 1 */
out(CMDP,132); /* 0x84 - 1 0000 100 - reg 4 */
}
vdp_colors()
{
#ifdef DEBUG
printf("Set colors to white on black\n");
#endif
out(CMDP,240); /* 0xF0 - 1111 0000 - (text=1111 bkgd=0000 */
out(CMDP,135); /* 0x87 - 1 0000 111 - reg 7 */
}
vdp_load_set()
{
int c,d,index;
#ifdef DEBUG
printf("Let's set VDP write address to #800 so ");
printf("that we can write character set to memory\n");
#endif
out(CMDP,0); /* 0x00 - a6 a7 a8 a9 a10 a11 a12 a13 - all zeroes */
out(CMDP,72); /* 0x48 - 01 a0=0 a1=0 a2=1 a3=0 a4=0 a5=0 */
/* a0 a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 a12 a13 */
/* 0 0 0 1 0 0 0 0 0 0 0 0 0 0 */
/* 000 1000 0000 0000 */
#ifdef DEBUG
printf("Create a character set\n");
#endif
index=0;
for(c=0;c<256;c++) {
for(d=0;d<8;d++) {
out(DATAP,charset[index++]);
}
}
}
vdp_fill()
{
int c;
char d;
#ifdef DEBUG
printf("Let's set write address to start of name table\n");
#endif
out(CMDP,0);
out(CMDP,64); /* 0x40 */
#ifdef DEBUG
printf("Let's put characters to screen\n");
#endif
d = 0;
for(c=0;c<(40*24);c++) {
out(DATAP,d);
d++;
if(128 == d) d=0;
}
}
vdp_sync_vdp_regen()
{
int c,d;
#ifdef DEBUG
printf("Let's set write address to start of name table\n");
#endif
out(CMDP,0);
out(CMDP,64); /* 0x40 */
#ifdef DEBUG
printf("Let's put characters to screen\n");
#endif
d = 0;
for(c=0;c<(40*24);c++) {
out(DATAP,vdp_regen[c]);
}
}
func700()
{
out(CMDP,0);
out(CMDP,0);
}
vdp_clr_vdp_regen()
{
unsigned int index;
for(index=0;index<(24*40);index++) {
vdp_regen[index] = ' ';
}
}
vdp_set_vdp_regen()
{
unsigned int index;
for(index=0;index<40*24;index++) {
vdp_regen[index]=index&0x7f;
}
}
vdp_num_vdp_regen()
{
unsigned int index;
for(index=0;index<40*24;index++) {
vdp_regen[index]=0x30+(index%10);
}
}
vdp_write_vram(offset)
int offset;
{
unsigned char byte1;
unsigned char byte2;
byte1 = offset & 255;
byte2 = (offset >> 8) | 0x40;
out(CMDP,byte1);
out(CMDP,byte2);
}
/* eof - tms9918.h */


1
DiskImg/Blank.img

File diff suppressed because one or more lines are too long

25
DiskImg/Build.cmd

@ -0,0 +1,25 @@
@echo off
setlocal
set path=..\tools\cpmtools;%path%
echo Creating partition 0...
copy /b Blank.img hd0.tmp >nul
if exist hd0\*. cpmcp -f hd0 hd0.tmp hd0/* 0:
echo Creating partition 1...
copy /b Blank.img hd1.tmp >nul
if exist hd1\*. cpmcp -f hd0 hd1.tmp hd1/* 0:
echo Creating partition 2...
copy /b Blank.img hd2.tmp >nul
if exist hd2\*. cpmcp -f hd0 hd2.tmp hd2/* 0:
echo Creating partition 3...
copy /b Blank.img hd3.tmp >nul
if exist hd3\*. cpmcp -f hd0 hd3.tmp hd3/* 0:
echo Building final image...
copy /b hd*.tmp Disk.img
del *.tmp

45
DiskImg/Build.ps1

@ -0,0 +1,45 @@
$ErrorAction = 'Stop'
$CpmToolsPath = '..\tools\cpmtools'
$env:PATH = $CpmToolsPath + ';' + $env:PATH
$OutDir = "../Output"
$ImgFile = "Disk.img"
$Blank = ([byte[]](0xE5) * (128KB * 65))
"Creating work file..."
Set-Content -Value $Blank -Encoding byte -Path Blank.img
"Creating output file..."
Set-Content -Path $ImgFile -Value $null
"Adding files to partition 0..."
copy Blank.img hd0.tmp
if (Test-Path ('hd0\*')) {cpmcp -f hd0 hd0.tmp hd0/*.* 0:}
copy /b hd*.tmp Disk.img
return
"Adding files to partition 0..."
Set-Content -Value $Blank -Encoding byte -Path hd.img
if (Test-Path ('hd0\*')) {cpmcp -f hd0 hd.img hd0/*.* 0:}
Add-Content $ImgFile -Value ([System.IO.File]::ReadAllBytes('hd.img')) -Encoding byte
"Adding files to partition 1..."
Set-Content -Value ([byte[]](0xE5) * (128KB * 65)) -Encoding byte -Path hd.img
if (Test-Path ('hd1\*')) {cpmcp -f hd0 hd.img hd1/*.* 0:}
Add-Content $ImgFile -Value ([System.IO.File]::ReadAllBytes('hd.img')) -Encoding byte
"Adding files to partition 2..."
Set-Content -Value ([byte[]](0xE5) * (128KB * 65)) -Encoding byte -Path hd.img
if (Test-Path ('hd2\*')) {cpmcp -f hd0 hd.img hd2/*.* 0:}
Add-Content $ImgFile -Value ([System.IO.File]::ReadAllBytes('hd.img')) -Encoding byte
"Adding files to partition 3..."
Set-Content -Value ([byte[]](0xE5) * (128KB * 65)) -Encoding byte -Path hd.img
if (Test-Path ('hd3\*')) {cpmcp -f hd0 hd.img hd3/*.* 0:}
Add-Content $ImgFile -Value ([System.IO.File]::ReadAllBytes('hd.img')) -Encoding byte
return

12663
DiskImg/Disk.img

File diff suppressed because one or more lines are too long

341
DiskImg/diskdefs

@ -0,0 +1,341 @@
diskdef ibm-3740
seclen 128
tracks 77
sectrk 26
blocksize 1024
maxdir 64
skew 6
boottrk 2
os p2dos
end
diskdef 4mb-hd
seclen 128
tracks 1024
sectrk 32
blocksize 2048
maxdir 256
skew 1
boottrk 0
os p2dos
end
diskdef pcw
seclen 512
tracks 40
sectrk 9
blocksize 1024
maxdir 64
skew 1
boottrk 1
os 3
end
diskdef pc1.2m
seclen 512
tracks 80
# this format uses 15 sectors per track, but 30 per cylinder
sectrk 30
blocksize 4096
maxdir 256
skew 1
boottrk 0
os 3
end
# CP/M 86 on 1.44MB floppies
diskdef cpm86-144feat
seclen 512
tracks 160
sectrk 18
blocksize 4096
maxdir 256
skew 1
boottrk 2
os 3
end
diskdef cf2dd
seclen 512
tracks 160
sectrk 9
blocksize 2048
maxdir 256
skew 1
boottrk 1
os 3
end
#amstrad: values are read from super block (special name hardcoded)
# Royal alphatronic
# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2
diskdef alpha
seclen 256
tracks 40
sectrk 32
blocksize 2048
maxdir 128
skew 1
boottrk 2
os 2.2
end
# Apple II CP/M skew o Apple II DOS 3.3 skew
diskdef apple-do
seclen 256
tracks 35
sectrk 16
blocksize 1024
maxdir 64
skew 0
boottrk 3
os 2.2
end
# Apple II CP/M skew o Apple II PRODOS skew
diskdef apple-po
seclen 256
tracks 35
sectrk 16
blocksize 1024
maxdir 64
skew 0
boottrk 3
os 2.2
end
# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header)
diskdef myz80
seclen 1024
tracks 64
sectrk 128
blocksize 4096
maxdir 1024
skew 1
boottrk 0
os 3
end
# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad
# superblock. You'll need to use libdsk to access them because the Linux
# and Windows kernel drivers won't touch them.
diskdef cpcsys
seclen 512
tracks 40
sectrk 9
blocksize 1024
maxdir 64
skew 1
boottrk 2
os 3
end
diskdef cpcdata
seclen 512
tracks 40
sectrk 9
blocksize 1024
maxdir 64
skew 1
boottrk 0
os 3
end
# after being read in with no sector skew.
diskdef nigdos
seclen 512
# NigDos double sided disk format, 42 tracks * 2 sides
tracks 84
sectrk 10
blocksize 2048
maxdir 128
skew 1
boottrk 0
# this format wastes half of the directory entry
logicalextents 1
os 3
end
diskdef epsqx10
seclen 512
tracks 40
sectrk 20
blocksize 2048
maxdir 128
skew 0
boottrk 2
os 2.2
end
diskdef ibm-8ss
seclen 512
tracks 40
sectrk 8
blocksize 1024
maxdir 64
skew 0
boottrk 1
os 2.2
end
diskdef ibm-8ds
seclen 512
tracks 40
sectrk 8
blocksize 1024
maxdir 64
skew 0
boottrk 1
os 2.2
end
diskdef electroglas
seclen 512
tracks 80
sectrk 10
blocksize 2048
maxdir 256
skew 0
boottrk 1
os 3
end
# IBM CP/M-86
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1
diskdef ibmpc-514ss
seclen 512
tracks 40
sectrk 8
blocksize 1024
maxdir 64
skew 1
boottrk 1
os 2.2
end
# IBM CP/M-86
# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48
diskdef ibmpc-514ds
seclen 512
tracks 80
sectrk 8
blocksize 2048
maxdir 64
skew 0
boottrk 2
os 2.2
end
diskdef p112
seclen 512
tracks 160
sectrk 18
blocksize 2048
maxdir 256
skew 1
boottrk 2
os 3
end
diskdef p112-old
seclen 512
tracks 160
sectrk 18
blocksize 2048
maxdir 128
skew 1
boottrk 1
os 3
end
diskdef kpii
seclen 512
tracks 40
sectrk 10
blocksize 1024
maxdir 32
skew 0
boottrk 1
os 2.2
end
# setfdprm /dev/fd0 dd sect=10
diskdef interak
seclen 512
tracks 80
sectrk 20
blocksize 4096
maxdir 256
skew 1
boottrk 2
os 2.2
end
# For 512KB ROM, less 32K for system image
diskdef rom512KB
seclen 128
tracks 14
sectrk 256
blocksize 2048
maxdir 256
skew 1
boottrk 0
os 2.2
end
# For 1024KB ROM, less 32K for system image
diskdef rom1024KB
seclen 128
tracks 30
sectrk 256
blocksize 2048
maxdir 256
skew 1
boottrk 0
os 2.2
end
# For N8VEM mass storage (4 raw partitions)
diskdef hd0
seclen 512
tracks 65
sectrk 256
blocksize 4096
maxdir 512
skew 1
boottrk 1
os 2.2
end
diskdef hd1
seclen 512
tracks 130
sectrk 256
blocksize 4096
maxdir 512
skew 1
boottrk 66
os 2.2
end
diskdef hd2
seclen 512
tracks 195
sectrk 256
blocksize 4096
maxdir 512
skew 1
boottrk 131
os 2.2
end
diskdef hd3
seclen 512
tracks 260
sectrk 256
blocksize 4096
maxdir 512
skew 1
boottrk 196
os 2.2
end

BIN
DiskImg/hd0/X0.DAT

Binary file not shown.

BIN
DiskImg/hd1/X1.DAT

Binary file not shown.

BIN
DiskImg/hd2/X2.DAT

Binary file not shown.

69
DiskImg/hd3/VIDATT.Z80

@ -0,0 +1,69 @@
title WordStar 4.0 Video Attributes Driver
strngout equ 0283h
esc equ 1bh
dim equ 1
blink equ 2
invert equ 4
uline equ 8
aseg
org 03c1h
vidatt:
xor a
ld hl,funtbl
ld b,8
getloop:
rr c
jr nc,getnext
or a,(hl)
getnext:
inc hl
djnz getloop
;
ld hl,string+2 ; attribute #1 on/off indicator
push hl
ld b,4
ld de,'?!' ; ? = attribute off, ! = attribute on
setloop:
rra
jr nc,attroff
ld (hl),e ; attribute on
jr setnext
attroff:
ld (hl),d ; attribute off
setnext:
inc hl
inc hl
inc hl ; advance to next on/off indicator
djnz setloop
;
pop hl ; hl --> dim on/off
ld a,d ; attribute off
cp (hl) ; dim off?
jr nz,setdim
ld a,e ; attribute on
setdim:
ld (hl),a
ld hl,string
jp strngout ; ws string routine
;
;
funtbl:
defb dim ; strike out
defb invert or blink ; warnings & errors
defb invert ; block
defb uline ; underline
defb blink ; subscript
defb blink or uline ; superscript
defb invert ; menu, headline, bold, double
defb invert or uline ; italics, RET, backspace
;
string:
defb 12,esc,' 2',esc,' 3',esc,' 4',esc,' 5'
;
finis equ $
end


BIN
DiskImg/hd3/WS.OVR

Binary file not shown.

BIN
DiskImg/hd3/WSCHANGE.COM

Binary file not shown.

BIN
DiskImg/hd3/WSCHANGE.OVR

Binary file not shown.

BIN
DiskImg/hd3/WSCHHELP.OVR

Binary file not shown.

BIN
DiskImg/hd3/WSHELP.OVR

Binary file not shown.

BIN
DiskImg/hd3/WSMSGS.OVR

Binary file not shown.

BIN
DiskImg/hd3/WSPRINT.OVR

Binary file not shown.

142
DiskImg/hd3/WSPRINT.TST

@ -0,0 +1,142 @@
.hePRINT.TST Features of Your Printer
.f1 WordStar
.f2 Print test
.f3 Page #
.oj on
WordStaò anä Youò Printer
WordStar‚  workó  witè á widå rangå oæ printeró anä offeró  yoõ  á �
varietù oæ prinô enhancements® Whetheò youò printeò caî  producå �
thå  prinô enhancementó outlineä iî thió documenô dependó oî  itó �
capabilities®  Pleaså notå thaô noô alì printeró arå  capablå  oæ �
showinç alì thå exampleó below.
Speciaì Printinç Capabilities
WordStaò supportó thå followinç speciaì printinç capabilities:
ª Boldface¬ Doublå strike
* Italics/Alternatå ribboî color
* Strikå out
* Overprinô (aó iî co^te)
* Noncontinuouó underline¬ anä
.ul on
* Continuouó underline
.ul off
* SuperScript¬ SubScript
* anä almosô anù combinatioî -­ WordStar
Characteò Width
Somå  printeró  wilì  supporô  WordStar‚  commandó  foò   variablå �
characteò widths®�
.cw 24
µ characteró peò inch® (.C× 24)
.cw 20
¶ characteró peò inch® (.C× 20)
.cw 14
8.¶ characteró peò inch® (.C× 14)
.cw 12
1° characteró peò inch® (.C× 12)
.cw 10
1² characteró peò inch® (.C× 10)
.cw 7
17.± characteró peò inch® (.C× 7)
.cw 12
Youò printeò caî alsï bå seô tï "toggle¢ betweeî normaì pitcè anä �
alternatå pitch:
     Thió  sentencå ió printeä witè thå normaì 1°-pitcè  setting¬ �
     theî toggleä tï 1² pitch¬ theî bacë tï normal.
.cw 7

Yoõ caî alsï changå thå normaì anä alternatå characteò widths:
.cw 14
.rm 55
     Thå  "normal¢ characteò widtè ió 1´ (8.¶ cpi©  anä �
     thå alternatå characteò widtè ió · (17.± cpi).
.pa Š.rm 65
.cw 10

.cw 12
Linå Height
Yoõ caî alsï uså differenô linå heights.
.lh 16
Thió ió aî examplå oæ variablå linå height® (.LÈ 1¶ ­ ³ lpi)
.lh 12
Thió ió aî examplå oæ variablå linå height® (.LÈ 1² ­ ´ lpi)
.lh 8
Thió ió aî examplå oæ variablå linå height® (.LÈ ¸ ­ ¶ lpi)
.lh 6
Thió ió aî examplå oæ variablå linå heighô® (.LÈ ¶ ­ ¸ lpi)
.lh 8
Proportionaì Printing
.ps on
.uj on
WordStar‚  alsï supportó proportionaì printinç foò  mosô  printeró �
thaô havå it® Yoõ selecô proportionaì fontó bù changinç characteò �
widthó aó iî thå followinç examplesº
.cw 22
Thió ió characteò widtè 22.
.cw 11
Thió ió characteò widtè 11.
.cw 9
Thió ió characteò widtè 9.
.cw 7
Thió ió characteò widtè 7.
.uj dis
.ps off
.cw 12
Other
Phantoí Spacå¬ Phantoí Rubout
WordStaò maù allo÷ yoõ tï prinô speciaì characteró (foò  example¬ �
á  paragrapè  sigî  oò centó sign© bù  usinç  thå  phantoí  spacå �
commanä (^PF© oò thå phantoí rubouô commanä (^PG© iî á  document® �
Foò  youò  printer¬ thå phantoí spacå characteò isº  ¬  anä  thå �
phantoí rubouô characteò isº .
Switchinç tï Drafô Mode
.lq off
Doô matriø printeò driveró allo÷ switchinç froí NLÑ (neaò  letteò �
quality© modå tï drafô modå foò fasteò printing.
.lq on
Microspacå Justification
.uj on
WordStar‚   allowó  microspacå  justification¬  iæ  youò   printeò �
supportó  it¬ tï producå evenlù spaceä wordó iî  justifieä  text® �
Microspacinç spreadó thå whitå spacå betweeî wordó (anä sometimeó �
betweeî thå letteró oæ eacè word© aó evenlù aó possible®
.uj dis
.pa ŠLookinç Aô Thió Filå Onscreen
Iæ  yoõ wanô tï seå thå embeddeä commandó thaô produceä thå  texô �
yoõ arå no÷ reading¬ follo÷ theså steps:
1 Aô thå Openinç Menu¬ presó D‚ tï ediô á document.
² Aô thå prompô foò filename¬ typå print.tsô anä presó Enter.
Noticå thaô thå texô onscreeî includeó somå characteró thaô don'ô �
appeaò  iî  thå  printeä copy® Foò example¬  á  headinç  linå  ió �
identifieä  bù  thå  doô  commanä  .he®  Wordó  iî  boldfacå  arå �
surroundeä bù ^Â anä appeaò eitheò highlighteä oò iî á  differenô �
coloò oî youò screen.
Tï  continuå viewinç thå contentó oæ thió file¬ presó ^C®   Presó �
^R‚ tï movå iî thå otheò direction.


880
DiskImg/hd3/WSREADME.TXT

@ -0,0 +1,880 @@
--THE README FILE--
------------------------
README contains late-breaking news and tips about WordStar,
and information about printers.
THE DISKS THAT CAME IN YOUR PACKAGE
-----------------------------------
The file HOMONYMS.TXT is included on the Speller disk
contrary to what is listed in Appendix D.
INSTALLATION
------------
WINSTALL and WSCHANGE
WordStar has two installation programs:
o WINSTALL contains the basic choices to install WordStar.
It is recommended for all users.
Be sure and install your valid disk drives since WordStar
running under CP/M cannot recover from attempts to access non-
existent disk drives.
o WSCHANGE contains every installation and customization
choice. It is designed for advanced users and users who
want to customize WordStar after they're familiar with it.
Use the menu listing below for a directory of the menus
in WSCHANGE.
Directory of WSCHANGE Menus
The chart below shows the organization of menus in WSCHANGE.
Print it out and refer to it as you customize WordStar.
Main Installation Menu
A Console
A Monitor
A Monitor selection
B Monitor name
C Screen sizing
B Function keys
C Monitor patches
A Special characters
B Cursor control
C Screen control
D Keyboard patches
A Function keys
B Save function keys
E Interface patches
A Console busy handshaking
B Special I/O subroutines
B Printer
A Printer choices
A Printer selection
B Printer name
C Default printer driver
B Printer driver library
A Select library file
B Create smaller library
C Add new printer driver
D Change printer driver data
C WS printer patches
A Custom print controls, printer initialization
NOTE: Disregard the "CUSTOM & SIMPLE Controls Save CUSTOM/SIMPLE
Controls" option shown. This is not available from this menu.
D Printing defaults
E Printer interface
A Printer port selection
B Printer busy handshaking
C Printer subroutines
C Computer
A Disk drives
A Valid disk drives
B Maximum valid user number
C Delay disk access if typing
B Operating system
A Single-user system
B Multi-user MP/M
C Multi-user Turbo DOS
D ZCPR3
C Memory usage
D WordStar files
E Directory display
F Computer patches
D WordStar
A Page layout
A Page sizing & margins
B Headers & footers
C Tabs
B Editing settings
A Edit screen & help level
B Typing
C Paragraph alignment
D Blocks
E Erase & unerase
F Lines & characters
G Find & replace
H WordStar 3.3 compatibility
I Printing defaults
C Other features
A Spelling checks
B Nondocument mode
C Indexing
D Shorthand (key macros)
E Merge printing
F Miscellaneous
E Patching
A Auto patcher
B Save settings
C Reset all settings
MEMORY USAGE
------------
WordStar requires a minimum TPA size of 50 kbytes to run
using the factory defaults. The TPA is the amount of memory
available in your computer for use by programs that have a
file type of COM. To see how big the TPA is in your computer,
press the question mark key (?) at the Opening Menu.
The amount of memory required by WordStar can be reduced by
approximately 3 kbytes if necessary. Use the WSCHANGE program
to select the minimum memory configuration option. The menu
will show you what capabilities are being reduced.
WordStar uses a general-purpose buffer for a variety of
tasks. WordStar allocates memory to this buffer for editing,
for merge printing, and at the Opening Menu (see BFSIZE in
PATCH.LST). The buffer used for editing is usually the most
sensitive to a reduced TPA size. (You may be able to use the
Opening Menu and print, but there may be insufficient memory
for editing.)
The merge print buffer is used only to hold merge print
variable names and data. Increase it if you run out of memory
while merge printing.
The Opening Menu buffer is used primarily to hold the file
directory, and for miscellaneous tasks.
LOW-MEMORY INDICATOR IN STATUS LINE
-----------------------------------
If the Low-Memory indicator appears in the status line, it
means that WordStar was unable to complete some function.
The most common symptoms are: the line number in the
status line is wrong, or a paragraph alignment could not be
completed. You may correct the line counter by saving your
file, exiting WordStar, and re-loading your file. To correct
the paragraph alignment, move your cursor to the point where
paragraph alignment stopped, and then press ^B again.
The reason this comes up is that WordStar was not able to fit
a big enough chunk of text into memory at one time.
When you first begin editing, WordStar uses the value from
EDSIZE in the user area to determine the minimum amount
of memory required for a page of text. The default
is set for approximately a 55 line by 66 column page. If
your page size is routinely larger than this, you may want
to increase EDSIZE. Multiply the number of lines by the
number of columns, and divide by 128.
If the Low-Memory indicator comes on while printing, it is due
to either the same reasons as for editing, or there is
insufficient memory to print the text proportionally spaced.
The amount of memory required depends on which printer
driver you are using. If you aren't using the .PS ON dot
command to turn proportional spacing on in your document,
low memory won't be a problem. Also, WordStar uses more
memory for merge printing than it does for regular printing
(around 2.5 kbytes more).
The Low-Memory indicator will also appear when a full disk error
is encountered during editing. Treat the disk-full error as you
would normally.
RAM-RESIDENT PROGRAMS
---------------------
RAM-resident programs, such as SmartKey, reduce the amount of
working memory (TPA) that WordStar can use. The new features in
WordStar, such as shorthand, may reduce the need for these
RAM-resident programs, thus freeing memory for WordStar.
ZCPR3 SUPPORT
-------------
In order to enable the ZCPR facilities within WordStar, the user
must use the Z3INS utility provided with ZCPR to install the
address of the ZCPR "environment" into WordStar. The environment
contains information that WordStar uses to support ZCPR-specific
functions.
Generally, the user should log onto the drive containing the file
WS.COM, and issue the command:
Z3INS SYS.ENV WS.COM
The user should also run either WINSTALL or WSCHANGE to further
install WordStar for ZCPR. However, this is not mandatory because
the only thing that happens is that the WordStar sign-on says
"ZCPR3," and the LGLUSR location in the user area is changed for a
maximum user number of 31. (The normal default for LGLUSR is 15.)
Once the user has installed WordStar for use with ZCPR, the user
will be able to use the following ZCPR features:
- A named directory may be used when logging onto a new drive/user.
- A named directory may be used instead of a drive/user as part
of any file name.
- The drive/user always appears above file directories. (For CP/M
only the drive letter is shown if the user number is zero.)
- The directory name also appears above the directory if one has
been defined for the currently logged drive/user.
- If WordStar does not find its OVR files on the current drive and
user, it will search the drives and user numbers in the ZCPR
search path rather than using its standard search pattern.
- WordStar installs itself as a ZCPR "shell" process which lets the
user enter any legal ZCPR command when running a program. (CP/M
can only run programs that are COM files.)
OSBORNE USERS
-------------
The command to change a hard carriage return to a soft carriage
return (document mode) or to turn Auto-indent ON (nondocument
mode) does not function on the Osborne because of a limitation
in its BIOS. The following patch can be applied to change the
command from ^^ to ^- (Ctrl-Hyphen):
Using DDT or SID in the file WSMSGS.OVR:
At 02DA replace 1E with a 1D
At 02EF replace 1E with a 1D
At 0359 replace 1E with a 1D
At 06B2 replace 1E with a 1D
At 06C9 replace 1E with a 1D
At the system prompt type SAVE 53 WSMSGS.OVR
For more information on how to use SID or DDT, see your CP/M
reference guide. As always, be sure and apply the patch to a
COPY of the file.
INSTRUCTIONS FOR TWO FLOPPY DISK COMPUTERS
------------------------------------------
Do not remove the Program disk while you are using WordStar.
The Printer Driver Library file (WSPRINT.OVR) on the WordStar
program disk is much smaller than the Printer Driver Library
file contained on the disk labeled PRINTER. Be sure to read the
section in "Starting" that discusses the printer library file.
RUN A PROGRAM
-------------
Once you press R you can type the drive and user number for the
program you want to run. You may run only .COM files. CCP commands,
such as DIR cannot be used.
INDEXING
--------
Using StarIndex
StarIndex 1.01 works with files created with this release of
WordStar.
"Can't Use That Printer" Message
When WordStar creates an index or table of contents, it uses
the printer drivers $INDEX and $TOC. If you created a smaller
WSPRINT.OVR file, you may have left these drivers out. To
return them to the file, copy the original WSPRINT.OVR file
onto your disk. When you create a smaller file again, be sure
to save these drivers. See Appendix C in the WordStar manual
for a list of other drivers to save.
SPELL CHECKING
--------------
Dual floppy disk users:
Unless you have sufficient room on your working WordStar program
disk for the files TW.COM, SPELL.COM, MARKFIX.COM, REVIEW.COM and
MAINDICT.CMP you will not be able to run a spell check from the
Opening Menu. You will need to exit WordStar and replace the
working WordStar program disk with the dictionary disk you created
during installation. This disk should contain the files listed
above. Make sure the disk in drive B has the file you want to
spell-check.
Follow the directions for running a spell check in The WORD Plus
manual.
UPGRADING FROM A PREVIOUS RELEASE
---------------------------------
This release of WordStar contains many new features and commands.
See the "What's New" booklet for a complete list. The following
changes came in too late to be included in the documentation.
Printer Patches
Previous versions of WordStar treat most dot matrix printers
and other non-daisy wheel printers as a DRAFT printer with a
few patchable items. Because of this, many users have used
these patches to be able to use certain features of their
printers. Sometimes the patches have been quite extensive, and
some users have many files that count on them.
The printer drivers of WordStar Release 4, on the other hand,
are very powerful. Almost every driver recognizes all the print
controls and all the dot commands. In fact, if a document is
written to be printed on one kind of printer, it is likely that
it will also print fine on some other printer.
However, if you want to use your existing files with WordStar
4, and those files rely on the user area being patched in a
special way, you can probably do so by moving the patches into
WordStar 4, and using the CUSTOM or SIMPLE printer driver.
On the INSTALL disk is a program called MOVEPRN.COM that
copies the printer driver portion of the previous release's
user area into files that can be installed into Release 4 with
the "auto patcher" feature.
Copy the program MOVEPRN.COM onto the disk containing the
WS.COM file for the previous version. Type
MOVEPRN WS.COM FILE1.PAT FILE2.PAT
MOVEPRN extracts the proper portions of the user area and
writes them into two files that may then be used with the "auto
patcher" feature of WSCHANGE.
FILE1.PAT is to be used with the general patching menu
(Choose E "Patching" on the WSCHANGE Main Menu, then A "Auto
Patcher"). FILE2.PAT should be used to install strings first
into the SIMPLE driver, and then into the CUSTOM driver (choose
B "Printer" on the WSCHANGE Main Menu, then B "Printer driver
library", D "Change printer driver data" and D "Driver auto
patcher").
Test print your document first with the SIMPLE driver, and then
with the CUSTOM driver to see which one produces the most
satisfactory results.
Also read Appendix C for more information on using the Auto
Patcher.
Hanging Indents
For WordStar Professional Release 4, MailMerge reformats indented
text created with ^OG to the current margins. If you want the text
to remain indented, use embedded ruler lines or the .RM, .LM,
and .PM commands. See the "Reference Guide" for more information.
Pressing ^OG to wrap back to the first tab on the ruler line after
having reached the last tab works the same way it did in previous
versions of WordStar, contrary to what is stated in the manual.
TERMINALS
---------
WordStar comes installed for an "idealized" special terminal.
WINSTALL and WSCHANGE allow you to install many terminals by
name, thus allowing WordStar to take advantage of the special
features that the terminal might support, such as underlining
or the function keys.
Use either WINSTALL or WSCHANGE to pick your specific terminal
or computer screen from the Monitor menu. If your terminal
isn't on the menu, it probably emulates one of those that is
there. Look in your terminal documentation to find out.
After you install WordStar for the proper terminal, run
WordStar and open the file PRINT.TST to see which attributes
(such as bold and underline) work on your screen.
WordStar will highlight the following in some way...
Bold (^PB)
Underline (^PS)
Strike-out (^PX)
Subscript (^PV)
Superscript (^PT)
Doublestrike (^PD)
Italics (^PY)
Blocks (^KB, ^KK)
Error messages
Most of the time, normal text will be shown in dim intensity,
and highlighted text will be shown in bright intensity. You
may have to use a brightness and/or contrast knob to adjust
your screen the first time you use WordStar this way.
If your dim intensity is too dim to see well, and you can't
adjust it, you can change the BRITE flag to ON using WSCHANGE.
This will invert bright and dim in your text, so that regular
text is displayed bright, and highlighted text will be
displayed as dim. However, text in the menus is not affected.
DISPLAY PROBLEMS WITH TERMINALS
-------------------------------
Once you have installed WordStar for the proper terminal, you
may still experience display problems.
If text from the previous screen remains after WordStar
displays a new screenful of text, the most likely cause is
cursor wrap. Basically, WordStar must know what happens to the
cursor when a character is displayed at the rightmost position
of the screen. It can either remain at the right edge, or it
can wrap to the beginning of the next line. The WRAP flag in
WordStar must be set either on or off to correspond to the
way the terminal works. (It is generally set for the
terminal's factory default, but the default can usually be
changed using the terminal's setup mode.)
Another possible cause for display problems is your terminal's
incomplete emulation of some other terminal. The most
common differences are...
Line insert (LININS), line delete (LINDEL),
Erase to end of screen (ERAEOS),
Erase to end of line (ERAEOL),
And, erase screen (ERASCR).
Look in the manual for your terminal and use WSCHANGE to see
if the control sequences match.
PRINTERS
--------
WHAT'S IN THIS SECTION
This section contains the following information:
Choosing a Printer
Setting Up Your Printer
Printer Drivers
Proportional Printing
Laser Printers
Information on Specific Printers
CHOOSING A PRINTER
WordStar is ready to work with over 100 printers. The printer you
choose during installation becomes your default printer. However,
when you print a document, you can choose any other printer. To
choose a default printer, follow these steps:
1. Look at the Printer Information brochure that came in your
package. The first chart shows the printers listed on the
Printer Selection Menus. If your printer is on the menu,
simply choose it during installation.
2. If your printer isn't listed on the menu, it may work like a
printer that is. Refer to the second chart in the Printer
Information brochure for a list of printers that work like
printers on the menu. When WordStar asks you to choose a
printer, choose the printer that works like yours.
3. If neither chart lists your printer, choose Typewriter Printer
(if your printer can backspace) or Draft Printer (if it can't).
These choices may not take advantage of all your printer's
features, but they will work with almost any printer.
Note: If you choose Draft or Typewriter, you can modify custom
print controls and printer initialization.
If you want to make more modifications to take advantage of your
printer's feature, choose the Custom or Simple drivers, then use
the WS Printer Patches section of WSCHANGE to tell WordStar the
codes for your printer. Refer to your printer manual for these
codes. Some printers work better with the Custom driver and some
with the Simple driver. Try using both and see which works better
with your printer. See the "Reference Guide" for more information.
SETTING UP YOUR PRINTER
Choosing a Printer Port
Each printer is connected to a printer port at the back of
the computer. WordStar looks for printers on the LST: port.
If your printer is connected to a different port, use
WSCHANGE to tell WordStar the correct port.
Testing Your Printer Connection
At the operating system prompt, type "PIP LST:=READ.ME." This
file should be printed by your printer. If it is not, your printer
may be connected to a different port. See your computer reference
manual, and the section on the STAT command in your CP/M
reference manual for more information.
PRINTER DRIVERS
The WSPRINT.OVR file on the Printers disk contains a printer
driver for each printer on the Printer Selection Menu. The printer
driver for a printer contains all the codes WordStar needs to work
with that printer.
Each printer driver has a short name. If you choose a printer when
you print a document, you see the names of the printer drivers, not
the names of the printers.
PROPORTIONAL PRINTING
WordStar supports proportional printing on a number of printers.
To turn on proportional printing, either install WordStar to
default to proportional printing, or place a ".PS on" command
in your document. At print time, WordStar selects the
appropriate proportional font based on the character width
(.CW) currently in effect.
The specific printer descriptions later in this section show
recommended character widths for proportional typefaces.
These widths are for a normal mix of upper- and lowercase
letters. If you have many words or phrases all in uppercase
or if you want your text less densely printed, choose a larger
character width.
While WordStar mostly sets character widths based on the
proportional-width table in the driver, on the more advanced
daisy wheel printers, WordStar uses the printer's proportional-
spacing mode. WordStar determines how much white space is needed
to right-justify the line based on its own proportional width
tables. If the table values don't match the wheel installed,
WordStar won't be able to justify the line correctly.
WordStar sends standard ASCII characters; if a proportional wheel
uses a different spoke mapping, set up the printer to handle this.
LASER PRINTERS
WordStar supports laser printer features such as font changes
and proportional spacing.
WordStar supports several laser printers: the Canon LPB-8 A1 & A2;
the Hewlett-Packard LaserJet, LaserJet+, and LaserJet 500+;
and the Ricoh LP4080. Refer to the "Specific Printer
Information" section of this file for information on these
printers. General notes about using laser printers are given below.
Paper Size and Margins
Laser printers come with preset page margins. You need to
compensate for these margins by changing page length in your
WordStar documents. The chart below shows the recommended
settings for 8 1/2 X 11 inch paper for both portrait and landscape
orientations. These settings allow 55 lines of text for portrait
orientation and 40 lines of text for landscape orientation (at 6
lines per inch). They also allow for a footer of up to 3 lines
and a one-line header. If you use multiple-line headers, adjust
the top margin accordingly.
Dot Default Portrait Landscape
Setting Command Value Orientation Orientation
------- ------- ------- ----------- -----------
page length .PL 66 62 47
top margin .MT 3 2 2
bottom margin .MB 8 5 5
header margin .HM 2 1 1
footer margin .FM 2 2 2
If the laser printer is your primary printer, you can use WSCHANGE
to make these settings the defaults.
Because laser printers leave small margins at the left and right
sides of the page, you may want to use a smaller page offset
setting (the default is .PO 8).
Form Feeds
When you print with a laser printer, answer Y for yes to the "Use
form feeds (Y/N)?" prompt at print time. (The default is NO.) If
the laser printer is your primary printer, you can use WSCHANGE to
change the default to yes.
WordStar Commands for Font Selection
The WordStar dot commands and print control commands listed below
determine the fonts used for printing a document.
.PR .PR OR=L selects landscape orientation; .PR OR=P (or just
.PR OR) selects portrait orientation (the default). If
either of these commands appears after the first printing
line on a page, the orientation will not change until the
following page.
.PS .PS ON selects proportionally spaced characters; .PS OFF
(the default) selects fixed-spaced characters.
.CW The character-width setting (.CW followed by the width in
120ths of an inch) determines the character pitch and font
selected for fixed-width printing. For proportional fonts, it
determines the point size and proportional-width table
selected.
.LQ .LQ ON selects near letter quality print (if supported by
your printer). LQ OFF selects draft quality print. Default
is ON.
^PY The italic print control toggles between normal and italic
characters when the appropriate italic font is available.
^PB The boldface print control toggles between normal and bold
characters when the appropriate bold font is available.
^PD The double strike print control used with the laser printers
toggles overprinting with a horizontal offset of 1/120"
between the two character images. This allows a bold effect
where no bold font is available.
^PA ^PA turns alternate pitch on. Use .CW to assign different
character widths to normal pitch (see ^PN below) and alternate
pitch so that each pitch accesses a different font. You can
then change fonts by switching between the two pitches. This
is the only way to use two fonts on the same line.
(See "Character width" and "Pitch" in the "Reference Guide.")
^PN ^PN turns normal pitch on. You can use it with ^PA as
described above.
^P@ When working with columns, if you use alternate and normal
pitch for two fonts, or if you use proportional spacing, you
may need to use ^P@ to make sure the columns line up.
Remember that the column position set with ^P@ is determined
by the normal pitch character width. (See "Columns" and
"Proportional spacing" in the "Reference Guide."
INFORMATION ON SPECIFIC PRINTERS
This section describes the capabilities of each printer listed on
the Printer Selection Menu. The printers are listed in alphabetical
order (except for the generic printers such as "Draft,"
"Typewriter," "Custom," "Simple," and the various print-to-disk
options, which are listed first).
There is a chart for each printer explaining how features work and
listing any special notes about the printer. Each printer is
described in the following format:
PRINTER NAME ----- Driver: (short name)
^PY Effect of italics/ribbon color print control
^PT/V Subscript/superscript information
.CW Information on available character widths and fonts. The
chart shows the .CW, .LQ, and .PS settings required to use
different fonts.
.LQ OFF .LQ ON .PS ON Font Name
------- ------ ------ ---------
.cw val .cw val recommended value (range) font 1
.cw val .cw val recommended value (range) font 2
.UL Continuous-underline information (if restrictions)
.UJ Microspace-justification information (if restrictions)
N/A means a command has no effect on this printer.
NOTES Switch settings, special features, anomalies.
DRAFT PRINTER (nonbackspacing) ----- Driver: DRAFT
^PD Overprints the line twice
^PB Overprints the line three times
^PS Overprints the underscore character in a separate pass
^PT/V Prints super/subscripts with a full line between
super/subscript and text
.LH Sets line height only in multiples of full lines
.CW N/A
.PS N/A
.LQ N/A
.UJ N/A
NOTES This driver works with any printer that doesn't automatically
perform a line feed when it receives a carriage return command. All
overprinting is done by returning the carriage and passing over the
line again.
TYPEWRITER PRINTER (backspacing) ----- Driver: TYPEWR
^PD Backspaces and overprints each character twice
^PB Backspaces and overprints each character three times
^PS Backspaces and overprints the underscore character
^PT/V Prints super/subscripts with a full line between
super/subscript and text
.LH Sets line height only in multiples of full lines
.CW N/A
.PS N/A
.LQ N/A
.UJ N/A
NOTES This driver works with any printer that doesn't automatically
perform a line feed when a it receives a carriage return command,
and responds to a backspace character. Overprinting is done by
backspacing.
AUTO LINE FEED PRINTER (backspacing) ----- Driver: AUTOLF
^PD Backspaces and overprints each character twice
^PB Backspaces and overprints each character three times
^PS Backspaces and overprints the underscore character
^PT/V Prints super/subscripts with a full line between
super/subscript and text
.LH Sets line height only in multiples of full lines
.CW N/A
.PS N/A
.LQ N/A
.UJ N/A
NOTES This driver works with any printer that automatically
performs a line feed when it receives a carriage return character,
and responds to a backspace command. Overprinting is done by
backspacing.
SIMPLE CUSTOMIZABLE PRINTERS ----- Driver: SIMPLE
All print controls cause control strings (on and off) in
the user area to be sent to the printer. These strings
are used by both the SIMPLE and CUSTOM drivers. They can
be installed with the WSCHANGE program.
.LQ Controlled by user area strings
.PS Controlled by user area strings
.CW N/A
.UJ N/A
.LH N/A
NOTES This printer driver prints the line in one pass, sending
control strings from the user area to select print enhancements.
CUSTOMIZABLE PRINTERS ----- Driver: CUSTOM
All print controls cause control strings (on and off) in
the user area to be sent to the printer. These strings
are used by both the SIMPLE and CUSTOM drivers. They can
be installed with the WSCHANGE program.
.LQ ON/OFF controlled by user area strings
.PS ON/OFF controlled by user area strings
.LH Sets line height only in multiples of full lines
.UJ N/A
.CW N/A
NOTES This driver prints the line in multiple passes, sending
control strings from the user area to select print enhancements.
PREVIEW TO DISK ----- Driver: PRVIEW
This driver prints documents to the PREVIEW.WS file to allow
you to preview the format and appearance of a document before
printing. Headers, footers, and pagination are shown correctly
and print controls remain in the file to display onscreen
attributes. Dot commands are not printed.
PRINT TO DISK WITHOUT PRINT CONTROLS ----- Driver: ASCII
This driver prints to the ASCII.WS file, stripping headers and
footers, high bits, and print controls.
PRINT TO DISK WITHOUT HEADERS AND FOOTERS ----- Driver: XTRACT
This driver prints to the XTRACT.WS disk file, stripping headers
and footers, but preserving high bits and print controls.
ANADEX 9500A, 9500B ----- Driver: 9500
^PY N/A
^PT/V Even superscript roll
.CW .CW Font name
--- ---------
9 13.3 cpi
10 12 cpi
12 10 cpi
18 6.7 cpi
20 6 cpi
24 5 cpi
.LH 1/24" resolution, use even values
.UJ This printer has no incremental horizontal positioning
.PS N/A
.LQ N/A
ANADEX 9501B, INTEQ 5100B ----- Driver: 9501B
^PY N/A
^PT/V Even superscript roll
.CW .CW Font name
--- ---------
7 16.7 cpi
8 15 cpi
10 12.5 cpi
12 10 cpi
14 8.3 cpi
16 7.5 cpi
20 6.2 cpi
24 5 cpi
.LH 1/24" resolution, use even values
.UJ This printer has no incremental horizontal positioning
.PS N/A
.LQ N/A
C. ITOH STARWRITER 1550 AND 8510 ----- Driver: C1550
^PY N/A
^PT/V Prints full-size characters with roll
.CW .CW Font Name
--- ---------
7 compressed
10 elite
12 pica
14 expanded compressed
20 expanded elite
24 expanded pica
.LQ N/A
.PS N/A
.UL Continuous underlining suppresses microspace justification
C. ITOH F10 STARWRITER ----- Driver: QUME
See Diablo 630, 1610, 1620 Daisy Wheel.
Note: Proportional printing was tested with a Theme 10 wheel.
CANON LBP-8A1 AND LBP-8A2 LASER PRINTER ----- Driver: LBP8
^PY Selects italics if appropriate font installed
^PT/V Prints full-size characters with roll
.PS .PS
.CW OFF ON Font Name
--- -- ---------
6 - 20 cpi
8 - 15 cpi
9 - 13.3 cpi
10 - 12 cpi (elite)
12 - 10 cpi
20 - 6 cpi
24 - 5 cpi
16 - 7.5 cpi
- 7 (0-8) Garland 8 point
- 10 (9-11) Garland 12 point
- 14 (12-17) Expanded 8 point
- 20 (18-30) Expand

BIN
DiskImg/hd3/WSSHORT.OVR

Binary file not shown.

BIN
DiskImg/hd3/WSU.COM

Binary file not shown.

BIN
Doc/RomWBW Architecture.pdf

Binary file not shown.

132
Doc/SD-howto.txt

@ -1,18 +1,44 @@
Using an SD card with the RomWBW firmware. Using an SD card with the RomWBW firmware.
This document describes using the SD-card interface for the Z80-SBC, Zeta and This document describes using the SD-card interface for the Z80-SBC, Zeta and
N8 systems with the RomWBW firmware.
V2.0 supports the bit-bang method as well as CSIO port on the N8. It does not
support the original connection by Juha to the Z80-SBC MK-I.
N8 systems with the RomWBW firmware. It does not cover the ParPortProp SD
interface.
V2.0 supports the bit-bang method as well as CSI/O port on the N8. It does not
support the original connection by Juha to the Z80-SBC MK-I. The firmware does
have support for the high capacity (HC) cards.
V2.1 supports the Mini-PPISD board for the Z80-SBC and Zeta. V2.1 supports the Mini-PPISD board for the Z80-SBC and Zeta.
All interfaces (except the PPISD) use the latch and input port used to
communicate with the DS1302 RTC chip. Each interface is slightly different and
will be discussed in turn.
The SD-card interface uses four signal lines. A chip select, data
out to the card, clock out to the card and a data in from the card.
An SD-card interface uses four signal lines. A chip select, data out to the
card, clock out to the card and a data in from the card. Except for the CSIO
port interface on the N8-2312 board, all N8VEM interfaces use a bit-banging
technique. The hardware is slightly different for each and will be discussed
in turn. The configuration options are given for those who tailor their
versions of the firmware.
- Z80-SBC MK-II with SD-mini board
- Zeta with SD-mini board
- N8-2511 (prototype)
- N8-2312 (production)
- Mini-PPISD board
--Z80-SBC MK-II with SD-mini board--
The Z80-SBC interface uses the latch and input port normally used for the
DS1302 RTC chip. The latch for the RTC is only 6-bits wide so we will be
doubling up on the RTC data out and clock lines. The chip select uses a spare
latch output and the data in uses the 'config' header input.
Miniboard MK II SBC Use
1 +5v
2 GND
3 U5 pin 9 Data in to SBC from card
4 U18 pin 15 Data out from SBC to card
5 N/C alternative to pin 3
6 N/C alternative to pin 4
7 U18 pin 12 Clock out to card
8 U18 pin 2 Chip select to card
The jumpers on the miniboard are K1 1-2, K2 1-2.
Resistor R11 must be removed.
Zeta
--Zeta with SD-mini board--
The Zeta uses a 6-bit latch for the RTC so we will be doubling up on the RTC The Zeta uses a 6-bit latch for the RTC so we will be doubling up on the RTC
data out and clock lines. The chip select uses a spare latch output and the data out and clock lines. The chip select uses a spare latch output and the
data in uses the 'config' header input. data in uses the 'config' header input.
@ -33,20 +59,6 @@ Miniboard Zeta Use
8 U11 pin 7 Chip select to card 8 U11 pin 7 Chip select to card
The jumpers on the SD miniboard are K1 1-2, K2 1-2. The jumpers on the SD miniboard are K1 1-2, K2 1-2.
N8VEM Z80-SBC MK-II
This is the same as for the Zeta except using different pin numbers.
Miniboard MK II SBC Use
1 +5v
2 GND
3 U5 pin 9 Data in to SBC from card
4 U18 pin 15 Data out from SBC to card
5 N/C alternative to pin 3
6 N/C alternative to pin 4
7 U18 pin 12 Clock out to card
8 U18 pin 2 Chip select to card
The jumpers on the miniboard are K1 1-2, K2 1-2.
Resistor R11 must be removed.
Testing the Zeta and Z80-SBC MK-II boards Testing the Zeta and Z80-SBC MK-II boards
With the miniboard connected to the Zeta BUT WITH NO SD-CARD INSTALLED do the With the miniboard connected to the Zeta BUT WITH NO SD-CARD INSTALLED do the
following. following.
@ -66,13 +78,21 @@ instead of a 74HCT174 (or similar) for U11. To bring the outputs up enough
>O 70 80 activates the data out line >O 70 80 activates the data out line
>O 70 40 activates the clock line >O 70 40 activates the clock line
>O 70 04 activates the chip select line >O 70 04 activates the chip select line
5. If all is ok then time to assemble new firmware. In your xxx_config.asm
file set SDENABLE to true and set the SDCAPACITY to the size of your card.
6. Power down, plug in the SD-card and power-up. There is no hot-swapping in
5. Power down, plug in the SD-card and power-up. There is no hot-swapping in
this interface. After that it should behave as the other drives. this interface. After that it should behave as the other drives.
Note that the SD-interface is SLOW and can take a few seconds to respond. Note that the SD-interface is SLOW and can take a few seconds to respond.
N8
For assembly in the relative config_xxx.asm file alter the following:
SDENABLE .EQU TRUE
SDTRACE .EQU 1
SDCAPACITY .EQU (whatever your card size is in MB)
SDCSIO .EQU FALSE (FALSE for bit-banging)
SDCSIOFAST .EQU FALSE (ignore this, only for N8 CSIO port)
PPISD .EQU FALSE
--N8-2511 (prototype)--
The N8-2511 board by default uses a similar bit-banging technique and interface
as the Z80 MK-II and Zeta boards. A hardware modification is needed to use the
faster CSI/O port of the Z180 CPU.
Make sure you have cut the track to or removed 4k7 pullup resistor marked Make sure you have cut the track to or removed 4k7 pullup resistor marked
PU4.7K-H that goes to the data out of the SD-card and pin 9 of U4 (the PU4.7K-H that goes to the data out of the SD-card and pin 9 of U4 (the
74LS125). It has damaged the SD-card I was initially testing as they are not 74LS125). It has damaged the SD-card I was initially testing as they are not
@ -80,8 +100,16 @@ designed for 5v on any pin. Before putting any SD-card into the connector,
check all voltages and make sure they are less than 3.6v, preferably about check all voltages and make sure they are less than 3.6v, preferably about
3.3v. You can use the monitor's 'O 88 07' command to set all outputs on. 3.3v. You can use the monitor's 'O 88 07' command to set all outputs on.
The quick guide to modifying the SD-card interface to use the CSI/O
port on the N8-2511 board.
For assembly in the config_n8_2511.asm file alter the following:
SDENABLE .EQU TRUE
SDTRACE .EQU 1
SDCAPACITY .EQU (whatever your card size is in MB)
SDCSIO .EQU FALSE (FALSE for bit-banging)
SDCSIOFAST .EQU FALSE (ignore this, only for CSIO port)
PPISD .EQU FALSE
--The quick guide to modifying the SD-card interface to use the CSI/O
port on the N8-2511 board.--
It is assumed that you have got the standard SD-card interface running and It is assumed that you have got the standard SD-card interface running and
have a known working SD-card (though not necessary for either). have a known working SD-card (though not necessary for either).
@ -110,6 +138,7 @@ have a known working SD-card (though not necessary for either).
7. DO NOT INSTALL THE SD CARD YET. Power up the N8 and grab your voltmeter. 7. DO NOT INSTALL THE SD CARD YET. Power up the N8 and grab your voltmeter.
Looking at the SD card connector from the edge closest to the joystick headers Looking at the SD card connector from the edge closest to the joystick headers
you should have the following voltages: you should have the following voltages:
PIN VOLTAGE USE
--9 3.3v not used, pulled high --9 3.3v not used, pulled high
-1 3.3v /CS -1 3.3v /CS
-2 0 or 3.3v data to card (TXS) -2 0 or 3.3v data to card (TXS)
@ -151,25 +180,43 @@ TXS: TXS will stay at the same level as the last bit sent. If it is hi use
If everything has gone as detailed above then you should be ready to try the If everything has gone as detailed above then you should be ready to try the
firmware. firmware.
N8 Firmware
There are two extra configurations for the CSIO port in the config_n8.asm file. There are two extra configurations for the CSIO port in the config_n8.asm file.
SDCSIO should be set to TRUE if you are using the CSIO port. The CSIO SDCSIO should be set to TRUE if you are using the CSIO port. The CSIO
transfers data LSB first, the SD card uses MSB first. Each data byte has to be transfers data LSB first, the SD card uses MSB first. Each data byte has to be
mirrored (i.e. swap bits around). There are two methods used. The rotate and mirrored (i.e. swap bits around). There are two methods used. The rotate and
shift is slow but uses very little code. The lookup table is much faster but shift is slow but uses very little code. The lookup table is much faster but
uses an extra 256 bytes of code space. uses an extra 256 bytes of code space.
Mini-PPISD board
For assembly in the config_n8_2511.asm file alter the following:
SDENABLE .EQU TRUE
SDTRACE .EQU 1
SDCAPACITY .EQU (whatever your card size is in MB)
SDCSIO .EQU TRUE (FALSE for bit-banging)
SDCSIOFAST .EQU TRUE (only use FALSE if memory space is tight)
PPISD .EQU FALSE
--N8-2312 (production)--
The production version has the CSI/O modifications already taken care of. If
there are problems then the hardware can be tested from Step 7 of the
modification guide above. NOTE: JP15 should be open.
The config_n8_2312.asm file should contain the following:
SDENABLE .EQU TRUE
SDTRACE .EQU 1
SDCAPACITY .EQU (whatever your card size is in MB)
SDCSIO .EQU TRUE
SDCSIOFAST .EQU TRUE (only use FALSE if memory space is tight)
PPISD .EQU FALSE
--Mini-PPISD board--
The PPISD is an updated version of the bit-bang design. It uses the PPI port The PPISD is an updated version of the bit-bang design. It uses the PPI port
found on the N8VEM range and can be used with the 6x0x mezzanine board. It has
full 5v to 3.3v level translation, can use power from the PPI connector or an
external supply and has a choice chip select inputs so two boards can be used
on the one computer. An extra header is given for daisy chaining a DSKY board
or another PPISD board.
found throughout the N8VEM range and can be used with the 6x0x mezzanine board.
It has full 5v to 3.3v level translation, can use power from the PPI connector
or an external supply and has a choice chip select inputs so two boards can be
used on the one computer. An extra header is given for daisy chaining a DSKY
board or another PPISD board.
There are only a few points to watch out for. It cannot be used with a PPIDE There are only a few points to watch out for. It cannot be used with a PPIDE
or a ParPortProp board as they double up on several pins. The chip select line
is active LOW - opposite to the Juha board.
or a ParPortProp board as they double up on several pins, but it can be used
with the DSKY board on the same PPI connector. The chip select line is active
LOW - opposite to the SD-mini board.
If the PPI is being used for other purposes (such as the DSKY) then the only If the PPI is being used for other purposes (such as the DSKY) then the only
programming requirements are that PPI outputs PC4 and PC5 must be kept high. programming requirements are that PPI outputs PC4 and PC5 must be kept high.
There are two jumpers. K1 selects the power source. Jumper 1-2 for an There are two jumpers. K1 selects the power source. Jumper 1-2 for an
@ -178,6 +225,9 @@ from the PPI connector (Z80-SBC MK-II, Zeta, N8 or SBC-188).
K2 selects which card-select line to be used. 1-2 uses PC4 and is the default K2 selects which card-select line to be used. 1-2 uses PC4 and is the default
for the RomWBW firmware. Jumper 2-3 to use PC5. for the RomWBW firmware. Jumper 2-3 to use PC5.
There is a page on the N8VEM Wiki with the latest details. There is a page on the N8VEM Wiki with the latest details.
In the config_xxx.asm files make
PPISD .EQU TRUE
PPIDEENABLE .EQU FALSE
DGG DGG

BIN
Doc/Source/RomWBW Architecture.docx

Binary file not shown.

BIN
Doc/Source/RomWBW Architecture.vsd

Binary file not shown.

76
Source/bnk1.asm

@ -12,16 +12,7 @@
; INCLUDE GENERIC STUFF ; INCLUDE GENERIC STUFF
; ;
#INCLUDE "std.asm" #INCLUDE "std.asm"
;
;==================================================================================================
; BANK 1 ENTRY / JUMP TABLE
;==================================================================================================
;
; THIS IS THE ENTRY DISPATCH POINT FOR BANK1
;__________________________________________________________________________________________________
;
JP INITSYS
JP BIOS_DISPATCH
; ;
;================================================================================================== ;==================================================================================================
; SYSTEM INITIALIZATION ; SYSTEM INITIALIZATION
@ -87,6 +78,9 @@ INITSYS2:
#IF (HDSKENABLE) #IF (HDSKENABLE)
CALL HDSK_INIT CALL HDSK_INIT
#ENDIF #ENDIF
;
LD DE,STR_BANNER
CALL WRITESTR
; ;
RET RET
; ;
@ -163,7 +157,7 @@ DIO_DISPATCH:
JR NC,DIO_COMMON JR NC,DIO_COMMON
; DISPATCH FUCNTION TO APPROPRIATE DRIVER ; DISPATCH FUCNTION TO APPROPRIATE DRIVER
AND $0F ;
AND $0F
; HACK TO FILL IN HSTTRK AND HSTSEC ; HACK TO FILL IN HSTTRK AND HSTSEC
; BUT ONLY FOR READ/WRITE FUNCTION CALLS ; BUT ONLY FOR READ/WRITE FUNCTION CALLS
@ -270,7 +264,7 @@ SYS_BNKCPY:
LD A,C ; BANK SELECTION TO A LD A,C ; BANK SELECTION TO A
PUSH IX PUSH IX
POP BC ; BC = BYTE COUNT TO COPY POP BC ; BC = BYTE COUNT TO COPY
JP $FF03 ; JUST PASS CONTROL TO HBIOS STUB IN UPPER MEMORY
JP HB_BNKCPY ; JUST PASS CONTROL TO HBIOS STUB IN UPPER MEMORY
; ;
; COMMON ROUTINE THAT IS CALLED BY CHARACTER IO DRIVERS WHEN ; COMMON ROUTINE THAT IS CALLED BY CHARACTER IO DRIVERS WHEN
; AN IDLE CONDITION IS DETECTED (WAIT FOR INPUT/OUTPUT) ; AN IDLE CONDITION IS DETECTED (WAIT FOR INPUT/OUTPUT)
@ -371,8 +365,6 @@ SIZ_HDSK .EQU $ - ORG_HDSK
#DEFINE DSKY_KBD #DEFINE DSKY_KBD
#INCLUDE "util.asm" #INCLUDE "util.asm"
; ;
;;;;#INCLUDE "memmgr.asm"
;
;================================================================================================== ;==================================================================================================
; BANK ONE GLOBAL DATA ; BANK ONE GLOBAL DATA
;================================================================================================== ;==================================================================================================
@ -387,6 +379,12 @@ HSTSEC .DW 0 ; SECTOR IN BUFFER
; ;
DIOBUF .DW $FD00 ; PTR TO 512 BYTE DISK XFR BUFFER DIOBUF .DW $FD00 ; PTR TO 512 BYTE DISK XFR BUFFER
; ;
STR_BANNER .DB "N8VEM HBIOS v", BIOSVER, " ("
VAR_LOC .DB VARIANT, "-"
TST_LOC .DB TIMESTAMP, ")\r\n"
.DB PLATFORM_NAME, DSKYLBL, VDULBL, FDLBL, IDELBL, PPIDELBL,
.DB SDLBL, PRPLBL, PPPLBL, HDSKLBL, "\r\n$"
;
;================================================================================================== ;==================================================================================================
; FILL REMAINDER OF BANK ; FILL REMAINDER OF BANK
;================================================================================================== ;==================================================================================================
@ -408,23 +406,19 @@ HB_IMG .EQU $
.ORG HB_LOC .ORG HB_LOC
; ;
;================================================================================================== ;==================================================================================================
; HBIOS DISPATCH
; HBIOS INTERRUPT VECTOR TABLE
;================================================================================================== ;==================================================================================================
; ;
; DISPATCH JUMP TABLE FOR UPPER MEMORY HBIOS FUNCTIONS
; AREA RESERVED FOR UP TO 16 INTERRUPT VECTOR ENTRIES (MODE 2)
; ;
JP HB_INIT
JP HB_BNKCPY
;
; MEMORY MANAGER
;
#INCLUDE "memmgr.asm"
HB_IVT:
.FILL 20H,0FFH
; ;
;================================================================================================== ;==================================================================================================
; HBIOS BOOT ROUTINE
; HBIOS INITIALIZATION
;================================================================================================== ;==================================================================================================
; ;
; SETUP RST 08 TO HANDLE MAIN BIOS FUNCTIONS
; SETUP RST 08 VECTOR TO HANDLE MAIN BIOS FUNCTIONS
; ;
HB_INIT: HB_INIT:
LD A,0C3H ; $C3 = JP LD A,0C3H ; $C3 = JP
@ -433,6 +427,10 @@ HB_INIT:
LD (9H),HL LD (9H),HL
RET RET
; ;
; MEMORY MANAGER
;
#INCLUDE "memmgr.asm"
;
;================================================================================================== ;==================================================================================================
; HBIOS BNKCPY ROUTINE ; HBIOS BNKCPY ROUTINE
;================================================================================================== ;==================================================================================================
@ -467,36 +465,34 @@ HB_BNKCPY2:
; ENTRY POINT FOR BIOS FUNCTIONS (TARGET OF RST 08) ; ENTRY POINT FOR BIOS FUNCTIONS (TARGET OF RST 08)
; ;
HB_ENTRY: HB_ENTRY:
LD (STACKSAV),SP ; SAVE ORIGINAL STACK FRAME
LD SP,STACK ; SETUP NEW STACK FRAME
PGRAMF(1) ; MAP RAM PAGE 1 INTO LOWER 32K PGRAMF(1) ; MAP RAM PAGE 1 INTO LOWER 32K
CALL 1003H ; CALL BANK 1 HBIOS FUNCTION DISPATCHER
LD (HB_STKSAV),SP ; SAVE ORIGINAL STACK FRAME
LD SP,HB_STACK ; SETUP NEW STACK FRAME
PUSH AF ; SAVE AF (FUNCTION RETURN)
CALL BIOS_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER
PUSH AF ; SAVE AF
PGRAMF(0) ; MAP RAM PAGE 0 INTO LOWER 32K PGRAMF(0) ; MAP RAM PAGE 0 INTO LOWER 32K
POP AF ; RESTORE AF POP AF ; RESTORE AF
LD SP,(STACKSAV) ; RESTORE ORIGINAL STACK FRAME
LD SP,(HB_STKSAV) ; RESTORE ORIGINAL STACK FRAME
RET ; RETURN TO CALLER RET ; RETURN TO CALLER
; ;
; PRIVATE DATA
;
STACKSAV .DW 0
;
; JUST FOR FUN, PRIVATE STACK IS LOCATED AT TOP OF MEMORY...
;
STACK .EQU 0
;
;
HB_STKSAV .DW 0 ; PREVIOUS STACK POINTER (SEE PROXY)
; ;
HB_SLACK .EQU (HB_END - $) HB_SLACK .EQU (HB_END - $)
.ECHO "STACK space remaining: "
.ECHO "HBIOS space remaining: "
.ECHO HB_SLACK .ECHO HB_SLACK
.ECHO " bytes.\n" .ECHO " bytes.\n"
; ;
.FILL HB_SLACK,0FFH .FILL HB_SLACK,0FFH
;
;==================================================================================================
; HBIOS STACK LIVES IN THE SLACK SPACE!!!
;==================================================================================================
;
HB_STACK .EQU $ & 0FFFFH
; ;
.END .END

5
Source/bootapp.asm

@ -97,11 +97,14 @@ LOOP:
; ;
; INITIALIZE HBIOS AND JUMP TO LOADER ; INITIALIZE HBIOS AND JUMP TO LOADER
; ;
; CALL HBIOS HARDWARE INITIALIZATION
LD A,1 ; SETUP TO SELECT PAGE 1 LD A,1 ; SETUP TO SELECT PAGE 1
CALL RAMPG ; SELECT RAM PAGE 1 (WHICH IS NOW LOADED WITH BNK1 CODE) CALL RAMPG ; SELECT RAM PAGE 1 (WHICH IS NOW LOADED WITH BNK1 CODE)
CALL 1000H ; CALL HBIOS INITIALIZATION CALL 1000H ; CALL HBIOS INITIALIZATION
;
; CALL HBIOS PROXY INITIALIZATION
CALL RAMPGZ ; MAKE SURE RAM PAGE ZERO IS MAPPED TO LOWER 32K CALL RAMPGZ ; MAKE SURE RAM PAGE ZERO IS MAPPED TO LOWER 32K
CALL 0FF00H ; CALL HBIOS PROXY INITIALIZATION
CALL 0FF20H ; CALL HBIOS PROXY INITIALIZATION
; ;
JP 8400H ; JUMP TO LOADER JP 8400H ; JUMP TO LOADER
;______________________________________________________________________________________________________________________ ;______________________________________________________________________________________________________________________

5
Source/bootrom.asm

@ -87,11 +87,14 @@ LOOP:
; ;
; INITIALIZE HBIOS AND JUMP TO LOADER ; INITIALIZE HBIOS AND JUMP TO LOADER
; ;
; CALL HBIOS HARDWARE INITIALIZATION
LD A,1 ; SETUP TO SELECT PAGE 1 LD A,1 ; SETUP TO SELECT PAGE 1
CALL RAMPG ; SELECT RAM PAGE 1 (WHICH IS NOW LOADED WITH BNK1 CODE) CALL RAMPG ; SELECT RAM PAGE 1 (WHICH IS NOW LOADED WITH BNK1 CODE)
CALL 1000H ; CALL HBIOS INITIALIZATION CALL 1000H ; CALL HBIOS INITIALIZATION
;
; CALL HBIOS PROXY INITIALIZATION
CALL RAMPGZ ; MAKE SURE RAM PAGE ZERO IS MAPPED TO LOWER 32K CALL RAMPGZ ; MAKE SURE RAM PAGE ZERO IS MAPPED TO LOWER 32K
CALL 0FF00H ; CALL HBIOS PROXY INITIALIZATION
CALL 0FF20H ; CALL HBIOS PROXY INITIALIZATION
; ;
JP 8400H ; JUMP TO LOADER JP 8400H ; JUMP TO LOADER
;______________________________________________________________________________________________________________________ ;______________________________________________________________________________________________________________________

29
Source/cbios.asm

@ -214,7 +214,7 @@ CONIO:
; ;
LD A,(IOBYTE) ; GET IOBYTE LD A,(IOBYTE) ; GET IOBYTE
AND $03 ; ISOLATE RELEVANT IOBYTE BITS FOR CONSOLE AND $03 ; ISOLATE RELEVANT IOBYTE BITS FOR CONSOLE
OR $00 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0B
OR $00 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C
JP CIO_DISP JP CIO_DISP
; ;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
@ -262,7 +262,7 @@ PUNCHIO:
RLCA RLCA
RLCA RLCA
AND $03 ; ISOLATE RELEVANT IOBYTE BITS FOR PUN: AND $03 ; ISOLATE RELEVANT IOBYTE BITS FOR PUN:
OR $08 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0B
OR $08 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C
JP CIO_DISP JP CIO_DISP
; ;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
@ -288,7 +288,7 @@ READERIO:
RRCA ; SHIFT RELEVANT BITS TO BITS 0-1 RRCA ; SHIFT RELEVANT BITS TO BITS 0-1
RRCA RRCA
AND $03 ; ISOLATE RELEVANT IOBYTE BITS FOR RDR: AND $03 ; ISOLATE RELEVANT IOBYTE BITS FOR RDR:
OR $04 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0B
OR $04 ; PUT LOGICAL DEVICE IN BITS 2-3 (CON:=$00, RDR:=$04, PUN:=$08, LST:=$0C
JP CIO_DISP JP CIO_DISP
; ;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
@ -310,8 +310,7 @@ CIOST:
; ;
OR A ; SET FLAGS OR A ; SET FLAGS
RET Z ; NO CHARACTERS WAITING (IST) OR OUTPUT BUF FULL (OST) RET Z ; NO CHARACTERS WAITING (IST) OR OUTPUT BUF FULL (OST)
XOR A
DEC A ; $FF SIGNALS READY TO READ (IST) OR WRITE (OST)
OR 0FFH ; $FF SIGNALS READY TO READ (IST) OR WRITE (OST)
RET RET
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
SELDSK: SELDSK:
@ -986,9 +985,7 @@ NUL_OUT:
; ;
NUL_IST: NUL_IST:
NUL_OST: NUL_OST:
; LD A,$FF
XOR A ; A=0
DEC A ; A=$FF & NZ SET
OR $FF ; A=$FF & NZ SET
RET RET
; ;
;================================================================================================== ;==================================================================================================
@ -1445,14 +1442,13 @@ STR_SEC .DB " SEC=$"
; DATA ; DATA
;================================================================================================== ;==================================================================================================
; ;
STR_BANNER .DB "\r\n", OSLBL, " for ", PLATFORM_NAME, "\r\n"
.DB "CBIOS v", BIOSVER, " ("
STR_BANNER .DB OSLBL, " for ", PLATFORM_NAME, " (CBIOS v", BIOSVER, ")$"
VAR_LOC .DB VARIANT VAR_LOC .DB VARIANT
.DB "-"
TST_LOC .DB TIMESTAMP, ")", DSKYLBL, VDULBL, FDLBL, IDELBL, PPIDELBL, SDLBL, PRPLBL, PPPLBL, "\r\n$"
TST_LOC .DB TIMESTAMP
;
STR_INITRAMDISK .DB "\r\nFormatting RAMDISK...$" STR_INITRAMDISK .DB "\r\nFormatting RAMDISK...$"
STR_READONLY .DB "\r\nCBIOS Error: Read Only Drive$"
STR_STALE .DB "\r\nCBIOS Error: Stale Drive$"
STR_READONLY .DB "\r\nCBIOS Err: Read Only Drive$"
STR_STALE .DB "\r\nCBIOS Err: Stale Drive$"
; ;
SECADR: .DW 0 ; ADDRESS OF SECTOR IN ROM/RAM PAGE SECADR: .DW 0 ; ADDRESS OF SECTOR IN ROM/RAM PAGE
DEFDRIVE .DB 0 ; DEFAULT DRIVE DEFDRIVE .DB 0 ; DEFAULT DRIVE
@ -2048,8 +2044,10 @@ INIT2:
LD (CDISK),A ; SETUP CDISK LD (CDISK),A ; SETUP CDISK
; STARTUP MESSAGE ; STARTUP MESSAGE
CALL NEWLINE
LD DE,STR_BANNER LD DE,STR_BANNER
CALL WRITESTR CALL WRITESTR
CALL NEWLINE
; SAVE COMMAND PROCESSOR TO CACHE IN RAM1 ; SAVE COMMAND PROCESSOR TO CACHE IN RAM1
LD A,1 LD A,1
@ -2064,6 +2062,8 @@ INIT2:
CALL BLKRES ; RESET DISK (DE)BLOCKING ALGORITHM CALL BLKRES ; RESET DISK (DE)BLOCKING ALGORITHM
CALL MD_INIT ; INITIALIZE MEMORY DISK DRIVER (RAM/ROM) CALL MD_INIT ; INITIALIZE MEMORY DISK DRIVER (RAM/ROM)
CALL NEWLINE
; STARTUP CPM ; STARTUP CPM
JP GOCPM JP GOCPM
; ;
@ -2114,6 +2114,7 @@ DEFDRV2:
; WE HAVE A MATCH MATCHED, RECORD NEW DEFAULT DRIVE ; WE HAVE A MATCH MATCHED, RECORD NEW DEFAULT DRIVE
LD A,C ; C HAS MATCHING DRIVE, MOVE TO A LD A,C ; C HAS MATCHING DRIVE, MOVE TO A
LD (DEFDRIVE),A ; SAVE IT LD (DEFDRIVE),A ; SAVE IT
;
RET RET
; ;
.FILL (256 - ($ - INIT)),0 ; FILL REMAINDER OF PAGE .FILL (256 - ($ - INIT)),0 ; FILL REMAINDER OF PAGE

90
Source/dbgmon.asm

@ -1277,9 +1277,9 @@ INITIALIZE:
;_____________________________________________________________________________ ;_____________________________________________________________________________
MTERM_INIT: MTERM_INIT:
LD A, 82H LD A, 82H
OUT (PIOX),A
OUT (PPIX),A
LD A, 30H ;set PC4,5 to disable PPISD (if used) LD A, 30H ;set PC4,5 to disable PPISD (if used)
OUT (PIOC),A ;won't affect DSKY
OUT (PPIC),A ;won't affect DSKY
RET RET
;__KB_GET_____________________________________________________________________ ;__KB_GET_____________________________________________________________________
@ -1294,11 +1294,11 @@ KB_GET_LOOP: ; WAIT FOR KEY
CP 00H ; NULL? CP 00H ; NULL?
JR Z,KB_GET_LOOP ; LOOP WHILE NOT ZERO JR Z,KB_GET_LOOP ; LOOP WHILE NOT ZERO
LD D,A ; STORE A LD D,A ; STORE A
LD A,4FH+30H ; SCAN ALL COL LINES
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,4FH | 30H ; SCAN ALL COL LINES
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
KB_CLEAR_LOOP: ; WAIT FOR KEY TO CLEAR KB_CLEAR_LOOP: ; WAIT FOR KEY TO CLEAR
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KB_CLEAR_LOOP ; YES, EXIT JR NZ,KB_CLEAR_LOOP ; YES, EXIT
@ -1324,43 +1324,43 @@ KB_GET_DONE:
; ;
KB_SCAN: KB_SCAN:
LD C,0000H LD C,0000H
LD A,41H+30H ; SCAN COL ONE
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,41H | 30H ; SCAN COL ONE
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD C,0040H LD C,0040H
LD A,42H+30H ; SCAN COL TWO
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,42H | 30H ; SCAN COL TWO
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD C,0080H LD C,0080H
LD A,44H+30H ; SCAN COL THREE
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,44H | 30H ; SCAN COL THREE
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD C,00C0H ; LD C,00C0H ;
LD A,48H+30H ; SCAN COL FOUR
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,48H | 30H ; SCAN COL FOUR
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE CALL KB_SCAN_DELAY ; DELAY TO ALLOW LINES TO STABILIZE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KB_SCAN_FOUND ; YES, EXIT JR NZ,KB_SCAN_FOUND ; YES, EXIT
LD A, 40H+30H ; TURN OFF ALL COLUMNS
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A, 40H | 30H ; TURN OFF ALL COLUMNS
OUT (PPIC),A ; SEND TO COLUMN LINES
LD A, 00H ; RETURN NULL LD A, 00H ; RETURN NULL
RET ; EXIT RET ; EXIT
@ -1368,8 +1368,8 @@ KB_SCAN_FOUND:
AND 3FH ; CLEAR TOP TWO BITS AND 3FH ; CLEAR TOP TWO BITS
OR C ; ADD IN ROW BITS OR C ; ADD IN ROW BITS
LD C,A ; STORE VALUE LD C,A ; STORE VALUE
LD A, 00H+30H ; TURN OFF ALL COLUMNS
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A, 00H | 30H ; TURN OFF ALL COLUMNS
OUT (PPIC),A ; SEND TO COLUMN LINES
LD A,C ; RESTORE VALUE LD A,C ; RESTORE VALUE
RET RET
@ -1400,25 +1400,25 @@ HEXDISPLAY:
LD BC,0007H LD BC,0007H
ADD HL,BC ADD HL,BC
LD B,08H ; SET DIGIT COUNT LD B,08H ; SET DIGIT COUNT
LD A,40H+30H ; SET CONTROL PORT 7218 TO OFF
OUT (PIOC),A ; OUTPUT
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
OUT (PPIC),A ; OUTPUT
CALL PAUSE ; WAIT CALL PAUSE ; WAIT
LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL) LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL)
OUT (PIOA),A ; OUTPUT TO PORT
LD A,80H+30H ; STROBE WRITE PULSE WITH CONTROL=1
OUT (PIOC),A ; OUTPUT TO PORT
OUT (PPIA),A ; OUTPUT TO PORT
LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1
OUT (PPIC),A ; OUTPUT TO PORT
CALL PAUSE ; WAIT CALL PAUSE ; WAIT
LD A,40H+30H ; SET CONTROL PORT 7218 TO OFF
OUT (PIOC),A ; OUTPUT
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
OUT (PPIC),A ; OUTPUT
HEXDISPLAY_LP: HEXDISPLAY_LP:
LD A,(HL) ; GET DISPLAY DIGIT LD A,(HL) ; GET DISPLAY DIGIT
CALL DECODEDISPLAY ; DECODE DISPLAY CALL DECODEDISPLAY ; DECODE DISPLAY
OUT (PIOA),A ; OUT TO PIOA
LD A,00H+30H ; SET WRITE STROBE
OUT (PIOC),A ; OUT TO PIOC
OUT (PPIA),A ; OUT TO PPIA
LD A,00H | 30H ; SET WRITE STROBE
OUT (PPIC),A ; OUT TO PPIC
CALL PAUSE ; DELAY CALL PAUSE ; DELAY
LD A,40H+30H ; SET CONTROL PORT OFF
OUT (PIOC),A ; OUT TO PIOC
LD A,40H | 30H ; SET CONTROL PORT OFF
OUT (PPIC),A ; OUT TO PPIC
CALL PAUSE ; WAIT CALL PAUSE ; WAIT
DEC HL ; INC POINTER DEC HL ; INC POINTER
DJNZ HEXDISPLAY_LP ; LOOP FOR NEXT DIGIT DJNZ HEXDISPLAY_LP ; LOOP FOR NEXT DIGIT
@ -1456,24 +1456,24 @@ SEGDISPLAY:
LD BC,0007H LD BC,0007H
ADD HL,BC ADD HL,BC
LD B,08H ; SET DIGIT COUNT LD B,08H ; SET DIGIT COUNT
LD A,40H+30H ; SET CONTROL PORT 7218 TO OFF
OUT (PIOC),A ; OUTPUT
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
OUT (PPIC),A ; OUTPUT
CALL PAUSE ; WAIT CALL PAUSE ; WAIT
LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL) LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL)
OUT (PIOA),A ; OUTPUT TO PORT
LD A,80H+30H ; STROBE WRITE PULSE WITH CONTROL=1
OUT (PIOC),A ; OUTPUT TO PORT
OUT (PPIA),A ; OUTPUT TO PORT
LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1
OUT (PPIC),A ; OUTPUT TO PORT
CALL PAUSE ; WAIT CALL PAUSE ; WAIT
LD A,40H+30H ; SET CONTROL PORT 7218 TO OFF
OUT (PIOC),A ; OUTPUT
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
OUT (PPIC),A ; OUTPUT
SEGDISPLAY_LP: SEGDISPLAY_LP:
LD A,(HL) ; GET DISPLAY DIGIT LD A,(HL) ; GET DISPLAY DIGIT
OUT (PIOA),A ; OUT TO PIOA
LD A,00H+30H ; SET WRITE STROBE
OUT (PIOC),A ; OUT TO PIOC
OUT (PPIA),A ; OUT TO PPIA
LD A,00H | 30H ; SET WRITE STROBE
OUT (PPIC),A ; OUT TO PPIC
CALL PAUSE ; DELAY CALL PAUSE ; DELAY
LD A,40H+30H ; SET CONTROL PORT OFF
OUT (PIOC),A ; OUT TO PIOC
LD A,40H | 30H ; SET CONTROL PORT OFF
OUT (PPIC),A ; OUT TO PPIC
CALL PAUSE ; WAIT CALL PAUSE ; WAIT
DEC HL ; INC POINTER DEC HL ; INC POINTER
DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT

43
Source/loader.asm

@ -45,8 +45,8 @@ INIT2:
; ;
DOBOOTMENU: DOBOOTMENU:
LD DE,STR_BANNER
CALL WRITESTR
; LD DE,STR_BANNER
; CALL WRITESTR
CALL LISTDRIVES CALL LISTDRIVES
LD DE,STR_BOOTMENU LD DE,STR_BOOTMENU
@ -474,12 +474,6 @@ DB_DONE:
CALL PATBI CALL PATBI
CALL RAMPGZ CALL RAMPGZ
; ; IF BILOC IS SET, THEN ALSO PATCH BOOT INFO INTO OS IMAGE
; LD HL,(BL_BILOC)
; LD A,H
; OR L
; CALL NZ,PATBI ; PATCH IF BL_BILOC <> 0
; JUMP TO COLD BOOT ENTRY ; JUMP TO COLD BOOT ENTRY
LD HL,(BL_CPMENT) LD HL,(BL_CPMENT)
JP (HL) JP (HL)
@ -625,27 +619,27 @@ SEGDISPLAY:
LD BC,0007H LD BC,0007H
ADD HL,BC ADD HL,BC
LD B,08H ; SET DIGIT COUNT LD B,08H ; SET DIGIT COUNT
LD A,40H+30H ; SET CONTROL PORT 7218 TO OFF
OUT (PIOC),A ; OUTPUT
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
OUT (PPIC),A ; OUTPUT
CALL DELAY ; WAIT CALL DELAY ; WAIT
LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL) LD A,0F0H ; SET CONTROL TO 1111 (DATA COMING, HEX DECODE,NO DECODE, NORMAL)
SEGDISPLAY1: ; SEGDISPLAY1: ;
OUT (PIOA),A ; OUTPUT TO PORT
LD A,80H+30H ; STROBE WRITE PULSE WITH CONTROL=1
OUT (PIOC),A ; OUTPUT TO PORT
OUT (PPIA),A ; OUTPUT TO PORT
LD A,80H | 30H ; STROBE WRITE PULSE WITH CONTROL=1
OUT (PPIC),A ; OUTPUT TO PORT
CALL DELAY ; WAIT CALL DELAY ; WAIT
LD A,40H+30H ; SET CONTROL PORT 7218 TO OFF
OUT (PIOC),A ; OUTPUT
LD A,40H | 30H ; SET CONTROL PORT 7218 TO OFF
OUT (PPIC),A ; OUTPUT
SEGDISPLAY_LP: SEGDISPLAY_LP:
LD A,(HL) ; GET DISPLAY DIGIT LD A,(HL) ; GET DISPLAY DIGIT
OUT (PIOA),A ; OUT TO PIOA
LD A,00H+30H ; SET WRITE STROBE
OUT (PIOC),A ; OUT TO PIOC
OUT (PPIA),A ; OUT TO PPIA
LD A,00H | 30H ; SET WRITE STROBE
OUT (PPIC),A ; OUT TO PPIC
CALL DELAY ; DELAY CALL DELAY ; DELAY
LD A,40H+30H ; SET CONTROL PORT OFF
OUT (PIOC),A ; OUT TO PIOC
LD A,40H | 30H ; SET CONTROL PORT OFF
OUT (PPIC),A ; OUT TO PPIC
CALL DELAY ; WAIT CALL DELAY ; WAIT
DEC HL ; INC POINTER DEC HL ; INC POINTER
DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT DJNZ SEGDISPLAY_LP ; LOOP FOR NEXT DIGIT
@ -676,11 +670,8 @@ STR_NODISK .DB "\r\nNo disk!$"
STR_NOBOOT .DB "\r\nDisk not bootable!$" STR_NOBOOT .DB "\r\nDisk not bootable!$"
STR_BOOTERR .DB "\r\nBoot failure!$" STR_BOOTERR .DB "\r\nBoot failure!$"
; ;
STR_BANNER:
.DB "\r\n\r\n", PLATFORM_NAME, " Boot Loader v", BIOSVER
.DB " (", VARIANT, "-", TIMESTAMP, ")\r\n$"
STR_BOOTMENU:
.DB "\r\nBoot: (M)onitor, (R)OM, or Drive Letter ===> $"
STR_BANNER .DB "\r\n", PLATFORM_NAME, " Boot Loader$"
STR_BOOTMENU .DB "\r\nBoot: (M)onitor, (R)OM, or Drive Letter ===> $"
; ;
STR_SETUPMENU: STR_SETUPMENU:
.DB "\r\n\r\n", PLATFORM_NAME, " Setup & Configuration v", BIOSVER .DB "\r\n\r\n", PLATFORM_NAME, " Setup & Configuration v", BIOSVER
@ -724,7 +715,6 @@ CINUC:
; ;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
; ;
;BL_METABUF .ORG 8000H ; START OF RAM
BL_METABUF .EQU $ BL_METABUF .EQU $
BL_SIG .DW 0 ; SIGNATURE (WILL BE 0A55AH IF SET) BL_SIG .DW 0 ; SIGNATURE (WILL BE 0A55AH IF SET)
BL_PLATFORM .DB 0 ; Formatting Platform BL_PLATFORM .DB 0 ; Formatting Platform
@ -733,7 +723,6 @@ BL_FORMATTER .FILL 8,0 ; Formatting Program
BL_DRIVE .DB 0 ; Physical Disk Drive # BL_DRIVE .DB 0 ; Physical Disk Drive #
BL_LU .DW 0 ; Logical Unit (slice) BL_LU .DW 0 ; Logical Unit (slice)
; ;
; .ORG (BL_METABUF + 128 - 32)
.FILL (BL_METABUF + 128) - $ - 32 .FILL (BL_METABUF + 128) - $ - 32
BL_PROTECT .DB 0 ; write protect boolean BL_PROTECT .DB 0 ; write protect boolean
BL_UPDATES .DW 0 ; update counter BL_UPDATES .DW 0 ; update counter

8
Source/ppide.asm

@ -24,10 +24,10 @@ IDEMSB .EQU 21H ; MSB
IDECTL .EQU 22H ; CONTROL SIGNALS IDECTL .EQU 22H ; CONTROL SIGNALS
PPI1CONT .EQU 23H ; CONTROL BYTE PPI 82C55 PPI1CONT .EQU 23H ; CONTROL BYTE PPI 82C55
#ELSE #ELSE
IDELSB .EQU PIOA ; LSB
IDEMSB .EQU PIOB ; MSB
IDECTL .EQU PIOC ; CONTROL SIGNALS
PPI1CONT .EQU PIOX ; CONTROL BYTE PPI 82C55
IDELSB .EQU PPIA ; LSB
IDEMSB .EQU PPIB ; MSB
IDECTL .EQU PPIC ; CONTROL SIGNALS
PPI1CONT .EQU PPIX ; CONTROL BYTE PPI 82C55
#ENDIF #ENDIF
; ;
; PPI control bytes for read and write to IDE drive ; PPI control bytes for read and write to IDE drive

44
Source/ppp.asm

@ -37,38 +37,38 @@ PPP_CMDRESET .EQU $F0 ; SOFT RESET PROPELLER
; ;
PPP_INIT: PPP_INIT:
LD A,$9B ; PPI MODE 0, ALL PINS INPUT LD A,$9B ; PPI MODE 0, ALL PINS INPUT
OUT (PIOX),A ; SEND IT
OUT (PPIX),A ; SEND IT
LD A,11000010B ; PPI MODE 2 (BI HANDSHAKE), PC0-2 OUT, PB IN LD A,11000010B ; PPI MODE 2 (BI HANDSHAKE), PC0-2 OUT, PB IN
OUT (PIOX),A
OUT (PPIX),A
CALL DELAY ; PROBABLY NOT NEEDED CALL DELAY ; PROBABLY NOT NEEDED
LD A,00000000B ; SET PC0 -> 0 LD A,00000000B ; SET PC0 -> 0
OUT (PIOX),A
OUT (PPIX),A
LD A,00000010B ; SET PC1 -> 0 LD A,00000010B ; SET PC1 -> 0
OUT (PIOX),A
OUT (PPIX),A
LD A,00000101B ; SET PC2 -> 1 - ASSERT RESET ON PPP LD A,00000101B ; SET PC2 -> 1 - ASSERT RESET ON PPP
OUT (PIOX),A
OUT (PPIX),A
LD A,00000110B ; SET PC3 -> 0 LD A,00000110B ; SET PC3 -> 0
OUT (PIOX),A
OUT (PPIX),A
CALL DELAY ; PROBABLY NOT NEEDED CALL DELAY ; PROBABLY NOT NEEDED
IN A,(PIOA) ; CLEAR GARBAGE???
IN A,(PPIA) ; CLEAR GARBAGE???
CALL DELAY ; PROBABLY NOT NEEDED CALL DELAY ; PROBABLY NOT NEEDED
LD A,00000001B ; SET CMD FLAG LD A,00000001B ; SET CMD FLAG
OUT (PIOX),A ; SEND IT
OUT (PPIX),A ; SEND IT
LD E,PPP_CMDRESET LD E,PPP_CMDRESET
CALL PUTBYTE ; SEND THE COMMAND BYTE CALL PUTBYTE ; SEND THE COMMAND BYTE
CALL DELAY CALL DELAY
LD A,00000000B ; CLEAR CMD FLAG LD A,00000000B ; CLEAR CMD FLAG
OUT (PIOX),A
OUT (PPIX),A
LD A,00000100B ; SET PC2 -> 0 - DEASSERT RESET ON PPP LD A,00000100B ; SET PC2 -> 0 - DEASSERT RESET ON PPP
OUT (PIOX),A
OUT (PPIX),A
CALL DELAY ; PROBABLY NOT NEEDED CALL DELAY ; PROBABLY NOT NEEDED
@ -79,7 +79,7 @@ INIT1:
CALL DELAY CALL DELAY
CALL DELAY CALL DELAY
CALL DELAY CALL DELAY
IN A,(PIOA)
IN A,(PPIA)
POP BC POP BC
CP $AA CP $AA
RET Z RET Z
@ -426,46 +426,46 @@ PPPSTR_ERR .TEXT "ERR=$"
;================================================================================================== ;==================================================================================================
; ;
PUTBYTE: PUTBYTE:
IN A,(PIOC)
IN A,(PPIC)
BIT 7,A BIT 7,A
JR Z,PUTBYTE JR Z,PUTBYTE
LD A,E LD A,E
OUT (PIOA),A
OUT (PPIA),A
RET RET
; ;
GETBYTE: GETBYTE:
IN A,(PIOC)
IN A,(PPIC)
BIT 5,A BIT 5,A
JR Z,GETBYTE JR Z,GETBYTE
IN A,(PIOA)
IN A,(PPIA)
LD E,A LD E,A
RET RET
; ;
SENDCMD: SENDCMD:
IN A,(PIOA) ; DISCARD ANYTHING PENDING
IN A,(PPIA) ; DISCARD ANYTHING PENDING
; WAIT FOR OBF HIGH (OUTPUT BUFFER TO BE EMPTY) ; WAIT FOR OBF HIGH (OUTPUT BUFFER TO BE EMPTY)
IN A,(PIOC)
IN A,(PPIC)
BIT 7,A BIT 7,A
JR Z,SENDCMD JR Z,SENDCMD
LD A,00000001B ; SET CMD FLAG LD A,00000001B ; SET CMD FLAG
OUT (PIOX),A ; SEND IT
OUT (PPIX),A ; SEND IT
SENDCMD0: SENDCMD0:
IN A,(PIOC)
IN A,(PPIC)
BIT 7,A BIT 7,A
JR Z,SENDCMD0 JR Z,SENDCMD0
LD A,D LD A,D
OUT (PIOA),A
OUT (PPIA),A
SENDCMD1: SENDCMD1:
; WAIT FOR OBF HIGH (BYTE HAS BEEN RECEIVED) ; WAIT FOR OBF HIGH (BYTE HAS BEEN RECEIVED)
IN A,(PIOC)
IN A,(PPIC)
BIT 7,A BIT 7,A
JR Z,SENDCMD1 JR Z,SENDCMD1
; TURN OFF CMD ; TURN OFF CMD
LD A,00000000B ; CLEAR CMD FLAG LD A,00000000B ; CLEAR CMD FLAG
OUT (PIOX),A
OUT (PPIX),A
RET RET
; ;

32
Source/sd.asm

@ -103,9 +103,9 @@ SD_INIT:
OUT (RTC),A OUT (RTC),A
#IF (PPISD) #IF (PPISD)
LD A,82H ; PPI PORT A=OUT, B=IN, C=OUT LD A,82H ; PPI PORT A=OUT, B=IN, C=OUT
OUT (PIOX),A
OUT (PPIX),A
LD A,30H ; PC4,5 /CS HIGH LD A,30H ; PC4,5 /CS HIGH
OUT (PIOC),A
OUT (PPIC),A
#ENDIF #ENDIF
XOR A XOR A
DEC A DEC A
@ -135,10 +135,10 @@ SD_SENDCLKS:
#IF (!SDCSIO) #IF (!SDCSIO)
#IF (PPISD) #IF (PPISD)
LD A,03 ;PC1=1, TOGGLE CLOCK LD A,03 ;PC1=1, TOGGLE CLOCK
OUT (PIOX),A
OUT (PPIX),A
NOP NOP
LD A,02 ;PC1=0, RESET CLOCK LD A,02 ;PC1=0, RESET CLOCK
OUT (PIOX),A
OUT (PPIX),A
#ELSE #ELSE
OUT (RTC),A OUT (RTC),A
XOR SD_CLK ; TOGGLE CLOCK BIT XOR SD_CLK ; TOGGLE CLOCK BIT
@ -176,7 +176,7 @@ SD_DONE:
#IF (!SDCSIO) #IF (!SDCSIO)
#IF (PPISD) #IF (PPISD)
LD A,30H LD A,30H
OUT (PIOC),A ;PC4=1 /CS INACTIVE
OUT (PPIC),A ;PC4=1 /CS INACTIVE
LD B,16 LD B,16
#ELSE #ELSE
XOR A XOR A
@ -202,18 +202,18 @@ SD_PUT:
LD C,A ; C=BYTE TO SEND LD C,A ; C=BYTE TO SEND
LD B,8 ; SEND 8 BITS (LOOP 8 TIMES) LD B,8 ; SEND 8 BITS (LOOP 8 TIMES)
LD A,08H ;PC4=0, /CS ACTIVE LD A,08H ;PC4=0, /CS ACTIVE
OUT (PIOX),A
OUT (PPIX),A
SD_PUT1: SD_PUT1:
RL C ;ROTATE NEXT BIT FROM C INTO CF RL C ;ROTATE NEXT BIT FROM C INTO CF
LD A,01 ;PC0=1, DATA OUT=1 LD A,01 ;PC0=1, DATA OUT=1
JR C,SD_PUT2 JR C,SD_PUT2
LD A,00 ;PC0=0, DATA OUT =0 LD A,00 ;PC0=0, DATA OUT =0
SD_PUT2: SD_PUT2:
OUT (PIOX),A ;SEND DATA OUT
OUT (PPIX),A ;SEND DATA OUT
LD A,03 ;PC1=1, TOGGLE CLOCK LD A,03 ;PC1=1, TOGGLE CLOCK
OUT (PIOX),A
OUT (PPIX),A
LD A,02 ;PC1=0, RESET CLOCK LD A,02 ;PC1=0, RESET CLOCK
OUT (PIOX),A
OUT (PPIX),A
DJNZ SD_PUT1 ;REPEAT FOR ALL 8 BITS DJNZ SD_PUT1 ;REPEAT FOR ALL 8 BITS
RET RET
#ELSE #ELSE
@ -255,13 +255,13 @@ SD_GET:
#IF (PPISD) #IF (PPISD)
LD B,8 ; RECEIVE 8 BITS (LOOP 8 TIMES) LD B,8 ; RECEIVE 8 BITS (LOOP 8 TIMES)
SD_GET1: SD_GET1:
IN A,(PIOB) ; GET BIT FROM SD-CARD
IN A,(PPIB) ; GET BIT FROM SD-CARD
RLA ; ROTATE PB7 INTO CARRY RLA ; ROTATE PB7 INTO CARRY
RL C ; ROTATE CARRY INTO C RL C ; ROTATE CARRY INTO C
LD A,03 ; PC1=1, TOGGLE CLOCK LD A,03 ; PC1=1, TOGGLE CLOCK
OUT (PIOX),A
OUT (PPIX),A
LD A,02 ; PC1=0, RESET CLOCK LD A,02 ; PC1=0, RESET CLOCK
OUT (PIOX),A
OUT (PPIX),A
DJNZ SD_GET1 ; REPEAT FOR ALL 8 BITS DJNZ SD_GET1 ; REPEAT FOR ALL 8 BITS
LD A,C ; GET BYTE RECEIVED INTO A LD A,C ; GET BYTE RECEIVED INTO A
; CALL PRTHEXBYTE ; *DEBUG* ; CALL PRTHEXBYTE ; *DEBUG*
@ -323,7 +323,7 @@ MIRROR2:
SD_WAITRDY: SD_WAITRDY:
#IF (PPISD) #IF (PPISD)
LD A,21H ;/CS ACTIVE (PC4), DOUT=1 (PC0) LD A,21H ;/CS ACTIVE (PC4), DOUT=1 (PC0)
OUT (PIOC),A
OUT (PPIC),A
#ELSE #ELSE
IN A,(RTC) IN A,(RTC)
#IF (!SDCSIO) #IF (!SDCSIO)
@ -519,9 +519,9 @@ SD_GOIDLE:
SD_INITCARD: SD_INITCARD:
#IF (PPISD) #IF (PPISD)
LD A,82H ; PPI PORT A=OUT, B=IN, C=OUT LD A,82H ; PPI PORT A=OUT, B=IN, C=OUT
OUT (PIOX),A
OUT (PPIX),A
LD A,30H ; PC4,5 /CS HIGH LD A,30H ; PC4,5 /CS HIGH
OUT (PIOC),A
OUT (PPIC),A
#ENDIF #ENDIF
LD A,20H ; PUT RTC LATCH TO IDLE LD A,20H ; PUT RTC LATCH TO IDLE
OUT (RTC),A OUT (RTC),A
@ -537,7 +537,7 @@ SD_INITCARD:
#IF (!SDCSIO) #IF (!SDCSIO)
#IF (PPISD) #IF (PPISD)
LD A,21H ; /CS=0, DOUT=1, CLK=0 LD A,21H ; /CS=0, DOUT=1, CLK=0
OUT (PIOC),A
OUT (PPIC),A
LD B,07FH ; 127 CLOCKS (255 TRANSITIONS STARTING WITH LO) LD B,07FH ; 127 CLOCKS (255 TRANSITIONS STARTING WITH LO)
#ELSE #ELSE
LD A,SD_CS | SD_DOUT ; CS=HI, DOUT=HI LD A,SD_CS | SD_DOUT ; CS=HI, DOUT=HI

36
Source/std.asm

@ -179,12 +179,12 @@ RTC .EQU 70H ; ADDRESS OF RTC LATCH AND INPUT PORT
;__HARDWARE_INTERFACES________________________________________________________________________________________________________________ ;__HARDWARE_INTERFACES________________________________________________________________________________________________________________
; ;
; PIO 82C55 I/O IS DECODED TO PORT 60-67
; PPI 82C55 I/O IS DECODED TO PORT 60-67
; ;
PIOA .EQU 60H ; PORT A
PIOB .EQU 61H ; PORT B
PIOC .EQU 62H ; PORT C
PIOX .EQU 63H ; PIO CONTROL PORT
PPIA .EQU 60H ; PORT A
PPIB .EQU 61H ; PORT B
PPIC .EQU 62H ; PORT C
PPIX .EQU 63H ; PPI CONTROL PORT
; ;
; 16C550 SERIAL LINE UART ; 16C550 SERIAL LINE UART
; ;
@ -279,17 +279,17 @@ CPU_ICR: .EQU $3F ;I/O control register (not relocated!!!)
; ;
N8_IOBASE .EQU $80 N8_IOBASE .EQU $80
; ;
PIO .EQU N8_IOBASE+$00
PIOA .EQU PIO+$00 ; PORT A
PIOB .EQU PIO+$01 ; PORT B
PIOC .EQU PIO+$02 ; PORT C
PIOX .EQU PIO+$03 ; PIO CONTROL PORT
PPI .EQU N8_IOBASE+$00
PPIA .EQU PPI+$00 ; PORT A
PPIB .EQU PPI+$01 ; PORT B
PPIC .EQU PPI+$02 ; PORT C
PPIX .EQU PPI+$03 ; PPI CONTROL PORT
; ;
PIO2 .EQU N8_IOBASE+$04
PIO2A .EQU PIO2+$00 ; PORT A
PIO2B .EQU PIO2+$01 ; PORT B
PIO2C .EQU PIO2+$02 ; PORT C
PIO2X .EQU PIO2+$03 ; PIO CONTROL PORT
PPI2 .EQU N8_IOBASE+$04
PPI2A .EQU PPI2+$00 ; PORT A
PPI2B .EQU PPI2+$01 ; PORT B
PPI2C .EQU PPI2+$02 ; PORT C
PPI2X .EQU PPI2+$03 ; PPI CONTROL PORT
; ;
RTC: .EQU N8_IOBASE+$08 ;RTC latch and buffer RTC: .EQU N8_IOBASE+$08 ;RTC latch and buffer
;FDC: .EQU N8_IOBASE+$0C ;Floppy disk controller ;FDC: .EQU N8_IOBASE+$0C ;Floppy disk controller
@ -530,6 +530,12 @@ CCPSIZ: .EQU 00800H
#DEFINE SDLBL "" #DEFINE SDLBL ""
#ENDIF #ENDIF
#IF (HDSKENABLE)
#DEFINE HDSKLBL ", SIMH DISK"
#ELSE
#DEFINE HDSKLBL ""
#ENDIF
#IF (PRPENABLE) #IF (PRPENABLE)
#IF (PRPCONENABLE & PRPSDENABLE) #IF (PRPCONENABLE & PRPSDENABLE)
#DEFINE PRPLBL ", PROPIO (CONSOLE, SD CARD)" #DEFINE PRPLBL ", PROPIO (CONSOLE, SD CARD)"

58
Source/util.asm

@ -422,9 +422,9 @@ KY_BO .EQU 017H ; BOOT
; ;
DSKY_INIT: DSKY_INIT:
LD A,82H LD A,82H
OUT (PIOX),A
OUT (PPIX),A
LD A,30H ;disable /CS on PPISD card(s) LD A,30H ;disable /CS on PPISD card(s)
OUT (PIOC),A
OUT (PPIC),A
XOR A XOR A
LD (KY_BUF),A LD (KY_BUF),A
RET RET
@ -487,43 +487,43 @@ KY_GET_DONE:
; ;
KY_SCAN: KY_SCAN:
LD C,0000H LD C,0000H
LD A,41H+30H ; SCAN COL ONE
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,41H | 30H ; SCAN COL ONE
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL DELAY ; DEBOUNCE CALL DELAY ; DEBOUNCE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KY_SCAN_FOUND ; YES, EXIT JR NZ,KY_SCAN_FOUND ; YES, EXIT
LD C,0040H LD C,0040H
LD A,42H+30H ; SCAN COL TWO
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,42H | 30H ; SCAN COL TWO
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL DELAY ; DEBOUNCE CALL DELAY ; DEBOUNCE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KY_SCAN_FOUND ; YES, EXIT JR NZ,KY_SCAN_FOUND ; YES, EXIT
LD C,0080H LD C,0080H
LD A,44H+30H ; SCAN COL THREE
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,44H | 30H ; SCAN COL THREE
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL DELAY ; DEBOUNCE CALL DELAY ; DEBOUNCE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KY_SCAN_FOUND ; YES, EXIT JR NZ,KY_SCAN_FOUND ; YES, EXIT
LD C,00C0H ; LD C,00C0H ;
LD A,48H+30H ; SCAN COL FOUR
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,48H | 30H ; SCAN COL FOUR
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL DELAY ; DEBOUNCE CALL DELAY ; DEBOUNCE
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KY_SCAN_FOUND ; YES, EXIT JR NZ,KY_SCAN_FOUND ; YES, EXIT
LD A,040H+30H ; TURN OFF ALL COLUMNS
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,040H | 30H ; TURN OFF ALL COLUMNS
OUT (PPIC),A ; SEND TO COLUMN LINES
LD A,00H ; RETURN NULL LD A,00H ; RETURN NULL
RET ; EXIT RET ; EXIT
@ -533,17 +533,17 @@ KY_SCAN_FOUND:
LD C,A ; STORE VALUE LD C,A ; STORE VALUE
; WAIT FOR KEY TO BE RELEASED ; WAIT FOR KEY TO BE RELEASED
LD A,4FH+30H ; SCAN ALL COL LINES
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,4FH | 30H ; SCAN ALL COL LINES
OUT (PPIC),A ; SEND TO COLUMN LINES
CALL DELAY ; DEBOUNCE CALL DELAY ; DEBOUNCE
KY_CLEAR_LOOP: ; WAIT FOR KEY TO CLEAR KY_CLEAR_LOOP: ; WAIT FOR KEY TO CLEAR
IN A,(PIOB) ; GET ROWS
IN A,(PPIB) ; GET ROWS
AND 7FH ;ignore PB7 for PPISD AND 7FH ;ignore PB7 for PPISD
CP 00H ; ANYTHING PRESSED? CP 00H ; ANYTHING PRESSED?
JR NZ,KY_CLEAR_LOOP ; YES, LOOP UNTIL KEY RELEASED JR NZ,KY_CLEAR_LOOP ; YES, LOOP UNTIL KEY RELEASED
LD A,040H+30H ; TURN OFF ALL COLUMNS
OUT (PIOC),A ; SEND TO COLUMN LINES
LD A,040H | 30H ; TURN OFF ALL COLUMNS
OUT (PPIC),A ; SEND TO COLUMN LINES
LD A,C ; RESTORE VALUE LD A,C ; RESTORE VALUE
RET RET
@ -583,15 +583,15 @@ DSKY_HEXOUT1:
DJNZ DSKY_HEXOUT1 DJNZ DSKY_HEXOUT1
LD A,82H ; SETUP PPI LD A,82H ; SETUP PPI
OUT (PIOX),A
OUT (PPIX),A
CALL DSKY_COFF CALL DSKY_COFF
LD A,0D0H ; 7218 -> (DATA COMING, HEXA DECODE) LD A,0D0H ; 7218 -> (DATA COMING, HEXA DECODE)
OUT (PIOA),A
OUT (PPIA),A
CALL DSKY_STROBEC CALL DSKY_STROBEC
LD HL,DSKY_BUF ; POINT TO START OF BUF LD HL,DSKY_BUF ; POINT TO START OF BUF
LD B,DSKY_BUFLEN ; NUMBER OF DIGITS LD B,DSKY_BUFLEN ; NUMBER OF DIGITS
LD C,PIOA
LD C,PPIA
DSKY_HEXOUT2: DSKY_HEXOUT2:
OUTI OUTI
JP Z,DSKY_STROBE ; DO FINAL STROBE AND RETURN JP Z,DSKY_STROBE ; DO FINAL STROBE AND RETURN
@ -599,18 +599,18 @@ DSKY_HEXOUT2:
JR DSKY_HEXOUT2 JR DSKY_HEXOUT2
DSKY_STROBEC: DSKY_STROBEC:
LD A,80H+30H
LD A,80H | 30H
JP DSKY_STROBE0 JP DSKY_STROBE0
DSKY_STROBE: DSKY_STROBE:
LD A,00H+30H ; SET WRITE STROBE
LD A,00H | 30H ; SET WRITE STROBE
DSKY_STROBE0: DSKY_STROBE0:
OUT (PIOC),A ; OUT TO PORTC
OUT (PPIC),A ; OUT TO PORTC
CALL DELAY ; DELAY CALL DELAY ; DELAY
DSKY_COFF DSKY_COFF
LD A,40H+30H ; SET CONTROL PORT OFF
OUT (PIOC),A ; OUT TO PORTC
LD A,40H | 30H ; SET CONTROL PORT OFF
OUT (PPIC),A ; OUT TO PORTC
CALL DELAY ; WAIT CALL DELAY ; WAIT
RET RET
#ENDIF #ENDIF

57
Source/vdu.asm

@ -15,10 +15,10 @@ READR .EQU 0F0h ; READ VDU
WRITR .EQU 0F1h ; WRITE VDU WRITR .EQU 0F1h ; WRITE VDU
SY6545S .EQU 0F2h ; VDU STATUS/REGISTER SY6545S .EQU 0F2h ; VDU STATUS/REGISTER
SY6545D .EQU 0F3h ; SY6545D .EQU 0F3h ;
PPIA .EQU 0F4h ; PPI PORT A
PPIB .EQU 0F5h ; PPI PORT B
PPIC .EQU 0F6h ; PPI PORT C
PPICONT .EQU 0F7h ; PPI CONTROL PORT
VPPIA .EQU 0F4h ; PPI PORT A
VPPIB .EQU 0F5h ; PPI PORT B
VPPIC .EQU 0F6h ; PPI PORT C
VPPICONT .EQU 0F7h ; PPI CONTROL PORT
STATE_NORMAL .EQU 00H ; NORMAL TERMINAL OPS STATE_NORMAL .EQU 00H ; NORMAL TERMINAL OPS
STATE_ESC .EQU 01H ; ESC MODE STATE_ESC .EQU 01H ; ESC MODE
@ -774,7 +774,36 @@ VDU_UPDATECHECK:
VDU_INIT6845: VDU_INIT6845:
; DB 07FH, 50H, 60H, 7CH, 19H, 1FH, 19H, 1AH, 78H, 09H, 60H, 09H, 00H, 00H, 00H, 00H ; DB 07FH, 50H, 60H, 7CH, 19H, 1FH, 19H, 1AH, 78H, 09H, 60H, 09H, 00H, 00H, 00H, 00H
.DB 07Fh, 50h, 60h, 0Ch, 1Eh, 02h, 18h, 1Ch, 78h, 09h, 60h, 09h, 00h, 00h, 00h, 00h
; CCIR 625/50 VERSION (USED IN MOST OF THE WORLD)
; JUMPER K1 2-3, K2 1-2 FOR 2MHz CHAR CLOCK
.DB 07FH ; R0 TOTAL NUMBER OF HORIZONTAL CHARACTERS (DETERMINES HSYNC)
.DB 050H ; R1 NUMBER OF HORIZONTAL CHARACTERS DISPLAYED (80 COLUMNS)
.DB 060H ; R2 HORIZONTAL SYNC POSITION
.DB 00CH ; R3 SYNC WIDTHS
.DB 01EH ; R4 VERTICAL TOTAL (TOTAL CHARS IN A FRAME -1)
.DB 002H ; R5 VERTICAL TOTAL ADJUST (
.DB 018H ; R6 VERTICAL DISPLAYED (24 ROWS)
.DB 01CH ; R7 VERTICAL SYNC
.DB 078H ; R8 MODE B7=0 TRANSPARENT UPDATE DURING BLANKING
; B6=1 PIN 34 IS UPDATE STROBE
; B5=1 DELAY CURSOR 1 CHARACTER
; B4=1 DELAY DISPLAY ENABLE 1 CHARACTER
; B3=1 TRANSPARENT MEMORY ADDRESSING
; B2=0 RAM STRAIGHT BINARY ADDRESSING
; B1,B0=0 NON-INTERLACE
.DB 009H ; R9 SCAN LINE (LINES PER CHAR AND SPACING -1)
.DB 060H ; R10 CURSOR START RASTER
.DB 009H ; R11 CURSOR END RASTER
.DB 00H ; R12 START ADDRESS HI
.DB 00H ; R13 START ADDRESS LO
.DB 00H ; R14 CURSOR ADDRESS HI
.DB 00H ; R15 CURSOR ADDRESS LO
; THE CCIR 625/50 TELEVISION STANDARD HAS 625 LINES INTERLACED AT 50 FIELDS PER SECOND. THIS WORKS
; OUT AS 50 FIELDS OF 312.5 LINES PER SECOND NON-INTERLACED AS USED HERE.
; HORIZONTAL LINE WIDTH IS 64uS. FOR A 2 MHz CHARACTER CLOCK (R0+1)/2000000 = 64uS
; NEAREST NUMBER OF LINES IS 312 = (R4+1) * (R9+1) + R5.
; 15625 / 312 = 50.08 FIELDS PER SECOND (NEAR ENOUGH-DGG)
;__VDU_CRTINIT_____________________________________________________________________________________ ;__VDU_CRTINIT_____________________________________________________________________________________
@ -943,11 +972,11 @@ VDU_PUTCHAR1: ;
;PR_OUTCHAR: ;PR_OUTCHAR:
; PUSH AF ; STORE AF ; PUSH AF ; STORE AF
;PR_OUTCHAR_LOOP: ;PR_OUTCHAR_LOOP:
; IN A,(PPIB) ; GET STATUS INFO
; IN A,(VPPIB) ; GET STATUS INFO
; AND 10000000B ; ONLY INTERESTED IN BUSY FLAG ; AND 10000000B ; ONLY INTERESTED IN BUSY FLAG
; JP NZ,PR_OUTCHAR_LOOP ; LOOP IF BUSY ; JP NZ,PR_OUTCHAR_LOOP ; LOOP IF BUSY
; POP AF ; RESTORE AF ; POP AF ; RESTORE AF
; OUT (PPIA),A ; OUTPUT DATA TO PORT
; OUT (VPPIA),A ; OUTPUT DATA TO PORT
; LD A,1 ; 01 SECOND DELAY ; LD A,1 ; 01 SECOND DELAY
; CALL KB_DELAY ; IGNORE ANYTHING BACK AFTER A RESET ; CALL KB_DELAY ; IGNORE ANYTHING BACK AFTER A RESET
; CALL KB_PORTCBIT0LOW ; STROBE ; CALL KB_PORTCBIT0LOW ; STROBE
@ -1020,9 +1049,9 @@ SF4: DJNZ SF4 ; FINISH UP DELAY
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
KB_SETPORTC: KB_SETPORTC:
LD A,10000010B ; A=OUT B=IN, C HIGH=OUT, CLOW=OUT LD A,10000010B ; A=OUT B=IN, C HIGH=OUT, CLOW=OUT
OUT (PPICONT),A ; PPI CONTROL PORT
OUT (VPPICONT),A ; PPI CONTROL PORT
LD A,00000000B ; PORT A TO ZERO AS NEED THIS FOR COMMS TO WORK LD A,00000000B ; PORT A TO ZERO AS NEED THIS FOR COMMS TO WORK
OUT (PPIA),A ; PPI PORT A
OUT (VPPIA),A ; PPI PORT A
CALL KB_DATAHIGH ; CALL KB_DATAHIGH ;
CALL KB_CLOCKHIGH ; CALL KB_CLOCKHIGH ;
LD A,0 ; LD A,0 ;
@ -1074,7 +1103,7 @@ KB_CLOCKLOW: ;
PORTCBIT5LOW: ; PORTCBIT5LOW: ;
LD A,01111010B ; LD A,01111010B ;
KB_SETBITS: ; KB_SETBITS: ;
OUT (PPICONT),A ;
OUT (VPPICONT),A ;
RET ; RET ;
@ -1088,7 +1117,7 @@ KB_SETBITS: ;
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
KB_WAITCLOCKLOW: KB_WAITCLOCKLOW:
LD B,255 ; FOR TIMEOUT COUNTER LD B,255 ; FOR TIMEOUT COUNTER
WL1: IN A,(PPIB) ; GET A BYTE FROM PORT B
WL1: IN A,(VPPIB) ; GET A BYTE FROM PORT B
BIT 1,A ; TEST THE CLOCK BIT BIT 1,A ; TEST THE CLOCK BIT
RET Z ; EXIT IF IT WENT LOW RET Z ; EXIT IF IT WENT LOW
DJNZ WL1 ; LOOP B TIMES DJNZ WL1 ; LOOP B TIMES
@ -1104,7 +1133,7 @@ WL1: IN A,(PPIB) ; GET A BYTE FROM PORT B
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
KB_WAITCLOCKHIGH: KB_WAITCLOCKHIGH:
LD B,255 ; FOR TIMEOUT COUNTER LD B,255 ; FOR TIMEOUT COUNTER
WH1: IN A,(PPIB) ; GET A BYTE FROM PORT B
WH1: IN A,(VPPIB) ; GET A BYTE FROM PORT B
BIT 1,A ; TEST THE CLOCK BIT BIT 1,A ; TEST THE CLOCK BIT
RET NZ ; EXIT IF IT WENT HIGH RET NZ ; EXIT IF IT WENT HIGH
DJNZ WH1 ; LOOP B TIMES DJNZ WH1 ; LOOP B TIMES
@ -1433,7 +1462,7 @@ WB2: PUSH AF ; STORE THE VALUE IN A
; RETURNS A=0 IF NO DATA, A= SCANCODE (OR PART THEREOF) ; RETURNS A=0 IF NO DATA, A= SCANCODE (OR PART THEREOF)
;__________________________________________________________________________________________________ ;__________________________________________________________________________________________________
KB_READBITS: KB_READBITS:
IN A,(PPIB)
IN A,(VPPIB)
BIT 1,A ; TEST THE CLOCK BIT BIT 1,A ; TEST THE CLOCK BIT
JR Z,R1 ; IF LOW THEN START THE CAPTURE JR Z,R1 ; IF LOW THEN START THE CAPTURE
LD A,0 ; RETURNS A=0 IF NOTHING LD A,0 ; RETURNS A=0 IF NOTHING
@ -1443,7 +1472,7 @@ R1: CALL KB_WAITCLOCKHIGH; IF GETS TO HERE THEN MUST BE LOW SO WAIT TILL HIGH
LD E,0 ; START WITH E=0 LD E,0 ; START WITH E=0
R2: LD D,B ; STORE BECAUSE WAITCLOCKHIGH DESTROYS R2: LD D,B ; STORE BECAUSE WAITCLOCKHIGH DESTROYS
CALL KB_WAITCLOCKLOW ; WAIT TILL CLOCK GOES LOW CALL KB_WAITCLOCKLOW ; WAIT TILL CLOCK GOES LOW
IN A,(PPIB) ; SAMPLE THE DATA LINE
IN A,(VPPIB) ; SAMPLE THE DATA LINE
RRA ; MOVE THE DATA BIT INTO THE CARRY REGISTER RRA ; MOVE THE DATA BIT INTO THE CARRY REGISTER
LD A,E ; GET THE BYTE WE ARE BUILDING IN E LD A,E ; GET THE BYTE WE ARE BUILDING IN E
RRA ; MOVE THE CARRY BIT INTO BIT 7 AND SHIFT RIGHT RRA ; MOVE THE CARRY BIT INTO BIT 7 AND SHIFT RIGHT

8
Source/ver.inc

@ -1,6 +1,6 @@
#DEFINE RMJ 2 #DEFINE RMJ 2
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "2.1.1"
#DEFINE RMN 2
#DEFINE RUP 0
#DEFINE RTP 1
#DEFINE BIOSVER "2.2 B1"
#DEFINE REVISION 1741 #DEFINE REVISION 1741

378
XSource/Makefile

@ -1,6 +1,8 @@
#
# GCC based makefile # GCC based makefile
# #
# 09/28/2012 2.2 dwg - updated for Mac OS X 10.8.2 Mountain Lion
#
# 06/18/2012 2.0 dgg - updated for v2.0 # 06/18/2012 2.0 dgg - updated for v2.0
# #
# 02/22/2012 1.5 dgg - modified for assembly under Linux # 02/22/2012 1.5 dgg - modified for assembly under Linux
@ -65,11 +67,11 @@
# do this with commands like the following at an OS command # do this with commands like the following at an OS command
# prompt or in a batch file: # prompt or in a batch file:
# #
# SET CONFIG=n8vem
# SET CONFIG=zeta
# SET ROMSIZE=512 # SET ROMSIZE=512
# SET CPU=80 # SET CPU=80
# SET SYS=CPM # SET SYS=CPM
# SET ROMNAME=n8vem
# SET ROMNAME=zeta
# #
# Note: use "make clean" to delete temporary and output files # Note: use "make clean" to delete temporary and output files
# #
@ -84,47 +86,40 @@
# #
# Uncomment and update values below to hardcode settings: # Uncomment and update values below to hardcode settings:
# #
#CONFIG := n8vem
#ROMSIZE := 512
#CPU := 80
#SYS := CPM
#ROMNAME := n8vem
# Dougs Configuration
CONFIG := zeta CONFIG := zeta
ROMSIZE := 512 ROMSIZE := 512
CPU := 80 CPU := 80
SYS := CPM SYS := CPM
ROMNAME := dougzeta
ROMNAME := zeta
ifndef ROMNAME ifndef ROMNAME
ROMNAME := $(CONFIG) ROMNAME := $(CONFIG)
endif endif
CPMCP := bin/cpmcp CPMCP := bin/cpmcp
CVT := bin/CVT2MAC
SRC := ../Source/
ROMDSKFILES := ../RomDsk/$(SYS)_$(ROMSIZE)KB/*.* ../RomDsk/cfg_$(CONFIG)/*.* ../RomDsk/RomApps/*.*
ROMDSKFILES := ../RomDsk/$(SYS)_$(ROMSIZE)KB/*.* ../RomDsk/cfg_$(CONFIG)/*.* ../Apps/core/*.*
ifeq "$(SYS)" "CPM" ifeq "$(SYS)" "CPM"
DOSBIN := bdosb01.bin DOSBIN := bdosb01.bin
CPBIN := ccpb03.bin CPBIN := ccpb03.bin
CPASM := ccpb03.asm
else else
DOSBIN := zsdos.bin DOSBIN := zsdos.bin
CPBIN := zcprw.bin CPBIN := zcprw.bin
CPASM := zcprw.asm
endif endif
OUTDIR := ../Output OUTDIR := ../Output
TASM := bin/tasm
TASM := bin/TASM
TASMTABS := bin TASMTABS := bin
export TASMTABS export TASMTABS
ASMOPT80 := -t$(CPU) -g3 ASMOPT80 := -t$(CPU) -g3
ASMOPT85 := -t85 -g3 ASMOPT85 := -t85 -g3
ASM80 := $(TASM) $(ASMOPT80) -b
ASM80 := $(TASM) $(ASMOPT80)
ASM85 := $(TASM) $(ASMOPT85) ASM85 := $(TASM) $(ASMOPT85)
ASMIMG := $(TASM) $(ASMOPT80) -b -fE5 ASMIMG := $(TASM) $(ASMOPT80) -b -fE5
@ -132,7 +127,7 @@ NULL :=
SPACE := ${NULL} ${NULL} SPACE := ${NULL} ${NULL}
%.bin: %.asm %.bin: %.asm
$(ASM80) -b $< $@
$(ASM80) $< $@
%.com: %.asm %.com: %.asm
$(ASM80) $< $@ $(ASM80) $< $@
@ -149,264 +144,197 @@ $(error Usage: make CONFIG=<config> ROMSIZE=[512|1024] CPU=[80|180] SYS=[CPM|ZSY
endif endif
endif endif
all: $(OUTDIR)/$(ROMNAME).rom $(OUTDIR)/$(ROMNAME).sys $(OUTDIR)/$(ROMNAME).com
all: tasm80.tab tasm85.tab $(OUTDIR)/$(ROMNAME).rom $(OUTDIR)/$(ROMNAME).sys $(OUTDIR)/$(ROMNAME).com
tasm80.tab: bin/TASM80.TAB
cp bin/TASM80.TAB tasm80.tab
tasm85.tab: bin/TASM85.TAB
cp bin/TASM85.TAB tasm85.tab
build.inc: build.inc:
echo ';' >$@
/bin/echo ';' >$@
/bin/echo -n '; RomWBW Configured for '$(CONFIG)' ' >>$@ /bin/echo -n '; RomWBW Configured for '$(CONFIG)' ' >>$@
date >> $@ date >> $@
echo ; >>$@
/bin/echo ; >>$@
/bin/echo -n '#DEFINE TIMESTAMP "' >>$@ /bin/echo -n '#DEFINE TIMESTAMP "' >>$@
date '+%Y%m%d%H%M"' >>$@
echo ; >>$@
echo '#DEFINE VARIANT "WBW-$(USERNAME)"' >>$@
echo ; >>$@
echo ROMSIZE .EQU $(ROMSIZE) >>$@
echo ; >>$@
echo '#INCLUDE "config_'$(CONFIG)'.asm"' >>$@
echo ; >>$@
#loader.bin: loader.asm util.asm
# $(TASM) $(ASMOPT80) -b $<
loader.bin: loader.asm util.asm
loader.asm: ../Source/loader.asm
cp $< .
bin/cvt2mac $@
bnk1.asm: ../Source/bnk1.asm
cp $< .
bin/cvt2mac $@
bdosb01.asm: ../Source/bdosb01.asm
cp $< .
bin/cvt2mac $@
bootrom.bin : bootrom.asm memmgr.asm std.asm build.inc ver.inc
date '+%Y %m %d %H%M"' >>$@
/bin/echo ; >>$@
/bin/echo '#DEFINE VARIANT "WBW-$(USERNAME)"' >>$@
/bin/echo ; >>$@
/bin/echo ROMSIZE .EQU $(ROMSIZE) >>$@
/bin/echo ; >>$@
/bin/echo '#INCLUDE "config_'$(CONFIG)'.asm"' >>$@
/bin/echo ; >>$@
bootrom.bin : bootrom.asm std.asm build.inc ver.inc memmgr.asm config_$(CONFIG).asm
$(TASM) $(ASMOPT80) $< $@ $(TASM) $(ASMOPT80) $< $@
bootrom.asm: ../Source/bootrom.asm config_$(CONFIG).asm
cp $< .
bin/cvt2mac $@
bootapp.bin : bootapp.asm std.asm build.inc ver.inc
bootapp.bin: bootapp.asm std.asm build.inc ver.inc
$(TASM) $(ASMOPT80) $< $@ $(TASM) $(ASMOPT80) $< $@
bootapp.asm: ../Source/bootapp.asm
cp $< .
bin/cvt2mac $@
cbios.asm: ../Source/cbios.asm
cp $< .
bin/cvt2mac $@
config_$(CONFIG).asm: ../Source/config_$(CONFIG).asm
cp $< .
bin/cvt2mac $@
cnfgdata.inc: ../Source/cnfgdata.inc
cp $< .
bin/cvt2mac $@
dbgmon.asm: ../Source/dbgmon.asm
cp $< .
bin/cvt2mac $@
fd.asm: ../Source/fd.asm
cp $< .
bin/cvt2mac $@
fd_data.asm: ../Source/fd_data.asm
cp $< .
bin/cvt2mac $@
pgzero.bin: pgzero.asm std.asm build.inc ver.inc
$(TASM) $(ASMOPT80) $< $@
#hbios.asm: ../Source/hbios.asm
# cp $< .
# bin/cvt2mac $@
zcprw.bin: zcprw.asm zcpr.asm
$(TASM) $(ASMOPT85) $< $@
hbfill.asm: ../Source/hbfill.asm
cp $< .
bin/cvt2mac $@
zsdos.bin: zsdos.asm zsdos.lib zsdos-gp.z80
$(TASM) $(ASMOPT80) $< $@
ide.asm: ../Source/ide.asm
cp $< .
bin/cvt2mac $@
cbios.bin: cbios.asm fd_data.asm ide_data.asm ppide_data.asm sd_data.asm prp_data.asm ppp_data.asm uart.asm vdu.asm std.asm ver.inc build.inc infolist.inc
$(TASM) $(ASMOPT80) -dBLD_SYS=SYS_$(SYS) $< $@
ide_data.asm: ../Source/ide_data.asm
cp $< .
bin/cvt2mac $@
dbgmon.bin: dbgmon.asm std.asm ver.inc build.inc
infolist.inc: ../Source/infolist.inc
cp $< .
bin/cvt2mac $@
syscfg.bin: syscfg.asm std.asm build.inc ver.inc
memmgr.asm: ../Source/memmgr.asm
cp $< .
bin/cvt2mac $@
os.bin: $(CPBIN) $(DOSBIN) cbios.bin
cat $(CPBIN) $(DOSBIN) cbios.bin >>$@
pgzero.bin : pgzero.asm std.asm build.inc ver.inc
$(TASM) $(ASMOPT80) $< $@
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin
cat pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin os.bin hbfill.bin >>$@
pgzero.asm: ../Source/pgzero.asm
cp $< .
bin/cvt2mac $@
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin
cat pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin >>$@
ppide.asm: ../Source/ppide.asm
cp $< .
bin/cvt2mac $@
$(OUTDIR)/$(ROMNAME).rom: rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys diskdefs
cp $(SRC)blank$(ROMSIZE)KB.dat RomDisk.tmp
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0:
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys
cat rom0.bin rom1.bin RomDisk.tmp >>$@
ppide_data.asm: ../Source/ppide_data.asm
cp $< .
bin/cvt2mac $@
$(OUTDIR)/$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin
cat bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin os.bin >>$@
ppp.asm: ../Source/ppp.asm
cp $< .
bin/cvt2mac $@
$(OUTDIR)/$(ROMNAME).sys: prefix.bin os.bin
cat prefix.bin os.bin >>$@
ppp_data.asm: ../Source/ppp_data.asm
cp $< .
bin/cvt2mac $@
bdosb01.asm: $(SRC)bdosb01.asm
cp $< $@
$(CVT) $@
prefix.asm: ../Source/prefix.asm
cp $< .
bin/cvt2mac $@
bnk1.asm: $(SRC)bnk1.asm fd.asm ppide.asm
cp $(SRC)bnk1.asm $@
$(CVT) $@
prp.asm: ../Source/prp.asm
cp $< .
bin/cvt2mac $@
bootapp.asm: $(SRC)bootapp.asm
cp $< $@
$(CVT) $@
prp_data.asm: ../Source/prp_data.asm
cp $< .
bin/cvt2mac $@
bootrom.asm: $(SRC)bootrom.asm
cp $< $@
$(CVT) $@
romfill.bin: romfill.asm
$(TASM) $(ASMOPT80) -b $< $@
cbios.asm: $(SRC)cbios.asm
cp $< $@
$(CVT) $@
romfill.asm: ../Source/romfill.asm
cp $< .
bin/cvt2mac $@
ccpb03.asm: $(SRC)ccpb03.asm
cp $< $@
$(CVT) $@
sd.asm: ../Source/sd.asm
cp $< .
bin/cvt2mac $@
cnfgdata.inc: $(SRC)cnfgdata.inc
cp $< $@
$(CVT) $@
sd_data.asm: ../Source/sd_data.asm
cp $< .
bin/cvt2mac $@
config_zeta.asm: $(SRC)config_zeta.asm
cp $< $@
$(CVT) $@
std.asm: ../Source/std.asm
cp $< .
bin/cvt2mac $@
dbgmon.asm: $(SRC)dbgmon.asm
cp $< $@
$(CVT) $@
syscfg.asm: ../Source/syscfg.asm
cp $< .
bin/cvt2mac $@
diskdefs: $(SRC)diskdefs
cp $< $@
$(CVT) $@
uart.asm: ../Source/uart.asm
cp $< .
bin/cvt2mac $@
fd.asm: $(SRC)fd.asm
cp $< $@
$(CVT) $@
util.bin: util.asm
fd_data.asm: $(SRC)fd_data.asm
cp $< $@
$(CVT) $@
util.asm: ../Source/util.asm
cp $< .
bin/cvt2mac $@
hbfill.asm: $(SRC)hbfill.asm
cp $< $@
$(CVT) $@
vdu.asm: ../Source/vdu.asm
cp $< .
bin/cvt2mac $@
ide_data.asm: $(SRC)ide_data.asm
cp $< $@
$(CVT) $@
ver.inc: ../Source/ver.inc
cp $< .
bin/cvt2mac $@
infolist.inc: $(SRC)infolist.inc
cp $< $@
$(CVT) $@
zcprw.bin : zcprw.asm zcpr.asm
$(TASM) $(ASMOPT85) $< $@
loader.asm: $(SRC)loader.asm util.asm
cp $(SRC)loader.asm $@
$(CVT) $@
zsdos.bin : zsdos.asm zsdos.lib zsdos-gp.z80
$(TASM) $(ASMOPT80) $< $@
memmgr.asm: $(SRC)memmgr.asm
cp $< $@
$(CVT) $@
hbfill.bin: hbfill.asm fd.asm ide.asm ppide.asm sd.asm prp.asm ppp.asm std.asm ver.inc build.inc
pgzero.asm: $(SRC)pgzero.asm
cp $< $@
$(CVT) $@
cbios.bin: cbios.asm fd_data.asm ide_data.asm ppide_data.asm sd_data.asm prp_data.asm ppp_data.asm uart.asm vdu.asm std.asm ver.inc build.inc infolist.inc
$(ASM80) -b -dBLD_SYS=SYS_$(SYS) $< $@
cbios.asm: ../Source/cbios.asm
cp $< .
bin/cvt2mac $@
dbgmon.bin: dbgmon.asm hbfill.bin std.asm ver.inc build.inc
syscfg.bin: syscfg.asm std.asm build.inc ver.inc cnfgdata.inc
$(CPASM): ../Source/$(CPASM)
cp $< .
bin/cvt2mac $@
$(OUTDIR)/$(ROMNAME).rom: diskdefs rom0.bin rom1.bin $(ROMDISKFILES) $(OUTDIR)/$(ROMNAME).sys blank$(ROMSIZE)KB.dat
for d in ../Apps/*; do \
if test -e $$d/*.com; then \
cp $$d/*.com ../RomDsk/RomApps; \
fi; \
done;
for d in ../Apps/*; do \
if test -e $$d/*.man; then \
cp $$d/*.man ../RomDsk/RomApps; \
fi; \
done;
for d in ../Apps/*; do \
if test -e $$d/*.bsp; then \
cp $$d/*.bsp ../RomDsk/RomApps; \
fi; \
done;
cp blank$(ROMSIZE)KB.dat RomDisk.tmp
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp $(ROMDSKFILES) 0:
$(CPMCP) -f rom$(ROMSIZE)KB RomDisk.tmp ../Output/$(ROMNAME).sys 0:$(SYS).sys
cat rom0.bin rom1.bin RomDisk.tmp >>$@
ppide.asm: $(SRC)ppide.asm
cp $< $@
$(CVT) $@
diskdefs: bin/diskdefs
cp bin/diskdefs .
bin/cvt2mac diskdefs
ppide_data.asm: $(SRC)ppide_data.asm
cp $< $@
$(CVT) $@
$(OUTDIR)/$(ROMNAME).com: bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin sys.bin
cat bootapp.bin syscfg.bin loader.bin bnk1.bin dbgmon.bin sys.bin >>$@
ppp_data.asm: $(SRC)ppp_data.asm
cp $< $@
$(CVT) $@
$(OUTDIR)/$(ROMNAME).sys: prefix.bin sys.bin
cat prefix.bin sys.bin >>$(OUTDIR)/$(ROMNAME).sys
prefix.asm: $(SRC)prefix.asm
cp $< $@
$(CVT) $@
rom0.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin romfill.bin dbgmon.bin sys.bin hbfill.bin
cat $< >>rom0.bin
prp_data.asm: $(SRC)prp_data.asm
cp $< $@
$(CVT) $@
rom1.bin: pgzero.bin bootrom.bin syscfg.bin loader.bin bnk1.bin
cat $< >>rom1.bin
romfill.asm: $(SRC)romfill.asm
cp $< $@
$(CVT) $@
sd_data.asm: $(SRC)sd_data.asm
cp $< $@
$(CVT) $@
sys.bin: $(CPBIN) $(DOSBIN) cbios.bin hbfill.bin ccpb03.bin
echo at sys.bin target, about to cat
cat $(CPBIN) $(DOSBIN) cbios.bin hbfill.bin >>$@
std.asm: $(SRC)std.asm
cp $< $@
$(CVT) $@
prefix.bin: prefix.asm
syscfg.asm: $(SRC)syscfg.asm config_$(CONFIG).asm cnfgdata.inc
cp $< $@
$(CVT) $@
blank512KB.dat: ../Source/blank512KB.dat
cp $< .
uart.asm: $(SRC)uart.asm
cp $< $@
$(CVT) $@
blank1024KB.dat: ../Source/blank1024KB.dat
cp $< .
util.asm: $(SRC)util.asm
cp $< $@
$(CVT) $@
#cbios.asm: ../Source/cbios.asm
# cp $< .
# bin/cvt2mac $@
vdu.asm: $(SRC)vdu.asm
cp $< $@
$(CVT) $@
ccpb03.asm: ../Source/ccpb03.asm
cp $< .
bin/cvt2mac $@
ver.inc: $(SRC)ver.inc
cp $< $@
$(CVT) $@
clean: clean:
rm -f *.asm *.obj *.bin *.com *.img *.rom *.lst *.exp *.tmp *.inc
rm -f *.tab *.TAB *.inc *.asm *.bin *.com *.img *.rom *.lst *.exp *.tmp
rm -f build.inc diskdefs
rm -f $(OUTDIR)/*.* rm -f $(OUTDIR)/*.*
rm -f ../RomDsk/RomApps/*.*
rm -f diskdefs
rm -f blank$(ROMSIZE)KB.dat

7
XSource/README.TXT

@ -1,5 +1,6 @@
The Mac OS X Makefile is not fully debugged yet and is
not usable in it's current form. It will be updated and
posted when it is working correctly.
This build is experimental. Most likely it is working,
but you should be careful with it until it is verified.
Douglas Goodall Douglas Goodall
Santa Maria
9/2012

162
XSource/bin/8051.H

@ -0,0 +1,162 @@
;*************************************************************
;* TASM 8051/8052/80154 SFR BIT/BYTE MNEMONIC EQUATES LIST *
;*************************************************************
P0 .equ 080H ;Port 0
SP .equ 081H ;Stack pointer
DPL .equ 082H
DPH .equ 083H
PCON .equ 087H
TCON .equ 088H
TMOD .equ 089H
TL0 .equ 08AH
TL1 .equ 08BH
TH0 .equ 08CH
TH1 .equ 08DH
P1 .equ 090H ;Port 1
SCON .equ 098H
SBUF .equ 099H
P2 .equ 0A0H ;Port 2
IE .equ 0A8H
P3 .equ 0B0H ;Port 3
IP .equ 0B8H
T2CON .equ 0C8H ;8052, 80154 only
RCAP2L .equ 0CAH ;8052, 80154 only
RCAP2H .equ 0CBH ;8052, 80154 only
TL2 .equ 0CCH ;8052, 80154 only
TH2 .equ 0CDH ;8052, 80154 only
PSW .equ 0D0H
ACC .equ 0E0H ;Accumulator
B .equ 0F0H ;Secondary Accumulator
IOCON .equ 0F8H ;80154 only
;PORT 0 BITS
P0.0 .equ 080H ;Port 0 bit 0
P0.1 .equ 081H ;Port 0 bit 1
P0.2 .equ 082H ;Port 0 bit 2
P0.3 .equ 083H ;Port 0 bit 3
P0.4 .equ 084H ;Port 0 bit 4
P0.5 .equ 085H ;Port 0 bit 5
P0.6 .equ 086H ;Port 0 bit 6
P0.7 .equ 087H ;Port 0 bit 7
;PORT 1 BITS
P1.0 .equ 090H ;Port 1 bit 0
P1.1 .equ 091H ;Port 1 bit 1
P1.2 .equ 092H ;Port 1 bit 2
P1.3 .equ 093H ;Port 1 bit 3
P1.4 .equ 094H ;Port 1 bit 4
P1.5 .equ 095H ;Port 1 bit 5
P1.6 .equ 096H ;Port 1 bit 6
P1.7 .equ 097H ;Port 1 bit 7
;PORT 2 BITS
P2.0 .equ 0A0H ;Port 2 bit 0
P2.1 .equ 0A1H ;Port 2 bit 1
P2.2 .equ 0A2H ;Port 2 bit 2
P2.3 .equ 0A3H ;Port 2 bit 3
P2.4 .equ 0A4H ;Port 2 bit 4
P2.5 .equ 0A5H ;Port 2 bit 5
P2.6 .equ 0A6H ;Port 2 bit 6
P2.7 .equ 0A7H ;Port 2 bit 7
;PORT 3 BITS
P3.0 .equ 0B0H ;Port 3 bit 0
P3.1 .equ 0B1H ;Port 3 bit 1
P3.2 .equ 0B2H ;Port 3 bit 2
P3.3 .equ 0B3H ;Port 3 bit 3
P3.4 .equ 0B4H ;Port 3 bit 4
P3.5 .equ 0B5H ;Port 3 bit 5
P3.6 .equ 0B6H ;Port 3 bit 6
P3.7 .equ 0B7H ;Port 3 bit 7
;ACCUMULATOR BITS
ACC.0 .equ 0E0H ;Acc bit 0
ACC.1 .equ 0E1H ;Acc bit 1
ACC.2 .equ 0E2H ;Acc bit 2
ACC.3 .equ 0E3H ;Acc bit 3
ACC.4 .equ 0E4H ;Acc bit 4
ACC.5 .equ 0E5H ;Acc bit 5
ACC.6 .equ 0E6H ;Acc bit 6
ACC.7 .equ 0E7H ;Acc bit 7
;B REGISTER BITS
B.0 .equ 0F0H ;Breg bit 0
B.1 .equ 0F1H ;Breg bit 1
B.2 .equ 0F2H ;Breg bit 2
B.3 .equ 0F3H ;Breg bit 3
B.4 .equ 0F4H ;Breg bit 4
B.5 .equ 0F5H ;Breg bit 5
B.6 .equ 0F6H ;Breg bit 6
B.7 .equ 0F7H ;Breg bit 7
;PSW REGISTER BITS
P .equ 0D0H ;Parity flag
F1 .equ 0D1H ;User flag 1
OV .equ 0D2H ;Overflow flag
RS0 .equ 0D3H ;Register bank select 1
RS1 .equ 0D4H ;Register bank select 0
F0 .equ 0D5H ;User flag 0
AC .equ 0D6H ;Auxiliary carry flag
CY .equ 0D7H ;Carry flag
;TCON REGISTER BITS
IT0 .equ 088H ;Intr 0 type control
IE0 .equ 089H ;Intr 0 edge flag
IT1 .equ 08AH ;Intr 1 type control
IE1 .equ 08BH ;Intr 1 edge flag
TR0 .equ 08CH ;Timer 0 run
TF0 .equ 08DH ;Timer 0 overflow
TR1 .equ 08EH ;Timer 1 run
TF1 .equ 08FH ;Timer 1 overflow
;SCON REGISTER BITS
RI .equ 098H ;RX Intr flag
TI .equ 099H ;TX Intr flag
RB8 .equ 09AH ;RX 9th bit
TB8 .equ 09BH ;TX 9th bit
REN .equ 09CH ;Enable RX flag
SM2 .equ 09DH ;8/9 bit select flag
SM1 .equ 09EH ;Serial mode bit 1
SM0 .equ 09FH ;Serial mode bit 0
;IE REGISTER BITS
EX0 .equ 0A8H ;External intr 0
ET0 .equ 0A9H ;Timer 0 intr
EX1 .equ 0AAH ;External intr 1
ET1 .equ 0ABH ;Timer 1 intr
ES .equ 0ACH ;Serial port intr
ET2 .equ 0ADH ;Timer 2 intr
;Reserved 0AEH Reserved
EA .equ 0AFH ;Global intr enable
;IP REGISTER BITS
PX0 .equ 0B8H ;Priority level-External intr 0
PT0 .equ 0B9H ;Priority level-Timer 0 intr
PX1 .equ 0BAH ;Priority level-External intr 1
PT1 .equ 0BBH ;Priority level-Timer 1 intr
PS .equ 0BCH ;Priority level-Serial port intr
PT2 .equ 0BDH ;Priority level-Timer 2 intr
;Reserved 0BEH Reserved
PCT .equ 0BFH ;Global priority level
;IOCON REGISTER BITS 80154 ONLY
ALF .equ 0F8H ;Power down port condition
P1HZ .equ 0F9H ;Port 1 control
P2HZ .equ 0FAH ;Port 2 control
P3HZ .equ 0FBH ;Port 3 control
IZC .equ 0FCH ;Pullup select
SERR .equ 0FDH ;Serial reception error
T32 .equ 0FEH ;32 bit timer config
WDT .equ 0FFH ;Watchdog config
;T2CON REGISTER BITS 8052/80154 ONLY
CP/RL2 .equ 0C8H ;Timer 2 capture/reload flag
C/T2 .equ 0C9H ;Timer 2 timer/counter select
TR2 .equ 0CAH ;Timer 2 start/stop
EXEN2 .equ 0CBH ;Timer 2 external enable
TCLK .equ 0CCH ;TX clock flag
RCLK .equ 0CDH ;RX clock flag
EXF2 .equ 0CEH ;Timer 2 external flag
TF2 .equ 0CFH ;Timer 2 overflow

62
XSource/bin/COPYRIGH.TXT

@ -0,0 +1,62 @@
The Telemark Assembler Copyright Notification
The files on this disk are:
Copyright 1985-1993 by Speech Technology Incorporated, all rights reserved.
Copyright 1998,1999,2001 by Thomas N. Anderson , all rights reserved.
The following files on this disk may be freely copied and shared with others:
TASM.EXE - TASM Assembler, executable
TASM48.TAB - 8048 Instruction definition table
TASM51.TAB - 8051 Instruction definition table
TASM65.TAB - 6502 Instruction definition table
TASM85.TAB - 8085 Instruction definition table
TASM80.TAB - Z80 Instruction definition table
TASM05.TAB - 6805 Instruction definition table
TASM68.TAB - 6800/6801/68HC11 Instruction definition table
TASM3210.TAB - TMS32010 Instruction definition table
TASM3225.TAB - TMS32025 Instruction definition table
TASM70.TAB - TMS7000 Instruction definition table
TASMMAN.HTM - TASM Documentation (HTML)
TASMTABS.HTM - TASM Documentation on individual tables (HTML)
TEST*.ASM - TASM test cases (one for each table)
TESTTABS.BAT - Batch script to execute the test cases
8051.H - Useful register definitions for the 8051
MOTO.H - Useful directive definitions for Motorola compatibility
README.TXT - Brief Explanation of Disk contents
COPYRIGH.TXT - Copyright notice
ORDERFRM.TXT - Registration Form
ORDERFRM.HTM - Registration Form (HTML)
RELNOTES.TXT - Release notes.
Although you may freely copy the above files, TASM is not 'free' or
'public domain'. It is copyrighted material which can be copied and
evaluated by people without registration, but those that use it on a
regular basis must register (see the ORDERFRM.TXT or ORDERFRM.HTM files).
The following files are to be copied only with the following
restrictions: The owner of this software may make as many copies of
the following as is deemed necessary as long as no possibility exists
for the software (or derivitive products) to be in use on more than
one machine at a time. Or, if a site license has been purchased, the
software can only be used on machines at that site.
TASM.C
TASMMAIN.C
MACRO.C
PARSE.C
STR.C
LOOKUP.C
WRTOBJ.C
FNAME.C
WRTOBJ.C
ERRLOG.C
TASM.H
Thomas N. Anderson
Squak Valley Software
837 Front Street South
Issaquah, WA 98027
email: andersontn@acm.org

BIN
XSource/bin/CPMCHATTR

Binary file not shown.

BIN
XSource/bin/CPMCHMOD

Binary file not shown.

BIN
XSource/bin/CPMCP

Binary file not shown.

BIN
XSource/bin/CPMLS

Binary file not shown.

BIN
XSource/bin/CPMRM

Binary file not shown.

BIN
XSource/bin/CVT2MAC

Binary file not shown.

BIN
XSource/bin/MAKE

Binary file not shown.

20
XSource/bin/MOTO.H

@ -0,0 +1,20 @@
; A few handy defines to make TASM more like typcial
; motorola syntax
.MSFIRST ; Most Significant byte first
#define EQU .EQU
#define ORG .ORG
#define RMB .BLOCK
#define FCB .BYTE
#define FCC .TEXT
#define FDB .WORD
#define equ .EQU
#define org .ORG
#define rmb .BLOCK
#define fcb .BYTE
#define fcc .TEXT
#define fdb .WORD

63
XSource/bin/Makefile

@ -0,0 +1,63 @@
#!/bin/sh
#rem mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
#rem $Id: testtabs.bat 1.3 1998/02/25 12:27:04 toma Exp $
#rem mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm
#rem Run TASM on all the table test files. Those that have
#rem extended instuctions use the -x option.
AS = ./TASM
OBJS = TEST48.obj TEST65.obj TEST51.obj TEST85.obj TESTZ80.obj
OBJS2= TEST05.obj TEST3210.obj TEST3225.obj TEST68.obj TEST70.obj TEST96.obj
all: $(OBJS) $(OBJS2)
# ./TASM -48 -x TEST48.ASM
# ./TASM -65 -x TEST65.ASM
# ./TASM -51 TEST51.ASM
# ./TASM -85 TEST85.ASM
# ./TASM -80 -x TESTZ80.ASM
# ./TASM -05 -x TEST05.ASM
# ./TASM -3210 TEST3210.ASM
# ./TASM -3225 TEST3225.ASM
# ./TASM -68 -x TEST68.ASM
# ./TASM -70 TEST70.ASM
# ./TASM -96 -x TEST96.ASM
TEST48.obj: TEST48.ASM
$(AS) -48 -x $<
TEST65.obj: TEST65.ASM
$(AS) -65 -x $<
TEST51.obj: TEST51.ASM
$(AS) -51 $<
TEST85.obj: TEST85.asm
$(AS) -85 $<
TESTZ80.obj: TESTZ80.ASM
$(AS) -80 -x $<
TEST05.obj: TEST05.ASM
$(AS) -05 -x $<
TEST3210.obj: TEST3210.ASM
$(AS) -3210 $<
TEST3225.obj: TEST3225.ASM
$(AS) -3225 $<
TEST68.obj: TEST68.ASM
$(AS) -68 -x $<
TEST70.obj: TEST70.ASM
$(AS) -70 $<
TEST96.obj: TEST96.ASM
$(AS) -96 -x $<
clean:
rm -r -f *.obj
rm -r -f *.lst
rm -r -f *.sym

82
XSource/bin/ORDERFRM.HTM

@ -0,0 +1,82 @@
<!DOCTYPE HTML PUBLIC "-//SQ//DTD HTML 2.0 HoTMetaL + extensions//EN">
<HTML>
<HEAD>
<TITLE>Telemark Cross Assembler (TASM) Order Form</TITLE></HEAD>
<BODY>
<H1>TASM Order Form</H1>
<P>To order TASM, print this page, fill in the details and mail to SVS at:</P>
<P><I>Squak Valley Software<BR>837 Front Street South<BR>Issaquah, WA 98027<BR>USA</I></P>
<H2>TASM registration provides the user:</H2>
<UL>
<LI>Most Recent TASM Distribution Disk (includes tables for all supported
processor families)</LI>
<LI>TASM Source code (in C)</LI>
<LI>Bound TASM Manual</LI>
<LI>Telephone Support</LI>
<LI>Knowledge that they are supporting the development of useful but
inexpensive software</LI></UL>
<TABLE BORDER="BORDER">
<TR>
<TD ALIGN="LEFT" VALIGN="MIDDLE"><B>Item Description</B></TD>
<TD ALIGN="CENTER"><B>Unit Price</B></TD>
<TD ALIGN="CENTER" VALIGN="MIDDLE"><B>Amount Extended</B></TD></TR>
<TR>
<TD>TASM 3.2 Registration </TD>
<TD ALIGN="RIGHT" VALIGN="MIDDLE">$40</TD>
<TD>______________________</TD></TR>
<TR>
<TD>TASM 3.2 Site Registration</TD>
<TD ALIGN="RIGHT" VALIGN="MIDDLE">$90</TD>
<TD>______________________</TD></TR>
<TR>
<TD>TASM 3.2 Update for registered users</TD>
<TD ALIGN="RIGHT">$10</TD>
<TD>______________________</TD></TR>
<TR>
<TD></TD>
<TD></TD>
<TD></TD></TR>
<TR>
<TD><B>Subtotal</B></TD>
<TD></TD>
<TD>______________________</TD></TR>
<TR>
<TD>Tax (Washington State residents add 8.6%)</TD>
<TD></TD>
<TD>______________________</TD></TR>
<TR>
<TD>Billing Fee (for orders not accompanied by payment)</TD>
<TD ALIGN="RIGHT">$10</TD>
<TD>______________________</TD></TR>
<TR>
<TD>Foreign postage and handling</TD>
<TD ALIGN="RIGHT">$10</TD>
<TD>______________________</TD></TR>
<TR>
<TD><B>Total</B></TD>
<TD></TD>
<TD>______________________</TD></TR></TABLE>
<UL>
<LI>All payments must be in US funds drawn on a US bank (No credit card
payments) </LI>
<LI>Orders outside North America please add the indicated foreign postage and
handling.</LI>
<LI>Purchase orders allowed from North America only (all others must be
prepaid).</LI></UL>
<H2>Ship To:</H2>
<TABLE BORDER="BORDER">
<TR>
<TD>Name</TD>
<TD>____________________________________</TD></TR>
<TR>
<TD>Company</TD>
<TD> ___________________________________</TD></TR>
<TR>
<TD>Street Address</TD>
<TD>____________________________________</TD></TR>
<TR>
<TD>City, State/Province, Postal Code</TD>
<TD>____________________________________</TD></TR>
<TR>
<TD>Country</TD>
<TD> ____________________________________</TD></TR></TABLE></BODY></HTML>

55
XSource/bin/ORDERFRM.TXT

@ -0,0 +1,55 @@
ORDERING INFORMATION (TASM Version 3.2)
TASM is distributed as shareware. The shareware portion of the
product may be freely copied and used for evaluation purposes. Use
of TASM beyond a reasonable evaluation period requires registration.
Registered users receive the following benefits:
1. The recent version of TASM.
2. TASM source code (in C).
3. Bound TASM manual.
4. Telephone support.
5. Knowledge that they are supporting the development of
useful but inexpensive software.
DESCRIPTION UNIT PRICE PRICE
--------------------------------------------------------------------
TASM Registration (TASM disk, manual, & source) $40.00 _______
TASM Site Registration (for sites with multiple 90.00 _______
users. Includes same materials as above.)
TASM User's Manual (included above) 10.00 _______
TASM update for registered users 10.00 _______
(latest disk (with source), and manual)
Subtotal _______
Tax (Washington state residents add 8.6%) _______
Billing fee (for orders not accompanied by check) 10.00 _______
Foreign postage (outside North America) add $10.00 _______
(Foreign orders must be in US funds drawn on a US bank)
TOTAL (post paid) _______
Which processors are of primary interest to you? __________________
(This is for our information only. You will
receive all current TASM tables).
Shipping Address:
______________________________________________
______________________________________________
______________________________________________
Send check or money order (no credit cards) to: Squak Valley Software
837 Front Street South
Issaquah, WA 98027

BIN
XSource/bin/README-MAC.PNG

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

18
XSource/bin/README.1ST

@ -0,0 +1,18 @@
This is the registered distribution disk for TASM - the Telemark Assembler.
The files on the disk are:
Readme.1st - This file
Tasm32.zip - TASM distribution archive, Version 3.2
To extract the archive use pkunzip or pkzip for windows and extract
into the desired directory for TASM.
See the README.TXT file after extraction.
See the BUILD.TXT file for notes on building from the source archive.
Thomas N. Anderson
Squak Valley Software
837 Front Street South
Issaquah, WA 98027
andersontn@acm.org

46
XSource/bin/README.TXT

@ -0,0 +1,46 @@
This is the shareware distribution disk for TASM - a table driven
assembler. The files on the disk include:
TASM.EXE - TASM Assembler, executable
TASM48.TAB - 8048 Instruction definition table
TASM51.TAB - 8051 Instruction definition table
TASM65.TAB - 6502 Instruction definition table
TASM85.TAB - 8085 Instruction definition table
TASM80.TAB - Z80 Instruction definition table
TASM05.TAB - 6805 Instruction definition table
TASM3210.TAB - TMS32010 Instruction definition table
TASM3225.TAB - TMS32025 Instruction definition table
TASM68.TAB - 6800/6801 Instruction definition table
TASM70.TAB - TMS7000 Instruction definition table
TASM96.TAB - 8096 Instruction definition table
TEST*.ASM - TASM test files (one for each table).
TESTTABS.BAT - Batch script to execute TASM for each test case.
8051.H - Useful register definitions for the 8051
MOTO.H - Useful directive definitions for Motorola compatibility
TASMMAN.HTM - TASM User's Manual (HTML)
TASMTABS.HTM - TASM Table Description Manual (HTML)
README.TXT - Brief Explanation of Disk contents
COPYRIGH.TXT - Copyright notice
ORDERFRM.TXT - Order Form (plain text)
ORDERFRM.HTM - Order Form (HTML)
For a brief discription of how to run TASM, execute TASM with no command
line parameters.
If you find TASM useful, why not register? Unregistered use of TASM
beyond a 30 day evaluation period is a violation of the license.
For the $40.00 registration fee you get:
1. Latest version of TASM.
2. Source code (in C).
3. Bound Manual.
4. email support.
To register, use the form on the disk (ORDERFRM.TXT), or just send
$40.00 check or money order to:
Thomas N. Anderson
Squak Valley Software
837 Front Street South
Issaquah, WA 98027
andersontn@acm.org

213
XSource/bin/RELNOTES.TXT

@ -0,0 +1,213 @@
TASM RELEASE NOTES [September 2001]
RELEASE DATE/VERSION DESCRIPTION
-----------------------------------------------------------------------
10/01/85 Version 2.0 First version with external table def files.
01/01/86 Version 2.1 Added '*=' and '=' directives as
alternatives to .ORG and .EQU (for
more complete MOS Technology compatibility).
Enhanced parsing algorithm so it can
deal with more than one variable expression.
Added -d option
02/14/86 Version 2.2 Modified so instruction set definition
tables don't need to be compiled in.
Added 8051 tables.
Increased the number of labels allowed.
03/31/87 Version 2.3 Fixed bug that prevented location 0xffff
from being used and written to object file.
Most changes in wrtobj() and pr_hextab().
05/01/87 Version 2.4 Added multiple byte opcode support.
Added shift/or operation capability to
args from instruction set definition table.
Converted to MS C version 3.0
Added hashing to instruction set table
lookups to speed up.
11/01/87 Version 2.5 Added DB and DW directives.
Added escape capability in TEXT strings.
Fixed inst_lookup function to treat the
multiple wild card case a little better
Added 8080/8085 and Z80 tables.
Added sorting on label table.
Increased size of read buffer.
Speed enhancements.
Added DEFCONT (macro continuation) directive.
Converted to Microsoft C 5.0 compiler.
Added 6805 table (and related modops).
Added Z80 bit modop.
Minor speed up.
Fixed bug that enters infinite loop
when a macro invocation has no closing paren.
Added some three arg MODOPs.
8/15/88 Version 2.6.1 Added CODES/NOCODES directives
Fixed bug preventing directives in multiple
statement lines.
2.6.2 Added COMB_NIBBLE and COMB_NIBBLE_SWAP MODOPS
2/1/89 Version 2.7 Removed ad hoc heap and now use malloc()
Added MSFIRST and LSFIRST directives.
Added EXPORT directive.
Added symbol table file (-s flag).
Added NSEG/CSEG/BSEG/DSEG/XSEG directives
and the SYM/AVSYM directives to support
the Avocet avsim51 simulator.
Added support for TMS320.
Added -r flag to set read buffer size.
Converted expression evaluation from
signed 16 bit to signed 32 bit (enabling
apparent ability to use signed or unsigned
16 bit values).
4/20/89 Version 2.7.1 Return 0x20000 for undefined labels so that
(label+x) type stuff won't confuse zero
page addressing.
Added duplicate label error message on pass 1.
6/20/89 Version 2.7.2 Improved macro expansion capability.
No expansion in comments.
Context sensitive identifiers.
Revised exit codes.
6/27/89 Version 2.7.3 Added -a flag for strict error checking:
(1) No outer parens around expressions.
(2) Error message if unused argbytes remain
(3) Duplicate labels
Fixed so ']' can terminate expressions.
Removed parse() from tasm.c
8/19/89 Version 2.7.4 Added Motorola hex object format.
Fixed bug that complained when \ immediately
followed a opcode with no args.
Slightly improved error reporting (Errorbuf).
10/31/89 Version 2.7.5 Added TMS7000 support.
Fixed argv[] bug (only dimensioned to 10 in pass1.
12/23/89 Version 2.7.6 Improved handling of % (modulo vs binary
prefix ambiguity).
Fixed list so lines with more than
6 bytes go on second line.
03/04/90 Version 2.7.7 Fixed bug that left off 2 bytes if ORG
went backwards and all 64K was used.
Added a command line option to ignore
case on labels.
Added a couple MODOP rules for TMS9900.
Allow double quoted text strings for BYTE.
04/15/90 Version 2.7.8 Fixed expression evaluator bug (paren popping)
and changed expression evaluator to a more
conventional left to right evaluation order.
Added TURBOC ifdef's (from Lance Jump).
08/20/90 Version 2.8 Primarily a documentation update.
Added error check for AJMP/ACALL off of
current 2K block (8051).
10/15/90 Version 2.8.1 Minor speed up in label searching.
Fixed word addressing for TMS320
Version 2.8.2 Local labels.
More label table format options (long form
suppress local labels).
11/30/90 Version 2.8.3 Turbo C conversion.
DS directive added.
12/27/90 Version 2.8.4 Added COMMENTCHAR directive to change the
comment indicator in the first column.
This was done to support the assembly
files from the small C compiler (sc11)
for the 68CH11.
02/14/91 Version 2.8.5 Added LOCALLABELCHAR directive to
override the default "_" as the
prefix for local labels.
03/18/91 Version 2.8.6 Added some MODOPs in support of TMS320C25
04/20/91 Version 2.8.7 Fixed sign extend bug in CSWAP modop.
Increased MAXLABS to 10000 for big version.
05/05/91 Version 2.8.8 Fixed pointer bug in debug output in sort_labels().
05/20/91 Version 2.9 TMS320C25 table along with some MODOP enhancements
for it.
TASMTABS.DOC updated (but not TASM.DOC)
08/09/91 Version 2.9.1 Nested conditionals.
04/01/92 Version 2.9.2 Fixed long label clobber problem in
find_label() and save_label. Syntax
errors could result in a comment line
after an instruction being lumped together
with a label resulting in a long label.
The label functions were not testing for
labels that exceed the specified size.
Added CHK directive.
Added REL3 MODOD to support uPD75xxx.
Delinting and more ANSIfication.
Modifications due to feedback from B Provo:
Added FILL directive.
Allow multiple labels for EXPORT directive.
Allow address with END directive.
TASM.DOC update
11/25/92 Version 2.9.3 Improved error reporting for mismatched quotes.
Disallow the single quote character constants.
Convert to BCC++ 3.1
Provide filename,linenum on all error messages.
Modify format of error messages for compatibility
with the Brief editor.
Added ECHO directive to send output to console.
Performance improvements in macro processing.
"Type Safe" conversion (compatible with C++).
Improved error reporting for imbalanced ifdefs.
01/29/93 Version 2.9.4 Added rules for 8096 (I1,I2,I3,I4,I5,I6).
Generate error message on forward reference
in EQUate statements.
Eliminated -a option for enabling the detection
of branches of 2K page for 8051. This
is now built into the table.
Allow white space in double quotes for BYTE
directive. This previously worked for TEXT,
but not BYTE.
Fixed defect with Z80 4 byte indexed instructions.
Fixed macro defect. If the macro definition has
args but the invocation does not some garbage
gets expanded into the source line.
Z80 OTDR opcode was incorrect.
Z80 IN0/OUT0/INA instructions did not require
the parens around the args.
Some experimental support for windows verson of TASM.
10/24/93 Version 3.0 Documentation update. TASM.DOC, TASMTABS.DOC
and RELNOTES.DOC updated, but the functionality
remains unchanged from version 2.9.4.
06/16/94 Version 3.0.1 Multiple macros on the same line.
Fixed problem with -c with >8000h bytes used goes bonkers
Corrected word addressing problem for BLOCK/DS directives.
Allow escaped quotes in TEXT strings.
11/30/97 Version 3.1 LINUX support.
Protect mode version (tasmp) with better memory
management (more labels allowed, etc.)
Added an 8096 table.
Added Logical NOT unary operator.
Added an object file format with word address
09/01/01 version 3.2 Increased LINESIZ to 512 to enable use of longer macros.
Eliminated -r command line option (to set
read buffer size - Now obsolete.)
Improved list() function to put a max of
six bytes per line to avoid problems with
directives that generate large blocks of
object code (i.e. .FILL).
Built as a 32 bit version using MS C++ 6.0

BIN
XSource/bin/TASM

Binary file not shown.

215
XSource/bin/TASM05.TAB

@ -0,0 +1,215 @@
"TASM 6805 Assembler. "
/***************************************************************************
/* $Id
/***************************************************************************
/* This is the instruction set definition table for the 6805 version of TASM.
/* Thomas N. Anderson, Speech Technology Incorported, April 1988.
/*
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT OR */
/*-------------------------------------------*/
ADC #* A9 2 NOP 1
ADC ,X F9 1 NOP 1
ADC *,X D9 3 MZERO 1
ADC * C9 3 MZERO 1
ADD #* AB 2 NOP 1
ADD ,X FB 1 NOP 1
ADD *,X DB 3 MZERO 1
ADD * CB 3 MZERO 1
AND #* A4 2 NOP 1
AND ,X F4 1 NOP 1
AND *,X D4 3 MZERO 1
AND * C4 3 MZERO 1
ASLA "" 48 1 NOP 1
ASLX "" 58 1 NOP 1
ASL ,X 78 1 NOP 1
ASL *,X 68 2 NOP 1
ASL * 38 2 NOP 1
ASRA "" 47 1 NOP 1
ASRX "" 57 1 NOP 1
ASR ,X 77 1 NOP 1
ASR *,X 67 2 NOP 1
ASR * 37 2 NOP 1
BCC * 24 2 R1 1
BCLR *,* 11 2 MBIT 1
BCS * 25 2 R1 1
BEQ * 27 2 R1 1
BHCC * 28 2 R1 1
BHCS * 29 2 R1 1
BHI * 22 2 R1 1
BHS * 24 2 R1 1
BIH * 2F 2 R1 1
BIL * 2E 2 R1 1
BIT #* A5 2 NOP 1
BIT ,X F5 1 NOP 1
BIT *,X D5 3 MZERO 1
BIT * C5 3 MZERO 1
BLO * 25 2 R1 1
BLS * 23 2 R1 1
BMC * 2C 2 R1 1
BMI * 2B 2 R1 1
BMS * 2D 2 R1 1
BNE * 26 2 R1 1
BPL * 2A 2 R1 1
BRA * 20 2 R1 1
BRCLR *,*,* 01 3 MBIT 1
BRN * 21 2 R1 1
BRSET *,*,* 00 3 MBIT 1
BSET *,* 10 2 MBIT 1
BSR * AD 2 R1 1
CLC "" 98 1 NOP 1
CLI "" 9A 1 NOP 1
CLRA "" 4F 1 NOP 1
CLRX "" 5F 1 NOP 1
CLR ,X 7F 1 NOP 1
CLR *,X 6F 2 NOP 1
CLR * 3F 2 NOP 1
CMP #* A1 2 NOP 1
CMP ,X F1 1 NOP 1
CMP *,X D1 3 MZERO 1
CMP * C1 3 MZERO 1
CMPX #* A3 2 NOP 1 /* equivalent to CPX */
CMPX ,X F3 1 NOP 1
CMPX *,X D3 3 MZERO 1
CMPX * C3 3 MZERO 1
COMA "" 43 1 NOP 1
COMX "" 53 1 NOP 1
COM ,X 73 1 NOP 1
COM *,X 63 2 NOP 1
COM * 33 2 NOP 1
CPX #* A3 2 NOP 1
CPX ,X F3 1 NOP 1
CPX *,X D3 3 MZERO 1
CPX * C3 3 MZERO 1
DECA "" 4A 1 NOP 1
DECX "" 5A 1 NOP 1
DEX "" 5A 1 NOP 1
DEC ,X 7A 1 NOP 1
DEC *,X 6A 2 NOP 1
DEC * 3A 2 NOP 1
EOR #* A8 2 NOP 1
EOR ,X F8 1 NOP 1
EOR *,X D8 3 MZERO 1
EOR * C8 3 MZERO 1
INCA "" 4C 1 NOP 1
INCX "" 5C 1 NOP 1
INX "" 5C 1 NOP 1
INC ,X 7C 1 NOP 1
INC *,X 6C 2 NOP 1
INC * 3C 2 NOP 1
JMP ,X FC 1 NOP 1
JMP *,X DC 3 MZERO 1
JMP * CC 3 MZERO 1
JSR ,X FD 1 NOP 1
JSR *,X DD 3 MZERO 1
JSR * CD 3 MZERO 1
LDA #* A6 2 NOP 1
LDA ,X F6 1 NOP 1
LDA *,X D6 3 MZERO 1
LDA * C6 3 MZERO 1
LDX #* AE 2 NOP 1
LDX ,X FE 1 NOP 1
LDX *,X DE 3 MZERO 1
LDX * CE 3 MZERO 1
LSLA "" 48 1 NOP 1
LSLX "" 58 1 NOP 1
LSL ,X 78 1 NOP 1
LSL *,X 68 2 NOP 1
LSL * 38 2 NOP 1
LSRA "" 44 1 NOP 1
LSRX "" 54 1 NOP 1
LSR ,X 74 1 NOP 1
LSR *,X 64 2 NOP 1
LSR * 34 2 NOP 1
MUL "" 42 1 NOP 4 /* HC05C4 only */
NEGA "" 40 1 NOP 1
NEGX "" 50 1 NOP 1
NEG ,X 70 1 NOP 1
NEG *,X 60 2 NOP 1
NEG * 30 2 NOP 1
NOP "" 9D 1 NOP 1
ORA #* AA 2 NOP 1
ORA ,X FA 1 NOP 1
ORA *,X DA 3 MZERO 1
ORA * CA 3 MZERO 1
ROLA "" 49 1 NOP 1
ROLX "" 59 1 NOP 1
ROL ,X 79 1 NOP 1
ROL *,X 69 2 NOP 1
ROL * 39 2 NOP 1
RORA "" 46 1 NOP 1
RORX "" 56 1 NOP 1
ROR ,X 76 1 NOP 1
ROR *,X 66 2 NOP 1
ROR * 36 2 NOP 1
RSP "" 9C 1 NOP 1
RTI "" 80 1 NOP 1
RTS "" 81 1 NOP 1
SBC #* A2 2 NOP 1
SBC ,X F2 1 NOP 1
SBC *,X D2 3 MZERO 1
SBC * C2 3 MZERO 1
SEC "" 99 1 NOP 1
SEI "" 9B 1 NOP 1
STA ,X F7 1 NOP 1
STA *,X D7 3 MZERO 1
STA * C7 3 MZERO 1
STOP "" 8E 1 NOP 2 /* M146805 CMOS only */
STX ,X FF 1 NOP 1
STX *,X DF 3 MZERO 1
STX * CF 3 MZERO 1
SUB #* A0 2 NOP 1
SUB ,X F0 1 NOP 1
SUB *,X D0 3 MZERO 1
SUB * C0 3 MZERO 1
SWI "" 83 1 NOP 1
TAX "" 97 1 NOP 1
TSTA "" 4D 1 NOP 1
TSTX "" 5D 1 NOP 1
TST ,X 7D 1 NOP 1
TST *,X 6D 2 NOP 1
TST * 3D 2 NOP 1
TXA "" 9F 1 NOP 1
WAIT "" 8F 1 NOP 2 /* M146805 CMOS only */

205
XSource/bin/TASM3210.TAB

@ -0,0 +1,205 @@
"TASM TMS32010 Assembler."
/****************************************************************************
/* $Id: tasm3210.tab 1.1 1993/07/31 01:12:40 toma Exp $
/****************************************************************************
/* This is the instruction set definition table
/* for the TMS32010 version of TASM.
/* Thomas N. Anderson, Speech Technology Incorporated
/*
/* See TASM manual for info on table structure.
/*
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT MASK */
/*-------------------------------------------*/
/* Generate opcodes high byte first */
.MSFIRST
/* Don't use '*' as the wild card since it is used for indirect addressing */
/* In this table '@' is the wild card indicating where expression may appear*/
.ALTWILD
/* Use word addressing (not byte addressing)
.WORDADDRS
/* All shift/and stuff applies to opcodes, not args
.NOARGSHIFT
.REGSET *+ A0 1
.REGSET *- 90 1
.REGSET * 80 1
ABS "" 7F88 2 NOP 1
ADD !,@,@ 0000 2 T1 1 8 0F00
ADD !,@ 0008 2 T1 1 8 0F00
ADD ! 0008 2 NOP 1
ADD @,@ 0000 2 TDMA 1 8 0F00
ADD @ 0000 2 T1 1 0 007F
ADDH !,@ 6000 2 T1 1 0 01
ADDH ! 6008 2 NOP 1
ADDH @ 6000 2 T1 1 0 007F
ADDS !,@ 6100 2 T1 1 0 01
ADDS ! 6108 2 NOP 1
ADDS @ 6100 2 T1 1 0 007F
AND !,@ 7900 2 T1 1 0 01
AND ! 7908 2 NOP 1
AND @ 7900 2 T1 1 0 7F
APAC "" 7F8F 2 NOP 1
B @ F900 4 SWAP 1
BANZ @ F400 4 SWAP 1
BGEZ @ FD00 4 SWAP 1
BGZ @ FC00 4 SWAP 1
BIOZ @ F600 4 SWAP 1
BLEZ @ FB00 4 SWAP 1
BLZ @ FA00 4 SWAP 1
BNZ @ FE00 4 SWAP 1
BV @ F500 4 SWAP 1
BZ @ FF00 4 SWAP 1
CALA "" 7F8C 2 NOP 1
CALL @ F800 4 SWAP 1
DINT "" 7F81 2 NOP 1
DMOV !,@ 6900 2 T1 1 0 01
DMOV ! 6908 2 NOP 1
DMOV @ 6900 2 T1 1 0 007F
EINT "" 7F82 2 NOP 1
IN !,@,@ 4000 2 T1 1 8 0700
IN !,@ 4008 2 T1 1 8 0700
IN @,@ 4000 2 TDMA 1 8 0700
LAC !,@,@ 2000 2 T1 1 8 0F00
LAC !,@ 2008 2 T1 1 8 0F00
LAC ! 2008 2 NOP 1
LAC @,@ 2000 2 TDMA 1 8 0F00
LAC @ 2000 2 T1 1 0 007F
LACK @ 7E00 2 T1 1 0 00FF
LAR @,!,@ 3800 2 TAR 1 0 0001
LAR @,! 3808 2 TAR 1 0 0001
LAR @,@ 3800 2 TAR 1 0 007F
LARK @,@ 7000 2 TAR 1 0 00FF
LARP @ 6880 2 T1 1 0 0001
LDP !,@ 6F00 2 T1 1 0 01
LDP ! 6F08 2 NOP 1
LDP @ 6F00 2 T1 1 0 007F
LDPK @ 6E00 2 T1 1 0 01
LST !,@ 7B00 2 T1 1 0 01
LST ! 7B08 2 NOP 1
LST @ 7B00 2 T1 1 0 007F
LT !,@ 6A00 2 T1 1 0 01
LT ! 6A08 2 NOP 1
LT @ 6A00 2 T1 1 0 007F
LTA !,@ 6C00 2 T1 1 0 01
LTA ! 6C08 2 NOP 1
LTA @ 6C00 2 T1 1 0 007F
LTD !,@ 6B00 2 T1 1 0 01
LTD ! 6B08 2 NOP 1
LTD @ 6B00 2 T1 1 0 007F
MAR !,@ 6800 2 T1 1 0 01
MAR ! 6808 2 NOP 1
MAR @ 6800 2 T1 1 0 007F
MPY !,@ 6D00 2 T1 1 0 01
MPY ! 6D08 2 NOP 1
MPY @ 6D00 2 T1 1 0 007F
MPYK @ 8000 2 T1 1 0 1FFF
NOP "" 7F80 2 NOP 1
OR !,@ 7A00 2 T1 1 0 01
OR ! 7A08 2 NOP 1
OR @ 7A00 2 T1 1 0 007F
OUT !,@,@ 4800 2 T1 1 8 0700
OUT !,@ 4808 2 T1 1 8 0700
OUT @,@ 4800 2 TDMA 1 8 0700
PAC "" 7F8E 2 NOP 1
POP "" 7F9D 2 NOP 1
PUSH "" 7F9C 2 NOP 1
RET "" 7F8D 2 NOP 1
ROVM "" 7F8A 2 NOP 1
/* shift count for SACH can only be 0,1, or 4. The mask allows */
/* 0,1,4, or 5. Let the user beware */
SACH !,@,@ 5800 2 T1 1 8 0500
SACH !,@ 5808 2 T1 1 8 0500
SACH ! 5808 2 NOP 1
SACH @,@ 5800 2 TDMA 1 8 0500
SACH @ 5800 2 T1 1 0 007F
/* The data book shows a shift field for SACL but states it must be 0.
/* The previous version of this table left the shift field out
/* for simplicity, but here I have put it back for compatibility.
/* The AND mask is set to zero in this case so a error message
/* will result from non-zero shifts.
SACL !,@,@ 5000 2 T1 1 8 0000
SACL !,@ 5008 2 T1 1 8 0000
SACL ! 5008 2 NOP 1
SACL @,@ 5000 2 TDMA 1 8 0000
SACL @ 5000 2 T1 1 0 007F
SAR @,!,@ 3000 2 TAR 1 0 0001
SAR @,! 3008 2 TAR 1 0 0001
SAR @,@ 3000 2 TAR 1 0 007F
SOVM "" 7F8B 2 NOP 1
SPAC "" 7F90 2 NOP 1
SST !,@ 7C00 2 T1 1 0 0001
SST ! 7C08 2 NOP 1
SST @ 7C00 2 T1 1 0 007F
SUB !,@,@ 1000 2 T1 1 8 0F00
SUB !,@ 1008 2 T1 1 8 0F00
SUB ! 1008 2 NOP 1
SUB @,@ 1000 2 TDMA 1 8 0F00
SUB @ 1000 2 T1 1 0 007F
SUBC !,@ 6400 2 T1 1 0 01
SUBC ! 6408 2 NOP 1
SUBC @ 6400 2 T1 1 0 007F
SUBH !,@ 6200 2 T1 1 0 01
SUBH ! 6208 2 NOP 1
SUBH @ 6200 2 T1 1 0 007F
SUBS !,@ 6300 2 T1 1 0 01
SUBS ! 6308 2 NOP 1
SUBS @ 6300 2 T1 1 0 007F
TBLR !,@ 6700 2 T1 1 0 01
TBLR ! 6708 2 NOP 1
TBLR @ 6700 2 T1 1 0 007F
TBLW !,@ 7D00 2 T1 1 0 01
TBLW ! 7D08 2 NOP 1
TBLW @ 7D00 2 T1 1 0 007F
XOR !,@ 7800 2 T1 1 0 01
XOR ! 7808 2 NOP 1
XOR @ 7800 2 T1 1 0 007F
ZAC "" 7F89 2 NOP 1
ZALH !,@ 6500 2 T1 1 0 01
ZALH ! 6508 2 NOP 1
ZALH @ 6500 2 T1 1 0 007F
ZALS !,@ 6600 2 T1 1 0 01
ZALS ! 6608 2 NOP 1
ZALS @ 6600 2 T1 1 0 007F

456
XSource/bin/TASM3225.TAB

@ -0,0 +1,456 @@
"TASM TMS32025 Assembler."
/****************************************************************************
/* $Id: tasm3225.tab 1.2 1997/09/28 22:16:44 toma Exp $
/****************************************************************************
/* This is the instruction set definition table
/* for the TMS32025 version of TASM.
/* Bob Stricklin
/*
/* See TASM manual for info on table structure.
/*
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT MASK */
/*-------------------------------------------*/
/* Generate opcodes high byte first */
.MSFIRST
/* Don't use '*' as the wild card since it is used for indirect addressing */
/* In this table '@' is the wild card indicating where expression may appear*/
.ALTWILD
.WORDADDRS
.NOARGSHIFT
/* Addressing mode definitions.
/* Value gets OR'd in to the opcode if the
/* addressing mode is recognized
/* Note: no special classes are defined, so if this
/* table is used for TMS32020, invalid instructions
/* will not result in errors (no BR0+/- addressing mode (for example)
/* The ! character can match any of the patterns in the REGSET:
.REGSET *BR0+ F0 1
.REGSET *BR0- C0 1
.REGSET *0+ E0 1
.REGSET *0- D0 1
.REGSET *+ A0 1
.REGSET *- 90 1
.REGSET * 80 1
ABS "" CE1B 2 NOP 1
ADD !,@,@ 0088 2 T1 1 8 0F00
ADD !,@ 0080 2 T1 1 8 0F00
ADD ! 0080 2 NOP 1
ADD @,@ 0000 2 TDMA 1 8 0F00
ADD @ 0000 2 T1 1 0 007F
ADDC !,@ 4388 2 T1 1 0 0007
ADDC ! 4380 2 NOP 1
ADDC @ 4300 2 T1 1 0 007F
ADDH !,@ 4888 2 T1 1 0 0007
ADDH ! 4880 2 NOP 1
ADDH @ 4800 2 T1 1 0 007F
ADDK @ CC00 2 T1 1 0 00FF ;8 bit constant
ADDS !,@ 4988 2 T1 1 0 0007
ADDS ! 4980 2 NOP 1
ADDS @ 4900 2 T1 1 0 007F
ADDT !,@ 4A88 2 T1 1 0 0007
ADDT ! 4A80 2 NOP 1
ADDT @ 4A00 2 T1 1 0 007F
ADLK @,@ D002 4 TLK 1 8 0F00
ADLK @ D002 4 TLK 1
ADRK @ 7E00 2 T1 1 0 00FF ;8 bit constant
AND !,@ 4E88 2 T1 1 0 0007
AND ! 4E80 2 NOP 1
AND @ 4E00 2 T1 1 0 007F
ANDK @,@ D004 4 TLK 1 8 0F00
ANDK @ D004 4 TLK 1
APAC "" CE15 2 NOP 1
B @,!,@ FF88 4 TLK 1 0 07
B @,! FF80 4 SWAP 1
B @ FF80 4 SWAP 1
BACC "" CE25 2 NOP 1
BANZ @,!,@ FB88 4 TLK 1 0 07
BANZ @,! FB80 4 SWAP 1
BANZ @ FB90 4 SWAP 1 ; Default to the equivalent of
; BANZ loop,*- (as per spec) for
; TMS32010 compatibility.
BBNZ @,!,@ F988 4 TLK 1 0 07
BBNZ @,! F980 4 SWAP 1
BBNZ @ F980 4 SWAP 1
BBZ @,!,@ F888 4 TLK 1 0 07
BBZ @,! F880 4 SWAP 1
BBZ @ F880 4 SWAP 1
BC @,!,@ 5E88 4 TLK 1 0 07
BC @,! 5E80 4 SWAP 1
BC @ 5E80 4 SWAP 1
BGEZ @,!,@ F488 4 TLK 1 0 07
BGEZ @,! F480 4 SWAP 1
BGEZ @ F480 4 SWAP 1
BGZ @,!,@ F188 4 TLK 1 0 07
BGZ @,! F180 4 SWAP 1
BGZ @ F180 4 SWAP 1
BIOZ @,!,@ FA88 4 TLK 1 0 07
BIOZ @,! FA80 4 SWAP 1
BIOZ @ FA80 4 SWAP 1
BIT !,@,@ 9088 2 T1 1 8 0F00 ;8 bit shift
BIT !,@ 9080 2 T1 1 8 0F00
BIT @,@ 9000 2 TDMA 1 8 0F00
BITT !,@ 5788 2 T1 1 0 07
BITT ! 5780 2 T1 1
BITT @ 5700 2 T1 1 0 7F
BLEZ @,!,@ F288 4 TLK 1 0 07
BLEZ @,! F280 4 SWAP 1
BLEZ @ F280 4 SWAP 1
BLKD @,!,@ FD88 4 TLK 1 0 07
BLKD @,! FD80 4 TLK 1 0 07
BLKD @,@ FD00 4 TLK 1 0 FF
BLKP @,!,@ FC88 4 TLK 1 0 07
BLKP @,! FC80 4 TLK 1 0 07
BLKP @,@ FC00 4 TLK 1 0 FF
BLZ @,!,@ F388 4 TLK 1 0 07
BLZ @,! F380 4 SWAP 1
BLZ @ F380 4 SWAP 1
BNC @,!,@ 5F88 4 TLK 1 0 07
BNC @,! 5F80 4 SWAP 1
BNC @ 5F80 4 SWAP 1
BNV @,!,@ F788 4 TLK 1 0 07
BNV @,! F780 4 SWAP 1
BNV @ F780 4 SWAP 1
BNZ @,!,@ F588 4 TLK 1 0 07
BNZ @,! F580 4 SWAP 1
BNZ @ F580 4 SWAP 1
BV @,!,@ F088 4 TLK 1 0 07
BV @,! F080 4 SWAP 1
BV @ F080 4 SWAP 1
BZ @,!,@ F688 4 TLK 1 0 07
BZ @,! F680 4 SWAP 1
BZ @ F680 4 SWAP 1
CALA "" CE24 2 NOP 1
CALL @,!,@ FE88 4 TLK 1 0 07
CALL @,! FE80 4 SWAP 1
CALL @ FE80 4 SWAP 1
CMPL "" CE27 2 NOP 1
CMPR @ CE50 2 T1 1 0 03 ;2 BIT CONTANT
CNFD "" CE04 2 NOP 1
CNFP "" CE05 2 NOP 1
CONF "" CE3C 2 T1 4 0 03 ; c26 ONLY
DINT "" CE01 2 NOP 1
DMOV !,@ 5688 2 T1 1 0 07
DMOV ! 5680 2 NOP 1
DMOV @ 5600 2 T1 1 0 007F
EINT "" CE00 2 NOP 1
FORT @ CE0E 2 T1 1 0 01
IDLE "" CE1F 2 NOP 1
IN !,@,@ 8088 2 T1 1 8 0F00
IN !,@ 8080 2 T1 1 8 0F00
IN @,@ 8000 2 TDMA 1 8 0F00
LAC !,@,@ 2088 2 T1 1 8 0F00
LAC !,@ 2080 2 T1 1 8 0F00
LAC ! 2080 2 NOP 1
LAC @,@ 2000 2 TDMA 1 8 0F00
LAC @ 2000 2 T1 1 0 007F
LACK @ CA00 2 T1 1 0 00FF ;tested for -25
LACT !,@ 4288 2 T1 1 0 07
LACT ! 4280 2 NOP 1
LACT @ 4200 2 T1 1 0 007F
LALK @,@ D001 4 TLK 1 8 0F00
LALK @ D001 4 TLK 1
LAR @,!,@ 3088 2 TAR 1 0 07
LAR @,! 3080 2 TAR 1 0 07
LAR @,@ 3000 2 TAR 1 0 7F
LARK @,@ C000 2 TAR 1 0 00FF
LARP @ 5588 2 T1 1 0 0007
LDP !,@ 5288 2 T1 1 0 07
LDP ! 5280 2 NOP 1
LDP @ 5200 2 T1 1 0 007F
LDPK @ C800 2 T1 1 0 01FF ;9 bit constant
LPH !,@ 5388 2 T1 1 0 07
LPH ! 5380 2 NOP 1
LPH @ 5300 2 T1 1 0 7F
LRLK @,@ D000 4 T5 1 8 0700 ;<arp>, <const16>
LST !,@ 5088 2 T1 1 0 07
LST ! 5080 2 NOP 1
LST @ 5000 2 T1 1 0 7F
LST1 !,@ 5188 2 T1 1 0 07
LST1 ! 5180 2 NOP 1
LST1 @ 5100 2 T1 1 0 7F
LT !,@ 3C88 2 T1 1 0 07
LT ! 3C80 2 NOP 1
LT @ 3C00 2 T1 1 0 7F
LTA !,@ 3D88 2 T1 1 0 07
LTA ! 3D80 2 NOP 1
LTA @ 3D00 2 T1 1 0 7F
LTD !,@ 3F88 2 T1 1 0 07
LTD ! 3F80 2 NOP 1
LTD @ 3F00 2 T1 1 0 7F
LTP !,@ 3E88 2 T1 1 0 07
LTP ! 3E80 2 NOP 1
LTP @ 3E00 2 T1 1 0 7F
LTS !,@ 5B88 2 T1 1 0 07
LTS ! 5B80 2 NOP 1
LTS @ 5B00 2 T1 1 0 7F
MAC @,!,@ 5D88 4 TLK 1 0 07
MAC @,! 5D80 4 TLK 1 0 07
MAC @,@ 5D00 4 TLK 1 0 7F
MACD @,!,@ 5C88 4 TLK 1 0 07
MACD @,! 5C80 4 TLK 1 0 07
MACD @,@ 5C00 4 TLK 1 0 7F
MAR !,@ 5588 2 T1 1 0 07
MAR ! 5580 2 NOP 1
MAR @ 5500 2 T1 1 0 7F
MPY !,@ 3888 2 T1 1 0 07
MPY ! 3880 2 NOP 1
MPY @ 3800 2 T1 1 0 7F
MPYA !,@ 3A88 2 T1 1 0 07
MPYA ! 3A80 2 NOP 1
MPYA @ 3A00 2 T1 1 0 7F
MPYK @ A000 2 T1 1 0 1FFF ;13 BIT CONTSTANT
MPYS !,@ 3B88 2 T1 1 0 07
MPYS ! 3B80 2 NOP 1
MPYS @ 3B00 2 T1 1 0 7F
MPYU !,@ CF88 2 T1 1 0 07
MPYU ! CF80 2 NOP 1
MPYU @ CF00 2 T1 1 0 7F
NEG "" CE23 2 NOP 1
NOP "" 5500 2 NOP 1
NORM ! CE82 2 NOP 1 ; C25
NORM "" CEA2 2 NOP 1 ; C20
OR !,@ 4D88 2 T1 1 0 07
OR ! 4D80 2 NOP 1
OR @ 4D00 2 T1 1 0 7F
ORK @,@ D005 4 TLK 1 8 0F00
ORK @ D005 4 TLK 1
OUT !,@,@ E088 2 T1 1 8 0F00
OUT !,@ E080 2 T1 1 8 0F00
OUT @,@ E000 2 TDMA 1 8 0F00
PAC "" CE14 2 NOP 1
POP "" CE1D 2 NOP 1
POPD !,@ 7A88 2 T1 1 0 07
POPD ! 7A80 2 NOP 1
POPD @ 7A00 2 T1 1 0 7F
PSHD !,@ 5488 2 T1 1 0 07
PSHD ! 5480 2 NOP 1
PSHD @ 5400 2 T1 1 0 7F
PUSH "" CE1C 2 NOP 1
RC "" CE30 2 NOP 1
RET "" CE26 2 NOP 1
RFSM "" CE36 2 NOP 1
RHM "" CE38 2 NOP 1
ROL "" CE34 2 NOP 1
ROR "" CE35 2 NOP 1
ROVM "" CE02 2 NOP 1
RPT !,@ 4B88 2 T1 1 0 07
RPT ! 4B80 2 NOP 1
RPT @ 4B00 2 T1 1 0 7F
RPTK @ CB00 2 T1 1 0 00FF ;8 bit constant
RSXM "" CE06 2 NOP 1
RTC "" CE32 2 NOP 1
RTXM "" CE20 2 NOP 1
RXF "" CE0C 2 NOP 1
/* shift count for SACH can only be 0,1, or 4 FOR 32020
/* 0-7 FOR 320c25. For now, build the table specifically for the 320C25
SACH !,@,@ 6888 2 T1 1 8 0700
SACH !,@ 6880 2 T1 1 8 0700
SACH ! 6880 2 NOP 1
SACH @,@ 6800 2 TDMA 1 8 0700
SACH @ 6800 2 T1 1 0 007F
SACL !,@,@ 6088 2 T1 1 8 0700
SACL !,@ 6080 2 T1 1 8 0700
SACL ! 6080 2 NOP 1
SACL @,@ 6000 2 TDMA 1 8 0700
SACL @ 6000 2 T1 1 0 007F
SAR @,!,@ 7088 2 TAR 1 0 0007
SAR @,! 7080 2 TAR 1 0 0007
SAR @,@ 7000 2 TAR 1 0 007F
SBLK @,@ D003 4 TLK 1 8 0F00
SBLK @ D003 4 TLK 1
SBRK @ 7F00 2 T1 1 0 00FF
SC "" CE31 2 NOP 1
SFL "" CE18 2 NOP 1
SFR "" CE19 2 NOP 1
SFSM "" CE37 2 NOP 1
SHM "" CE39 2 NOP 1
SOVM "" CE03 2 NOP 1
SPAC "" CE16 2 NOP 1
SPH !,@ 7D88 2 T1 1 0 07
SPH ! 7D80 2 NOP 1
SPH @ 7D00 2 T1 1 0 7F
SPL !,@ 7C88 2 T1 1 0 07
SPL ! 7C80 2 NOP 1
SPL @ 7C00 2 T1 1 0 7F
SPM @ CE08 2 T1 1 0 03 ;2 bit constant
SQRA !,@ 3988 2 T1 1 0 07
SQRA ! 3980 2 NOP 1
SQRA @ 3900 2 T1 1 0 7F
SQRS !,@ 5A88 2 T1 1 0 07
SQRS ! 5A80 2 NOP 1
SQRS @ 5A00 2 T1 1 0 7F
SST !,@ 7888 2 T1 1 0 07
SST ! 7880 2 NOP 1
SST @ 7800 2 T1 1 0 7F
SST1 !,@ 7988 2 T1 1 0 07
SST1 ! 7980 2 NOP 1
SST1 @ 7900 2 T1 1 0 7F
SSXM "" CE07 2 NOP 1
STC "" CE33 2 NOP 1
STXM "" CE21 2 NOP 1
SUB !,@,@ 1088 2 T1 1 8 0F00
SUB !,@ 1080 2 T1 1 8 0F00
SUB ! 1080 2 NOP 1
SUB @,@ 1000 2 TDMA 1 8 0F00
SUB @ 1000 2 T1 1 0 007F
SUBB !,@ 4F88 2 T1 1 0 07
SUBB ! 4F80 2 NOP 1
SUBB @ 4F00 2 T1 1 0 7F
SUBC !,@ 4788 2 T1 1 0 07
SUBC ! 4780 2 NOP 1
SUBC @ 4700 2 T1 1 0 7F
SUBH !,@ 4488 2 T1 1 0 07
SUBH ! 4480 2 NOP 1
SUBH @ 4400 2 T1 1 0 7F
SUBK @ CD00 2 T1 1 0 00FF
SUBS !,@ 4588 2 T1 1 0 07
SUBS ! 4580 2 NOP 1
SUBS @ 4500 2 T1 1 0 7F
SUBT !,@ 4688 2 T1 1 0 07
SUBT ! 4680 2 NOP 1
SUBT @ 4600 2 T1 1 0 7F
SXF "" CE0D 2 NOP 1
TBLR !,@ 5888 2 T1 1 0 07
TBLR ! 5880 2 NOP 1
TBLR @ 5800 2 T1 1 0 7F
TBLW !,@ 5988 2 T1 1 0 07
TBLW ! 5980 2 NOP 1
TBLW @ 5900 2 T1 1 0 7F
TRAP "" CE1E 2 NOP 1
XOR !,@ 4C88 2 T1 1 0 07
XOR ! 4C80 2 NOP 1
XOR @ 4C00 2 T1 1 0 7F
XORK @,@ D006 4 TLK 1 8 0F00
XORK @ D006 4 TLK 1
ZAC "" CA00 2 NOP 1
ZALH !,@ 4088 2 T1 1 0 07
ZALH ! 4080 2 NOP 1
ZALH @ 4000 2 T1 1 0 7F
ZALR !,@ 7B88 2 T1 1 0 07
ZALR ! 7B80 2 NOP 1
ZALR @ 7B00 2 T1 1 0 7F
ZALS !,@ 4188 2 T1 1 0 07
ZALS ! 4180 2 NOP 1
ZALS @ 4100 2 T1 1 0 7F

281
XSource/bin/TASM48.TAB

@ -0,0 +1,281 @@
"TASM 8048 Assembler. "
/****************************************************************************
/* $Id: tasm48.tab 1.1 1993/07/31 01:12:40 toma Exp $
/****************************************************************************
/* This is the instruction set definition table for the 8048 version of TASM.
/* Thomas N. Anderson, Speech Technology Incorported, June 1987.
/* CLASS bits are assigned as follows:
/* bit 0 = 8X48, 8035, 8039, 8049 instructions
/* bit 1 = 8X41A
/* bit 2 = 8022
/* bit 3 = 8021
/* Note that some of the base instructions should be disabled for the
/* 8041, 8022, and 8021, but are not.
/*
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT OR */
/*-------------------------------------------*/
ADD A,R0 68 1 NOP 1
ADD A,R1 69 1 NOP 1
ADD A,R2 6A 1 NOP 1
ADD A,R3 6B 1 NOP 1
ADD A,R4 6C 1 NOP 1
ADD A,R5 6D 1 NOP 1
ADD A,R6 6E 1 NOP 1
ADD A,R7 6F 1 NOP 1
ADD A,@R0 60 1 NOP 1
ADD A,@R1 61 1 NOP 1
ADD A,#* 03 2 NOP 1
ADDC A,R0 78 1 NOP 1
ADDC A,R1 79 1 NOP 1
ADDC A,R2 7A 1 NOP 1
ADDC A,R3 7B 1 NOP 1
ADDC A,R4 7C 1 NOP 1
ADDC A,R5 7D 1 NOP 1
ADDC A,R6 7E 1 NOP 1
ADDC A,R7 7F 1 NOP 1
ADDC A,@R0 70 1 NOP 1
ADDC A,@R1 71 1 NOP 1
ADDC A,#* 13 2 NOP 1
ANL A,R0 58 1 NOP 1
ANL A,R1 59 1 NOP 1
ANL A,R2 5A 1 NOP 1
ANL A,R3 5B 1 NOP 1
ANL A,R4 5C 1 NOP 1
ANL A,R5 5D 1 NOP 1
ANL A,R6 5E 1 NOP 1
ANL A,R7 5F 1 NOP 1
ANL A,@R0 50 1 NOP 1
ANL A,@R1 51 1 NOP 1
ANL A,#* 53 2 NOP 1
ANL BUS,#* 98 2 NOP 1
ANL P1,#* 99 2 NOP 1
ANL P2,#* 9A 2 NOP 1
ANLD P4,A 9C 1 NOP 1
ANLD P5,A 9D 1 NOP 1
ANLD P6,A 9E 1 NOP 1
ANLD P7,A 9F 1 NOP 1
CALL * 14 2 JMP 1
CLR A 27 1 NOP 1
CLR C 97 1 NOP 1
CLR F0 85 1 NOP 1
CLR F1 A5 1 NOP 1
CPL A 37 1 NOP 1
CPL C A7 1 NOP 1
CPL F0 95 1 NOP 1
CPL F1 B5 1 NOP 1
DA A 57 1 NOP 1
DEC A 07 1 NOP 1
DEC R0 C8 1 NOP 1
DEC R1 C9 1 NOP 1
DEC R2 CA 1 NOP 1
DEC R3 CB 1 NOP 1
DEC R4 CC 1 NOP 1
DEC R5 CD 1 NOP 1
DEC R6 CE 1 NOP 1
DEC R7 CF 1 NOP 1
DIS I 15 1 NOP 1
DIS TCNTI 35 1 NOP 1
DJNZ R0,* E8 2 JTHISPAGE 1
DJNZ R1,* E9 2 JTHISPAGE 1
DJNZ R2,* EA 2 JTHISPAGE 1
DJNZ R3,* EB 2 JTHISPAGE 1
DJNZ R4,* EC 2 JTHISPAGE 1
DJNZ R5,* ED 2 JTHISPAGE 1
DJNZ R6,* EE 2 JTHISPAGE 1
DJNZ R7,* EF 2 JTHISPAGE 1
EN DMA E5 1 NOP 2 ;8041
EN FLAGS F5 1 NOP 2 ;8041
EN I 05 1 NOP 1
EN TCNTI 25 1 NOP 1
ENT0 CLK 75 1 NOP 1
IN A,DBB 22 1 NOP 2 ;8041
IN A,P0 08 1 NOP 8 ;8021
IN A,P1 09 1 NOP 1
IN A,P2 0A 1 NOP 1
INC A 17 1 NOP 1
INC R0 18 1 NOP 1
INC R1 19 1 NOP 1
INC R2 1A 1 NOP 1
INC R3 1B 1 NOP 1
INC R4 1C 1 NOP 1
INC R5 1D 1 NOP 1
INC R6 1E 1 NOP 1
INC R7 1F 1 NOP 1
INC @R0 10 1 NOP 1
INC @R1 11 1 NOP 1
INS A,BUS 08 1 NOP 1
JB0 * 12 2 JTHISPAGE 1
JB1 * 32 2 JTHISPAGE 1
JB2 * 52 2 JTHISPAGE 1
JB3 * 72 2 JTHISPAGE 1
JB4 * 92 2 JTHISPAGE 1
JB5 * B2 2 JTHISPAGE 1
JB6 * D2 2 JTHISPAGE 1
JB7 * F2 2 JTHISPAGE 1
JMP * 04 2 JMP 1
JC * F6 2 JTHISPAGE 1
JF0 * B6 2 JTHISPAGE 1
JF1 * 76 2 JTHISPAGE 1
JNC * E6 2 JTHISPAGE 1
JNI * 86 2 JTHISPAGE 1
JNIBF * D6 2 JTHISPAGE 2 ;8041
JNT0 * 26 2 JTHISPAGE 1
JNT1 * 46 2 JTHISPAGE 1
JNZ * 96 2 JTHISPAGE 1
JOBF * 86 2 JTHISPAGE 2 ;8041
JTF * 16 2 JTHISPAGE 1
JT0 * 36 2 JTHISPAGE 1
JT1 * 56 2 JTHISPAGE 1
JZ * C6 2 JTHISPAGE 1
JMPP @A B3 1 NOP 1
MOV A,PSW C7 1 NOP 1
MOV A,R0 F8 1 NOP 1
MOV A,R1 F9 1 NOP 1
MOV A,R2 FA 1 NOP 1
MOV A,R3 FB 1 NOP 1
MOV A,R4 FC 1 NOP 1
MOV A,R5 FD 1 NOP 1
MOV A,R6 FE 1 NOP 1
MOV A,R7 FF 1 NOP 1
MOV A,T 42 1 NOP 1
MOV A,@R0 F0 1 NOP 1
MOV A,@R1 F1 1 NOP 1
MOV A,#* 23 2 NOP 1
MOV PSW,A D7 1 NOP 1
MOV R0,A A8 1 NOP 1
MOV R1,A A9 1 NOP 1
MOV R2,A AA 1 NOP 1
MOV R3,A AB 1 NOP 1
MOV R4,A AC 1 NOP 1
MOV R5,A AD 1 NOP 1
MOV R6,A AE 1 NOP 1
MOV R7,A AF 1 NOP 1
MOV R0,#* B8 2 NOP 1
MOV R1,#* B9 2 NOP 1
MOV R2,#* BA 2 NOP 1
MOV R3,#* BB 2 NOP 1
MOV R4,#* BC 2 NOP 1
MOV R5,#* BD 2 NOP 1
MOV R6,#* BE 2 NOP 1
MOV R7,#* BF 2 NOP 1
MOV STS,A 90 1 NOP 2 ;8041
MOV T,A 62 1 NOP 1
MOV @R0,A A0 1 NOP 1
MOV @R1,A A1 1 NOP 1
MOV @R0,#* B0 2 NOP 1
MOV @R1,#* B1 2 NOP 1
MOVD A,P4 0C 1 NOP 1
MOVD A,P5 0D 1 NOP 1
MOVD A,P6 0E 1 NOP 1
MOVD A,P7 0F 1 NOP 1
MOVD P4,A 3C 1 NOP 1
MOVD P5,A 3D 1 NOP 1
MOVD P6,A 3E 1 NOP 1
MOVD P7,A 3F 1 NOP 1
MOVP A,@A A3 1 NOP 1
MOVP3 A,@A E3 1 NOP 1
MOVX A,@R0 80 1 NOP 1
MOVX A,@R1 81 1 NOP 1
MOVX @R0,A 90 1 NOP 1
MOVX @R1,A 91 1 NOP 1
NOP "" 00 1 NOP 1
ORL A,R0 48 1 NOP 1
ORL A,R1 49 1 NOP 1
ORL A,R2 4A 1 NOP 1
ORL A,R3 4B 1 NOP 1
ORL A,R4 4C 1 NOP 1
ORL A,R5 4D 1 NOP 1
ORL A,R6 4E 1 NOP 1
ORL A,R7 4F 1 NOP 1
ORL A,@R0 40 1 NOP 1
ORL A,@R1 41 1 NOP 1
ORL A,#* 43 2 NOP 1
ORL BUS,#* 88 2 NOP 1
ORL P1,#* 89 2 NOP 1
ORL P2,#* 8A 2 NOP 1
ORLD P4,A 8C 1 NOP 1
ORLD P5,A 8D 1 NOP 1
ORLD P6,A 8E 1 NOP 1
ORLD P7,A 8F 1 NOP 1
OUTL BUS,A 02 1 NOP 1
OUT DBB,A 02 1 NOP 2 ;8041
OUTL P0,A 90 1 NOP 8 ;8021
OUTL P1,A 39 1 NOP 1
OUTL P2,A 3A 1 NOP 1
RAD "" 80 1 NOP 4 ;8022
RET "" 83 1 NOP 1
RETI "" 93 1 NOP 4 ;8022
RETR "" 93 1 NOP 1
RL A E7 1 NOP 1
RLC A F7 1 NOP 1
RR A 77 1 NOP 1
RRC A 67 1 NOP 1
SEL AN0 85 1 NOP 4 ;8022
SEL AN1 95 1 NOP 4 ;8022
SEL MB0 E5 1 NOP 1
SEL MB1 F5 1 NOP 1
SEL RB0 C5 1 NOP 1
SEL RB1 D5 1 NOP 1
STOP TCNT 65 1 NOP 1
STRT CNT 45 1 NOP 1
STRT T 55 1 NOP 1
SWAP A 47 1 NOP 1
XCH A,R0 28 1 NOP 1
XCH A,R1 29 1 NOP 1
XCH A,R2 2A 1 NOP 1
XCH A,R3 2B 1 NOP 1
XCH A,R4 2C 1 NOP 1
XCH A,R5 2D 1 NOP 1
XCH A,R6 2E 1 NOP 1
XCH A,R7 2F 1 NOP 1
XCH A,@R0 20 1 NOP 1
XCH A,@R1 21 1 NOP 1
XCHD A,@R0 30 1 NOP 1
XCHD A,@R1 31 1 NOP 1
XRL A,R0 D8 1 NOP 1
XRL A,R1 D9 1 NOP 1
XRL A,R2 DA 1 NOP 1
XRL A,R3 DB 1 NOP 1
XRL A,R4 DC 1 NOP 1
XRL A,R5 DD 1 NOP 1
XRL A,R6 DE 1 NOP 1
XRL A,R7 DF 1 NOP 1
XRL A,@R0 D0 1 NOP 1
XRL A,@R1 D1 1 NOP 1
XRL A,#* D3 2 NOP 1

285
XSource/bin/TASM51.TAB

@ -0,0 +1,285 @@
"TASM 8051 Assembler. "
/****************************************************************************
/* $Id: tasm51.tab 1.1 1993/07/31 01:12:40 toma Exp $
/****************************************************************************
/* This is the instruction set definition table for the 8051 version of TASM.
/* Thomas N. Anderson, Speech Technology Incorported, June 1987.
/*
.NOARGSHIFT
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT OR */
/*-------------------------------------------*/
ACALL * 11 2 JMP 1 0 F800
ADD A,R0 28 1 NOP 1
ADD A,R1 29 1 NOP 1
ADD A,R2 2A 1 NOP 1
ADD A,R3 2B 1 NOP 1
ADD A,R4 2C 1 NOP 1
ADD A,R5 2D 1 NOP 1
ADD A,R6 2E 1 NOP 1
ADD A,R7 2F 1 NOP 1
ADD A,@R0 26 1 NOP 1
ADD A,@R1 27 1 NOP 1
ADD A,#* 24 2 NOP 1
ADD A,* 25 2 NOP 1
ADDC A,R0 38 1 NOP 1
ADDC A,R1 39 1 NOP 1
ADDC A,R2 3A 1 NOP 1
ADDC A,R3 3B 1 NOP 1
ADDC A,R4 3C 1 NOP 1
ADDC A,R5 3D 1 NOP 1
ADDC A,R6 3E 1 NOP 1
ADDC A,R7 3F 1 NOP 1
ADDC A,@R0 36 1 NOP 1
ADDC A,@R1 37 1 NOP 1
ADDC A,#* 34 2 NOP 1
ADDC A,* 35 2 NOP 1
AJMP * 01 2 JMP 1 0 F800
ANL A,R0 58 1 NOP 1
ANL A,R1 59 1 NOP 1
ANL A,R2 5A 1 NOP 1
ANL A,R3 5B 1 NOP 1
ANL A,R4 5C 1 NOP 1
ANL A,R5 5D 1 NOP 1
ANL A,R6 5E 1 NOP 1
ANL A,R7 5F 1 NOP 1
ANL A,@R0 56 1 NOP 1
ANL A,@R1 57 1 NOP 1
ANL A,#* 54 2 NOP 1
ANL A,* 55 2 NOP 1
ANL C,/* b0 2 NOP 1
ANL C,* 82 2 NOP 1
ANL *,A 52 2 NOP 1
ANL *,#* 53 3 COMBINE 1
CJNE A,#*,* b4 3 CR 1
CJNE A,*,* b5 3 CR 1
CJNE R0,#*,* b8 3 CR 1
CJNE R1,#*,* b9 3 CR 1
CJNE R2,#*,* ba 3 CR 1
CJNE R3,#*,* bb 3 CR 1
CJNE R4,#*,* bc 3 CR 1
CJNE R5,#*,* bd 3 CR 1
CJNE R6,#*,* be 3 CR 1
CJNE R7,#*,* bf 3 CR 1
CJNE @R0,#*,* b6 3 CR 1
CJNE @R1,#*,* b7 3 CR 1
CLR A e4 1 NOP 1
CLR C c3 1 NOP 1
CLR * c2 2 NOP 1
CPL A f4 1 NOP 1
CPL C b3 1 NOP 1
CPL * b2 2 NOP 1
DA A d4 1 NOP 1
DEC A 14 1 NOP 1
DEC R0 18 1 NOP 1
DEC R1 19 1 NOP 1
DEC R2 1A 1 NOP 1
DEC R3 1B 1 NOP 1
DEC R4 1C 1 NOP 1
DEC R5 1D 1 NOP 1
DEC R6 1E 1 NOP 1
DEC R7 1F 1 NOP 1
DEC @R0 16 1 NOP 1
DEC @R1 17 1 NOP 1
DEC * 15 2 NOP 1
DIV AB 84 1 NOP 1
DJNZ R0,* d8 2 R1 1
DJNZ R1,* d9 2 R1 1
DJNZ R2,* dA 2 R1 1
DJNZ R3,* dB 2 R1 1
DJNZ R4,* dC 2 R1 1
DJNZ R5,* dD 2 R1 1
DJNZ R6,* dE 2 R1 1
DJNZ R7,* dF 2 R1 1
DJNZ *,* d5 3 CR 1
INC A 04 1 NOP 1
INC R0 08 1 NOP 1
INC R1 09 1 NOP 1
INC R2 0A 1 NOP 1
INC R3 0B 1 NOP 1
INC R4 0C 1 NOP 1
INC R5 0D 1 NOP 1
INC R6 0E 1 NOP 1
INC R7 0F 1 NOP 1
INC @R0 06 1 NOP 1
INC @R1 07 1 NOP 1
INC DPTR a3 1 NOP 1
INC * 05 2 NOP 1
JB *,* 20 3 CR 1
JBC *,* 10 3 CR 1
JC * 40 2 R1 1
JMP @A+DPTR 73 1 NOP 1
JNB *,* 30 3 CR 1
JNC * 50 2 R1 1
JNZ * 70 2 R1 1
JZ * 60 2 R1 1
LCALL * 12 3 SWAP 1
LJMP * 02 3 SWAP 1
MOV A,R0 e8 1 NOP 1
MOV A,R1 e9 1 NOP 1
MOV A,R2 eA 1 NOP 1
MOV A,R3 eB 1 NOP 1
MOV A,R4 eC 1 NOP 1
MOV A,R5 eD 1 NOP 1
MOV A,R6 eE 1 NOP 1
MOV A,R7 eF 1 NOP 1
MOV A,@R0 e6 1 NOP 1
MOV A,@R1 e7 1 NOP 1
MOV A,#* 74 2 NOP 1
MOV A,* e5 2 NOP 1
MOV C,* a2 2 NOP 1
MOV DPTR,#* 90 3 SWAP 1
MOV R0,A f8 1 NOP 1
MOV R1,A f9 1 NOP 1
MOV R2,A fA 1 NOP 1
MOV R3,A fB 1 NOP 1
MOV R4,A fC 1 NOP 1
MOV R5,A fD 1 NOP 1
MOV R6,A fE 1 NOP 1
MOV R7,A fF 1 NOP 1
MOV R0,#* 78 2 NOP 1
MOV R1,#* 79 2 NOP 1
MOV R2,#* 7A 2 NOP 1
MOV R3,#* 7B 2 NOP 1
MOV R4,#* 7C 2 NOP 1
MOV R5,#* 7D 2 NOP 1
MOV R6,#* 7E 2 NOP 1
MOV R7,#* 7F 2 NOP 1
MOV R0,* a8 2 NOP 1
MOV R1,* a9 2 NOP 1
MOV R2,* aA 2 NOP 1
MOV R3,* aB 2 NOP 1
MOV R4,* aC 2 NOP 1
MOV R5,* aD 2 NOP 1
MOV R6,* aE 2 NOP 1
MOV R7,* aF 2 NOP 1
MOV @R0,A f6 1 NOP 1
MOV @R1,A f7 1 NOP 1
MOV @R0,#* 76 2 NOP 1
MOV @R1,#* 77 2 NOP 1
MOV @R0,* a6 2 NOP 1
MOV @R1,* a7 2 NOP 1
MOV *,A f5 2 NOP 1
MOV *,C 92 2 NOP 1
MOV *,R0 88 2 NOP 1
MOV *,R1 89 2 NOP 1
MOV *,R2 8A 2 NOP 1
MOV *,R3 8B 2 NOP 1
MOV *,R4 8C 2 NOP 1
MOV *,R5 8D 2 NOP 1
MOV *,R6 8E 2 NOP 1
MOV *,R7 8F 2 NOP 1
MOV *,@R0 86 2 NOP 1
MOV *,@R1 87 2 NOP 1
MOV *,#* 75 3 COMBINE 1
MOV *,* 85 3 CSWAP 1
MOVC A,@A+DPTR 93 1 NOP 1
MOVC A,@A+PC 83 1 NOP 1
MOVX A,@R0 e2 1 NOP 1
MOVX A,@R1 e3 1 NOP 1
MOVX A,@DPTR e0 1 NOP 1
MOVX @R0,A f2 1 NOP 1
MOVX @R1,A f3 1 NOP 1
MOVX @DPTR,A f0 1 NOP 1
MUL AB a4 1 NOP 1
NOP "" 00 1 NOP 1
ORL A,R0 48 1 NOP 1
ORL A,R1 49 1 NOP 1
ORL A,R2 4A 1 NOP 1
ORL A,R3 4B 1 NOP 1
ORL A,R4 4C 1 NOP 1
ORL A,R5 4D 1 NOP 1
ORL A,R6 4E 1 NOP 1
ORL A,R7 4F 1 NOP 1
ORL A,@R0 46 1 NOP 1
ORL A,@R1 47 1 NOP 1
ORL A,#* 44 2 NOP 1
ORL A,* 45 2 NOP 1
ORL C,/* a0 2 NOP 1
ORL C,* 72 2 NOP 1
ORL *,A 42 2 NOP 1
ORL *,#* 43 3 COMBINE 1
POP * d0 2 NOP 1
PUSH * c0 2 NOP 1
RET "" 22 1 NOP 1
RETI "" 32 1 NOP 1
RL A 23 1 NOP 1
RLC A 33 1 NOP 1
RR A 03 1 NOP 1
RRC A 13 1 NOP 1
SETB C d3 1 NOP 1
SETB * d2 2 NOP 1
SJMP * 80 2 R1 1
SUBB A,R0 98 1 NOP 1
SUBB A,R1 99 1 NOP 1
SUBB A,R2 9A 1 NOP 1
SUBB A,R3 9B 1 NOP 1
SUBB A,R4 9C 1 NOP 1
SUBB A,R5 9D 1 NOP 1
SUBB A,R6 9E 1 NOP 1
SUBB A,R7 9F 1 NOP 1
SUBB A,@R0 96 1 NOP 1
SUBB A,@R1 97 1 NOP 1
SUBB A,#* 94 2 NOP 1
SUBB A,* 95 2 NOP 1
SWAP A c4 1 NOP 1
XCH A,R0 c8 1 NOP 1
XCH A,R1 c9 1 NOP 1
XCH A,R2 cA 1 NOP 1
XCH A,R3 cB 1 NOP 1
XCH A,R4 cC 1 NOP 1
XCH A,R5 cD 1 NOP 1
XCH A,R6 cE 1 NOP 1
XCH A,R7 cF 1 NOP 1
XCH A,@R0 c6 1 NOP 1
XCH A,@R1 c7 1 NOP 1
XCH A,* c5 2 NOP 1
XCHD A,@R0 d6 1 NOP 1
XCHD A,@R1 d7 1 NOP 1
XRL A,R0 68 1 NOP 1
XRL A,R1 69 1 NOP 1
XRL A,R2 6A 1 NOP 1
XRL A,R3 6B 1 NOP 1
XRL A,R4 6C 1 NOP 1
XRL A,R5 6D 1 NOP 1
XRL A,R6 6E 1 NOP 1
XRL A,R7 6F 1 NOP 1
XRL A,@R0 66 1 NOP 1
XRL A,@R1 67 1 NOP 1
XRL A,#* 64 2 NOP 1
XRL A,* 65 2 NOP 1
XRL *,A 62 2 NOP 1
XRL *,#* 63 3 COMBINE 1

222
XSource/bin/TASM65.TAB

@ -0,0 +1,222 @@
"TASM 6502 Assembler. "
/****************************************************************************
/* $Id: tasm65.tab 1.1 1993/07/31 01:12:40 toma Exp $
/****************************************************************************
/* This is the instruction set definition table for the 6502 version of TASM.
/* Thomas N. Anderson, Speech Technology Incorported, June 1987.
/* Note that there are two classes of extended instructions beyond
/* the standard set. The classes are assigned bits as follows:
/* bit 0 = standard set
/* bit 1 = extended instructions for R65C02
/* bit 2 = extended instructions for R65C00/21
/*
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT OR */
/*-------------------------------------------*/
ADC #* 69 2 NOP 1
ADC (*,X) 61 2 NOP 1
ADC (*),Y 71 2 NOP 1
ADC (*) 72 2 NOP 2
ADC *,X 7D 3 ZP 1
ADC *,Y 79 3 NOP 1
ADC * 6D 3 ZP 1
AND #* 29 2 NOP 1
AND (*,X) 21 2 NOP 1
AND (*),Y 31 2 NOP 1
AND (*) 32 2 NOP 2
AND *,X 3D 3 ZP 1
AND *,Y 39 3 NOP 1
AND * 2D 3 ZP 1
ASL A 0A 1 NOP 1
ASL *,X 1E 3 ZP 1
ASL * 0E 3 ZP 1
BBR0 *,* 0f 3 CR 6
BBR1 *,* 1f 3 CR 6
BBR2 *,* 2f 3 CR 6
BBR3 *,* 3f 3 CR 6
BBR4 *,* 4f 3 CR 6
BBR5 *,* 5f 3 CR 6
BBR6 *,* 6f 3 CR 6
BBR7 *,* 7f 3 CR 6
BBS0 *,* 8f 3 CR 6
BBS1 *,* 9f 3 CR 6
BBS2 *,* af 3 CR 6
BBS3 *,* bf 3 CR 6
BBS4 *,* cf 3 CR 6
BBS5 *,* df 3 CR 6
BBS6 *,* ef 3 CR 6
BBS7 *,* ff 3 CR 6
BCC * 90 2 R1 1
BCS * B0 2 R1 1
BEQ * F0 2 R1 1
BMI * 30 2 R1 1
BNE * D0 2 R1 1
BPL * 10 2 R1 1
BRA * 80 2 R1 6
BVC * 50 2 R1 1
BVS * 70 2 R1 1
BIT #* 89 2 NOP 2
BIT *,X 3C 3 ZP 2
BIT * 2C 3 ZP 1
BRK "" 00 1 NOP 1
CLC "" 18 1 NOP 1
CLD "" D8 1 NOP 1
CLI "" 58 1 NOP 1
CLV "" B8 1 NOP 1
CMP #* C9 2 NOP 1
CMP (*,X) C1 2 NOP 1
CMP (*),Y D1 2 NOP 1
CMP (*) D2 2 NOP 2
CMP *,X DD 3 ZP 1
CMP *,Y D9 3 NOP 1
CMP * CD 3 ZP 1
CPX #* E0 2 NOP 1
CPX * EC 3 ZP 1
CPY #* C0 2 NOP 1
CPY * CC 3 ZP 1
DEC A 3A 1 NOP 2
DEC *,X DE 3 ZP 1
DEC * CE 3 ZP 1
DEX "" CA 1 NOP 1
DEY "" 88 1 NOP 1
EOR #* 49 2 NOP 1
EOR (*,X) 41 2 NOP 1
EOR (*),Y 51 2 NOP 1
EOR (*) 52 2 NOP 2
EOR *,X 5D 3 ZP 1
EOR *,Y 59 3 NOP 1
EOR * 4D 3 ZP 1
INC A 1A 1 NOP 2
INC *,X FE 3 ZP 1
INC * EE 3 ZP 1
INX "" E8 1 NOP 1
INY "" C8 1 NOP 1
JMP (*,X) 7C 3 NOP 2
JMP (*) 6C 3 NOP 1
JMP * 4C 3 NOP 1
JSR * 20 3 NOP 1
LDA #* A9 2 NOP 1
LDA (*,X) A1 2 NOP 1
LDA (*),Y B1 2 NOP 1
LDA (*) B2 2 NOP 2
LDA *,X BD 3 ZP 1
LDA *,Y B9 3 NOP 1
LDA * AD 3 ZP 1
LDX #* A2 2 NOP 1
LDX *,Y BE 3 ZP 1
LDX * AE 3 ZP 1
LDY #* A0 2 NOP 1
LDY *,X BC 3 ZP 1
LDY * AC 3 ZP 1
LSR A 4A 1 NOP 1
LSR *,X 5E 3 ZP 1
LSR * 4E 3 ZP 1
MUL "" 02 1 NOP 4 /* R65C00/21 only*/
NOP "" EA 1 NOP 1
ORA #* 09 2 NOP 1
ORA (*,X) 01 2 NOP 1
ORA (*),Y 11 2 NOP 1
ORA (*) 12 2 NOP 2
ORA *,X 1D 3 ZP 1
ORA *,Y 19 3 NOP 1
ORA * 0D 3 ZP 1
PHA "" 48 1 NOP 1
PHP "" 08 1 NOP 1
PHX "" DA 1 NOP 6
PHY "" 5A 1 NOP 6
PLA "" 68 1 NOP 1
PLP "" 28 1 NOP 1
PLX "" FA 1 NOP 6
PLY "" 7A 1 NOP 6
RMB0 * 07 2 NOP 6
RMB1 * 17 2 NOP 6
RMB2 * 27 2 NOP 6
RMB3 * 37 2 NOP 6
RMB4 * 47 2 NOP 6
RMB5 * 57 2 NOP 6
RMB6 * 67 2 NOP 6
RMB7 * 77 2 NOP 6
ROL A 2A 1 NOP 1
ROL *,X 3E 3 ZP 1
ROL * 2E 3 ZP 1
ROR A 6A 1 NOP 1
ROR *,X 7E 3 ZP 1
ROR * 6E 3 ZP 1
RTI "" 40 1 NOP 1
RTS "" 60 1 NOP 1
SBC #* E9 2 NOP 1
SBC (*,X) E1 2 NOP 1
SBC (*),Y F1 2 NOP 1
SBC (*) F2 2 NOP 2
SBC *,X FD 3 ZP 1
SBC *,Y F9 3 NOP 1
SBC * ED 3 ZP 1
SEC "" 38 1 NOP 1
SED "" F8 1 NOP 1
SEI "" 78 1 NOP 1
SMB0 * 87 2 NOP 6
SMB1 * 97 2 NOP 6
SMB2 * a7 2 NOP 6
SMB3 * b7 2 NOP 6
SMB4 * c7 2 NOP 6
SMB5 * d7 2 NOP 6
SMB6 * e7 2 NOP 6
SMB7 * f7 2 NOP 6
STA (*,X) 81 2 NOP 1
STA (*),Y 91 2 NOP 1
STA (*) 92 2 NOP 2
STA *,X 9D 3 ZP 1
STA *,Y 99 3 NOP 1
STA * 8D 3 ZP 1
STX *,Y 96 2 ZP 1
STX * 8E 3 ZP 1
STY *,X 94 2 NOP 1
STY * 8C 3 ZP 1
STZ *,X 9e 3 ZP 2
STZ * 9c 3 ZP 2
TAX "" AA 1 NOP 1
TAY "" A8 1 NOP 1
TRB * 1c 3 ZP 2
TSB * 0c 3 ZP 2
TSX "" BA 1 NOP 1
TXA "" 8A 1 NOP 1
TXS "" 9A 1 NOP 1
TYA "" 98 1 NOP 1

348
XSource/bin/TASM68.TAB

@ -0,0 +1,348 @@
"TASM 6800-6811 Assembler"
/****************************************************************************
/* $Id: tasm68.tab 1.1 1993/07/31 01:12:40 toma Exp $
/****************************************************************************
/* Originally submitted by Richard P. White, June 4,1989 */
/* Corrected and enhanced by T.N. Anderson, STI */
/* Enhanced for the 68HC11 by George Blat, Nov 3, 1990
/* Class bits defined as follows:
/*
/* bit 0 for 6800
/* bit 1 for 6801/6803
/* bit 2 for 68HC11
/*
/* Note that TASM deviates from motorola syntax for BCLR, BSET,
/* BRCLR, and BRSET instructions. TASM requires commas between
/* each arg. Motorola requires white space before the make and
/* label args.
.MSFIRST
ABA "" 1B 1 NOP 1
ABX "" 3A 1 NOP 2
ABY "" 183A 2 NOP 4
ADCA #* 89 2 NOP 1
ADCA *,Y 18A9 3 NOP 4
ADCA *,X A9 2 NOP 1
ADCA * B9 3 MZERO 1
ADCB #* C9 2 NOP 1
ADCB *,Y 18E9 3 NOP 4
ADCB *,X E9 2 NOP 1
ADCB * F9 3 MZERO 1
ADDA #* 8B 2 NOP 1
ADDA *,Y 18AB 3 NOP 4
ADDA *,X AB 2 NOP 1
ADDA * BB 3 MZERO 1
ADDB #* CB 2 NOP 1
ADDB *,Y 18EB 3 NOP 4
ADDB *,X EB 2 NOP 1
ADDB * FB 3 MZERO 1
ADDD #* C3 3 SWAP 2
ADDD *,Y 18E3 3 NOP 4
ADDD *,X E3 2 NOP 2
ADDD * F3 3 MZERO 2
ANDA #* 84 2 NOP 1
ANDA *,Y 18A4 3 NOP 4
ANDA *,X A4 2 NOP 1
ANDA * B4 3 MZERO 1
ANDB #* C4 2 NOP 1
ANDB *,Y 18E4 3 NOP 4
ANDB *,X E4 2 NOP 1
ANDB * F4 3 MZERO 1
ASL *,Y 1868 3 NOP 4
ASL *,X 68 2 NOP 1
ASL * 78 3 SWAP 1
ASLA "" 48 1 NOP 1
ASLB "" 58 1 NOP 1
ASLD "" 05 1 NOP 2
ASR *,Y 1867 3 NOP 4
ASR *,X 67 2 NOP 1
ASR * 77 3 SWAP 1
ASRA "" 47 1 NOP 1
ASRB "" 57 1 NOP 1
BCC * 24 2 R1 1
BCLR *,X,* 1D 3 COMB 4
BCLR *,Y,* 181D 4 COMB 4
BCLR *,#* 15 3 COMB 4 /* allow # since mask is immediate data
BCLR *,* 15 3 COMB 4
BCS * 25 2 R1 1
BEQ * 27 2 R1 1
BGE * 2C 2 R1 1
BGT * 2E 2 R1 1
BHI * 22 2 R1 1
BHS * 24 2 R1 1
BITA #* 85 2 NOP 1
BITA *,Y 18A5 3 NOP 4
BITA *,X A5 2 NOP 1
BITA * B5 3 MZERO 1
BITB #* C5 2 NOP 1
BITB *,Y 18E5 3 NOP 4
BITB *,X E5 2 NOP 1
BITB * F5 3 MZERO 1
BLE * 2F 2 R1 1
BLO * 25 2 R1 1
BLS * 23 2 R1 1
BLT * 2D 2 R1 1
BMI * 2B 2 R1 1
BNE * 26 2 R1 1
BPL * 2A 2 R1 1
BRA * 20 2 R1 1
BRCLR *,X,*,* 1F 4 3REL 4
BRCLR *,Y,*,* 181F 5 3REL 4
BRCLR *,*,* 13 4 3REL 4
BRN * 21 2 R1 2 /* NOT SURE ABOUT 6803 */
BRSET *,X,*,* 1E 4 3REL 4
BRSET *,Y,*,* 181E 5 3REL 4
BRSET *,*,* 12 4 3REL 4
BSET *,X,* 1C 3 COMB 4
BSET *,Y,* 181C 4 COMB 4
BSET *,#* 14 3 COMB 4 /* allow #
BSET *,* 14 3 COMB 4
BSR * 8D 2 R1 1
BVC * 28 2 R1 1
BVS * 29 2 R1 1
CBA "" 11 1 NOP 1
CLC "" 0C 1 NOP 1
CLI "" 0E 1 NOP 1
CLR *,Y 186F 3 NOP 4
CLR *,X 6F 2 NOP 1
CLR * 7F 3 SWAP 1
CLRA "" 4F 1 NOP 1
CLRB "" 5F 1 NOP 1
CLV "" 0A 1 NOP 1
CMPA #* 81 2 NOP 1
CMPA *,X A1 2 NOP 1
CMPA *,Y 18A1 3 NOP 4
CMPA * B1 3 MZERO 1
CMPB #* C1 2 NOP 1
CMPB *,Y 18E1 3 NOP 4
CMPB *,X E1 2 NOP 1
CMPB * F1 3 MZERO 1
CMPD #* 1A83 4 SWAP 4 /* alias for CPD */
CMPD *,X 1AA3 3 NOP 4
CMPD *,Y CDA3 3 NOP 4
CMPD * 1AB3 4 MZERO 4
COM *,X 63 2 NOP 1
COM *,Y 1863 3 NOP 4
COM * 73 3 SWAP 1
COMA "" 43 1 NOP 1
COMB "" 53 1 NOP 1
CPD #* 1A83 4 SWAP 4
CPD *,X 1AA3 3 NOP 4
CPD *,Y CDA3 3 NOP 4
CPD * 1AB3 4 MZERO 4
CPX #* 8C 3 SWAP 1
CPX *,X AC 2 NOP 1
CPX *,Y CDAC 3 NOP 4
CPX * BC 3 MZERO 1
CPY #* 188C 4 SWAP 4
CPY *,Y 18AC 3 NOP 4
CPY *,X 1AAC 3 NOP 4
CPY * 18BC 4 MZERO 4
DAA "" 19 1 NOP 1
DEC *,Y 186A 3 NOP 4
DEC *,X 6A 2 NOP 1
DEC * 7A 3 SWAP 1
DECA "" 4A 1 NOP 1
DECB "" 5A 1 NOP 1
DES "" 34 1 NOP 1
DEX "" 09 1 NOP 1
DEY "" 1809 2 NOP 4
EORA #* 88 2 NOP 1
EORA *,Y 18A8 3 NOP 4
EORA *,X A8 2 NOP 1
EORA * B8 3 MZERO 1
EORB #* C8 2 NOP 1
EORB *,Y 18E8 3 NOP 4
EORB *,X E8 2 NOP 1
EORB * F8 3 MZERO 1
FDIV "" 03 1 NOP 4
IDIV "" 02 1 NOP 4
INC *,Y 186C 3 NOP 4
INC *,X 6C 2 NOP 1
INC * 7C 3 SWAP 1
INCA "" 4C 1 NOP 1
INCB "" 5C 1 NOP 1
INS "" 31 1 NOP 1
INX "" 08 1 NOP 1
INY "" 1808 2 NOP 4
JMP *,Y 186E 3 NOP 4
JMP *,X 6E 2 NOP 1
JMP * 7E 3 SWAP 1
JSR *,Y 18AD 3 NOP 4
JSR *,X AD 2 NOP 1
JSR * BD 3 MZERO 1
LDAA #* 86 2 NOP 1
LDAA *,Y 18A6 3 NOP 4
LDAA *,X A6 2 NOP 1
LDAA >* B6 3 SWAP 1 /* Force EXT mode */
LDAA * B6 3 MZERO 1
LDAB #* C6 2 NOP 1
LDAB *,Y 18E6 3 NOP 4
LDAB *,X E6 2 NOP 1
LDAB >* F6 3 SWAP 1 /* Force EXT mode */
LDAB * F6 3 MZERO 1
LDD #* CC 3 SWAP 2
LDD *,Y 18EC 3 NOP 4
LDD *,X EC 2 NOP 2
LDD >* FC 3 SWAP 2 /* Force EXT mode */
LDD * FC 3 MZERO 2
LDS #* 8E 3 SWAP 1
LDS *,Y 18AE 3 NOP 4
LDS *,X AE 2 NOP 1
LDS >* BE 3 SWAP 1 /* Force EXT mode */
LDS * BE 3 MZERO 1
LDX #* CE 3 SWAP 1
LDX *,X EE 2 NOP 1
LDX *,Y CDEE 3 NOP 4
LDX >* FE 3 SWAP 1 /* Force EXT mode */
LDX * FE 3 MZERO 1
LDY #* 18CE 4 SWAP 4
LDY *,Y 18EE 3 NOP 4
LDY *,X 1AEE 3 NOP 4
LDY >* 18FE 4 SWAP 4 /* Force EXT mode */
LDY * 18FE 4 MZERO 4
LSL *,Y 1868 3 NOP 4
LSL *,X 68 2 NOP 1 /*SAME AS ASL */
LSL * 78 3 SWAP 1
LSLA "" 48 1 NOP 1
LSLB "" 58 1 NOP 1
LSLD "" 05 1 NOP 2
LSR *,Y 1864 3 NOP 4
LSR *,X 64 2 NOP 1
LSR * 74 3 SWAP 1
LSRA "" 44 1 NOP 1
LSRB "" 54 1 NOP 1
LSRD "" 04 1 NOP 2
MUL "" 3D 1 NOP 2
NEG *,Y 1860 3 NOP 4
NEG *,X 60 2 NOP 1
NEG * 70 3 SWAP 1
NEGA "" 40 1 NOP 1
NEGB "" 50 1 NOP 1
NOP "" 01 1 NOP 1
ORAA #* 8A 2 NOP 1
ORAA *,Y 18AA 3 NOP 4
ORAA *,X AA 2 NOP 1
ORAA * BA 3 MZERO 1
ORAB #* CA 2 NOP 1
ORAB *,Y 18EA 3 NOP 4
ORAB *,X EA 2 NOP 1
ORAB * FA 3 MZERO 1
PSHA "" 36 1 NOP 1
PSHB "" 37 1 NOP 1
PSHX "" 3C 1 NOP 2
PSHY "" 183C 2 NOP 4
PULA "" 32 1 NOP 1
PULB "" 33 1 NOP 1
PULX "" 38 1 NOP 2
PULY "" 1838 2 NOP 4
ROL *,Y 1869 3 NOP 4
ROL *,X 69 2 NOP 1
ROL * 79 3 SWAP 1
ROLA "" 49 1 NOP 1
ROLB "" 59 1 NOP 1
ROR *,Y 1866 3 NOP 4
ROR *,X 66 2 NOP 1
ROR * 76 3 SWAP 1
RORA "" 46 1 NOP 1
RORB "" 56 1 NOP 1
RTI "" 3B 1 NOP 1
RTS "" 39 1 NOP 1
SBA "" 10 1 NOP 1
SBCA #* 82 2 NOP 1
SBCA *,Y 18A2 3 NOP 4
SBCA *,X A2 2 NOP 1
SBCA * B2 3 MZERO 1
SBCB #* C2 2 NOP 1
SBCB *,Y 18E2 3 NOP 4
SBCB *,X E2 2 NOP 1
SBCB * F2 3 MZERO 1
SEC "" 0D 1 NOP 1
SEI "" 0F 1 NOP 1
SEV "" 0B 1 NOP 1
STAA *,Y 18A7 3 NOP 4
STAA *,X A7 2 NOP 1
STAA >* B7 3 SWAP 1 /* Force EXT mode */
STAA * B7 3 MZERO 1
STAB *,Y 18E7 3 NOP 4
STAB *,X E7 2 NOP 1
STAB >* F7 3 SWAP 1 /* Force EXT mode */
STAB * F7 3 MZERO 1
STD *,Y 18ED 3 NOP 4
STD *,X ED 2 NOP 2
STD >* FD 3 SWAP 2 /* Force EXT mode */
STD * FD 3 MZERO 2
STOP "" CF 1 NOP 1
STS *,X AF 2 NOP 1
STS *,Y 18AF 3 NOP 4
STS >* BF 3 SWAP 1 /* Force EXT mode */
STS * BF 3 MZERO 1
STX *,X EF 2 NOP 1
STX *,Y CDEF 3 NOP 4
STX >* FF 3 SWAP 1 /* Force EXT mode */
STX * FF 3 MZERO 1
STY *,Y 18EF 3 NOP 4
STY *,X 1AEF 3 NOP 4
STY >* 18FF 4 SWAP 4 /* Force EXT mode */
STY * 18FF 4 MZERO 4
SUBA #* 80 2 NOP 1
SUBA *,Y 18A0 3 NOP 4
SUBA *,X A0 2 NOP 1
SUBA * B0 3 MZERO 1
SUBB #* C0 2 NOP 1
SUBB *,Y 18E0 3 NOP 4
SUBB *,X E0 2 NOP 1
SUBB * F0 3 MZERO 1
SUBD #* 83 3 SWAP 2
SUBD *,Y 18A3 3 NOP 4
SUBD *,X A3 2 NOP 2
SUBD * B3 3 MZERO 2
SWI "" 3F 1 NOP 1
TAB "" 16 1 NOP 1
TAP "" 06 1 NOP 1
TBA "" 17 1 NOP 1
TEST "" 00 1 NOP 1
TPA "" 07 1 NOP 1
TST *,Y 186D 3 NOP 4
TST *,X 6D 2 NOP 1
TST * 7D 3 SWAP 1
TSTA "" 4D 1 NOP 1
TSTB "" 5D 1 NOP 1
TSX "" 30 1 NOP 1
TSY "" 1830 2 NOP 4
TXS "" 35 1 NOP 1
TYS "" 1835 2 NOP 4
WAI "" 3E 1 NOP 1
XGDX "" 8F 1 NOP 4
XGDY "" 188F 2 NOP 4
/* That's all folks */

290
XSource/bin/TASM70.TAB

@ -0,0 +1,290 @@
"TASM 7000 Assembler. "
/****************************************************************************
/* $Id: tasm70.tab 1.1 1993/07/31 01:12:40 toma Exp $
/****************************************************************************
/* Table for TMS7000 micros
/* Note that the table does not require the 'Rnn' nomenclature
/* for reference of locations in the register file. Any expression
/* will do, the value of which indicates the register. This is more
/* flexible then making an entry like "ADC R*,A".
/*
/* TASM has trouble with the MOVD +(B),+ instruction so
/* we convert it to MOVD +[B],+
/*
/*INSTR ARGS OPCODE BYTES MOD CLASS SHIFT OR */
/*-------------------------------------------*/
.ALTWILD+
ADC B,A 69 1 NOP 1
ADC %+,A 29 2 NOP 1
ADC %+,B 59 2 NOP 1
ADC %+,+ 79 3 COMB 1
ADC +,A 19 2 NOP 1
ADC +,B 39 2 NOP 1
ADC +,+ 49 3 COMB 1
ADD B,A 68 1 NOP 1
ADD %+,A 28 2 NOP 1
ADD %+,B 58 2 NOP 1
ADD %+,+ 78 3 COMB 1
ADD +,A 18 2 NOP 1
ADD +,B 38 2 NOP 1
ADD +,+ 48 3 COMB 1
AND B,A 63 1 NOP 1
AND %+,A 23 2 NOP 1
AND %+,B 53 2 NOP 1
AND %+,+ 73 3 COMB 1
AND +,A 13 2 NOP 1
AND +,B 33 2 NOP 1
AND +,+ 43 3 COMB 1
ANDP A,+ 83 2 NOP 1
ANDP B,+ 93 2 NOP 1
ANDP %+,+ A3 3 COMB 1
BTJO B,A,+ 66 2 R1 1
BTJO %+,A,+ 26 3 CREL 1
BTJO %+,B,+ 56 3 CREL 1
BTJO %+,+,+ 76 4 3REL 1
BTJO +,A,+ 16 3 CREL 1
BTJO +,B,+ 36 3 CREL 1
BTJO +,+,+ 46 4 3REL 1
BTJOP A,+,+ 86 3 CREL 1
BTJOP B,+,+ 96 3 CREL 1
BTJOP %+,+,+ A6 4 3REL 1
BTJZ B,A,+ 67 2 R1 1
BTJZ %+,A,+ 27 3 CREL 1
BTJZ %+,B,+ 57 3 CREL 1
BTJZ %+,+,+ 77 4 3REL 1
BTJZ +,A,+ 17 3 CREL 1
BTJZ +,B,+ 37 3 CREL 1
BTJZ +,+,+ 47 4 3REL 1
BTJZP A,+,+ 87 3 CREL 1
BTJZP B,+,+ 97 3 CREL 1
BTJZP %+,+,+ A7 4 3REL 1
BR @+(B) AC 3 SWAP 1
BR @+[B] AC 3 SWAP 1
BR @+ 8C 3 SWAP 1
BR *+ 9C 2 NOP 1
CALL @+(B) AE 3 SWAP 1
CALL @+[B] AE 3 SWAP 1
CALL @+ 8E 3 SWAP 1
CALL *+ 9E 2 NOP 1
CLR A B5 1 NOP 1
CLR B C5 1 NOP 1
CLR + D5 2 NOP 1
CLRC "" B0 1 NOP 1
CMP B,A 6D 1 NOP 1
CMP %+,A 2D 2 NOP 1
CMP %+,B 5D 2 NOP 1
CMP %+,+ 7D 3 COMB 1
CMP +,A 1D 2 NOP 1
CMP +,B 3D 2 NOP 1
CMP +,+ 4D 3 COMB 1
CMPA @+(B) AD 3 SWAP 1
CMPA @+[B] AD 3 SWAP 1
CMPA @+ 8D 3 SWAP 1
CMPA *+ 9D 2 NOP 1
DAC B,A 6E 1 NOP 1
DAC %+,A 2E 2 NOP 1
DAC %+,B 5E 2 NOP 1
DAC %+,+ 7E 3 COMB 1
DAC +,A 1E 2 NOP 1
DAC +,B 3E 2 NOP 1
DAC +,+ 4E 3 COMB 1
DEC A B2 1 NOP 1
DEC B C2 1 NOP 1
DEC + D2 2 NOP 1
DECD A BB 1 NOP 1
DECD B CB 1 NOP 1
DECD + DB 2 NOP 1
DINT "" 06 1 NOP 1
DJNZ A,+ BA 2 R1 1
DJNZ B,+ CA 2 R1 1
DJNZ +,+ DA 3 CREL 1
DSB B,A 6F 1 NOP 1
DSB %+,A 2F 2 NOP 1
DSB %+,B 5F 2 NOP 1
DSB %+,+ 7F 3 COMB 1
DSB +,A 1F 2 NOP 1
DSB +,B 3F 2 NOP 1
DSB +,+ 4F 3 COMB 1
EINT "" 05 1 NOP 1
IDLE "" 01 1 NOP 1
INC A B3 1 NOP 1
INC B C3 1 NOP 1
INC + D3 2 NOP 1
INV A B4 1 NOP 1
INV B C4 1 NOP 1
INV + D4 2 NOP 1
JMP + E0 2 R1 1
JC + E3 2 R1 1
JEQ + E2 2 R1 1
JGE + E5 2 R1 1
JGT + E4 2 R1 1
JHS + E3 2 R1 1
JL + E7 2 R1 1
JN + E1 2 R1 1 /+ ??
JNC + E7 2 R1 1
JNE + E6 2 R1 1
JNZ + E6 2 R1 1
JP + E4 2 R1 1
JPZ + E5 2 R1 1
JZ + E2 2 R1 1
LDA @+(B) AA 3 SWAP 1
LDA @+[B] AA 3 SWAP 1
LDA @+ 8A 3 SWAP 1
LDA *+ 9A 2 NOP 1
LDSP "" 0D 1 NOP 1
MOV A,B C0 1 NOP 1
MOV B,A 62 1 NOP 1
MOV A,+ D0 2 NOP 1
MOV B,+ D1 2 NOP 1
MOV %+,A 22 2 NOP 1
MOV %+,B 52 2 NOP 1
MOV %+,+ 72 3 COMB 1
MOV +,A 12 2 NOP 1
MOV +,B 32 2 NOP 1
MOV +,+ 42 3 COMB 1
MOVD %+[B],+ A8 4 CSWAP 1
MOVD %+,+ 88 4 CSWAP 1
MOVD +,+ 98 3 COMB 1
MOVP A,+ 82 2 NOP 1
MOVP B,+ 92 2 NOP 1
MOVP %+,+ A2 3 COMB 1
MOVP +,A 80 2 NOP 1
MOVP +,B 91 2 NOP 1
MPY B,A 6C 1 NOP 1
MPY %+,A 2C 2 NOP 1
MPY %+,B 5C 2 NOP 1
MPY %+,+ 7C 3 COMB 1
MPY +,A 1C 2 NOP 1
MPY +,B 3C 2 NOP 1
MPY +,+ 4C 3 COMB 1
NOP "" 00 1 NOP 1
OR B,A 64 1 NOP 1
OR %+,A 24 2 NOP 1
OR %+,B 54 2 NOP 1
OR %+,+ 74 3 COMB 1
OR +,A 14 2 NOP 1
OR +,B 34 2 NOP 1
OR +,+ 44 3 COMB 1
ORP A,+ 84 2 NOP 1
ORP B,+ 94 2 NOP 1
ORP %+,+ A4 3 COMB 1
POP A B9 1 NOP 1
POP B C9 1 NOP 1
POP ST 08 1 NOP 1
POP + D9 2 NOP 1
POPST "" 08 1 NOP 1
PUSH A B8 1 NOP 1
PUSH B C8 1 NOP 1
PUSH ST 0E 1 NOP 1
PUSH + D8 2 NOP 1
PUSHST "" 0E 1 NOP 1
RETI "" 0B 1 NOP 1
RETS "" 0A 1 NOP 1
RL A BE 1 NOP 1
RL B CE 1 NOP 1
RL + DE 2 NOP 1
RLC A BF 1 NOP 1
RLC B CF 1 NOP 1
RLC + DF 2 NOP 1
RR A BC 1 NOP 1
RR B CC 1 NOP 1
RR + DC 2 NOP 1
RRC A BD 1 NOP 1
RRC B CD 1 NOP 1
RRC + DD 2 NOP 1
SBB B,A 6B 1 NOP 1
SBB %+,A 2B 2 NOP 1
SBB %+,B 5B 2 NOP 1
SBB %+,+ 7B 3 COMB 1
SBB +,A 1B 2 NOP 1
SBB +,B 3B 2 NOP 1
SBB +,+ 4B 3 COMB 1
SETC "" 07 1 NOP 1
STA @+(B) AB 3 SWAP 1
STA @+[B] AB 3 SWAP 1
STA @+ 8B 3 SWAP 1
STA *+ 9B 2 NOP 1
STSP "" 09 1 NOP 1
SUB B,A 6A 1 NOP 1
SUB %+,A 2A 2 NOP 1
SUB %+,B 5A 2 NOP 1
SUB %+,+ 7A 3 COMB 1
SUB +,A 1A 2 NOP 1
SUB +,B 3A 2 NOP 1
SUB +,+ 4A 3 COMB 1
SWAP A B7 1 NOP 1
SWAP B C7 1 NOP 1
SWAP + D7 2 NOP 1
TRAP + FF 1 SUB 1
TST A B0 1 NOP 1
TSTA "" B0 1 NOP 1
TST B C1 1 NOP 1
TSTB "" C1 1 NOP 1
XCHB A B6 1 NOP 1
XCHB + D6 2 NOP 1
XOR B,A 65 1 NOP 1
XOR %+,A 25 2 NOP 1
XOR %+,B 55 2 NOP 1
XOR %+,+ 75 3 COMB 1
XOR +,A 15 2 NOP 1
XOR +,B 35 2 NOP 1
XOR +,+ 45 3 COMB 1
XORP A,+ 85 2 NOP 1
XORP B,+ 95 2 NOP 1
XORP %+,+ A5 3 COMB 1

594
XSource/bin/TASM80.TAB

@ -0,0 +1,594 @@
"TASM Z80 Assembler. "
/****************************************************************************
/* $Id: tasm80.tab 1.2 1998/02/28 14:31:22 toma Exp $
/****************************************************************************
/* This is the instruction set definition table
/* for the Z80 version of TASM.
/* Thomas N. Anderson, Speech Technology Incorporated
/* This table authored and submitted by Carl A. Wall, VE3APY.
/*
/* Class bits assigned as follows:
/* Bit-0 = Z80 (base instruction set)
/* Bit-1 = HD64180 (extended instructions)
/* See TASM manual for info on table structure.
/*
/*INSTR ARGS OP BYTES RULE CLASS SHIFT OR */
/*-------------------------------------------*/
ADC A,(HL) 8E 1 NOP 1
ADC A,(IX*) 8EDD 3 ZIX 1
ADC A,(IY*) 8EFD 3 ZIX 1
ADC A,A 8F 1 NOP 1
ADC A,B 88 1 NOP 1
ADC A,C 89 1 NOP 1
ADC A,D 8A 1 NOP 1
ADC A,E 8B 1 NOP 1
ADC A,H 8C 1 NOP 1
ADC A,L 8D 1 NOP 1
ADC A,* CE 2 NOP 1
ADC HL,BC 4AED 2 NOP 1
ADC HL,DE 5AED 2 NOP 1
ADC HL,HL 6AED 2 NOP 1
ADC HL,SP 7AED 2 NOP 1
ADD A,(HL) 86 1 NOP 1
ADD A,(IX*) 86DD 3 ZIX 1
ADD A,(IY*) 86FD 3 ZIX 1
ADD A,A 87 1 NOP 1
ADD A,B 80 1 NOP 1
ADD A,C 81 1 NOP 1
ADD A,D 82 1 NOP 1
ADD A,E 83 1 NOP 1
ADD A,H 84 1 NOP 1
ADD A,L 85 1 NOP 1
ADD A,* C6 2 NOP 1
ADD HL,BC 09 1 NOP 1
ADD HL,DE 19 1 NOP 1
ADD HL,HL 29 1 NOP 1
ADD HL,SP 39 1 NOP 1
ADD IX,BC 09DD 2 NOP 1
ADD IX,DE 19DD 2 NOP 1
ADD IX,IX 29DD 2 NOP 1
ADD IX,SP 39DD 2 NOP 1
ADD IY,BC 09FD 2 NOP 1
ADD IY,DE 19FD 2 NOP 1
ADD IY,IY 29FD 2 NOP 1
ADD IY,SP 39FD 2 NOP 1
AND (HL) A6 1 NOP 1
AND (IX*) A6DD 3 ZIX 1
AND (IY*) A6FD 3 ZIX 1
AND A A7 1 NOP 1
AND B A0 1 NOP 1
AND C A1 1 NOP 1
AND D A2 1 NOP 1
AND E A3 1 NOP 1
AND H A4 1 NOP 1
AND L A5 1 NOP 1
AND * E6 2 NOP 1
BIT *,(HL) 46CB 2 ZBIT 1
BIT *,(IX*) CBDD 4 ZBIT 1 0 4600
BIT *,(IY*) CBFD 4 ZBIT 1 0 4600
BIT *,A 47CB 2 ZBIT 1
BIT *,B 40CB 2 ZBIT 1
BIT *,C 41CB 2 ZBIT 1
BIT *,D 42CB 2 ZBIT 1
BIT *,E 43CB 2 ZBIT 1
BIT *,H 44CB 2 ZBIT 1
BIT *,L 45CB 2 ZBIT 1
CALL C,* DC 3 NOP 1
CALL M,* FC 3 NOP 1
CALL NC,* D4 3 NOP 1
CALL NZ,* C4 3 NOP 1
CALL P,* F4 3 NOP 1
CALL PE,* EC 3 NOP 1
CALL PO,* E4 3 NOP 1
CALL Z,* CC 3 NOP 1
CALL * CD 3 NOP 1
CCF "" 3F 1 NOP 1
CP (HL) BE 1 NOP 1
CP (IX*) BEDD 3 ZIX 1
CP (IY*) BEFD 3 ZIX 1
CP A BF 1 NOP 1
CP B B8 1 NOP 1
CP C B9 1 NOP 1
CP D BA 1 NOP 1
CP E BB 1 NOP 1
CP H BC 1 NOP 1
CP L BD 1 NOP 1
CP * FE 2 NOP 1
CPD "" A9ED 2 NOP 1
CPDR "" B9ED 2 NOP 1
CPIR "" B1ED 2 NOP 1
CPI "" A1ED 2 NOP 1
CPL "" 2F 1 NOP 1
DAA "" 27 1 NOP 1
DEC (HL) 35 1 NOP 1
DEC (IX*) 35DD 3 ZIX 1
DEC (IY*) 35FD 3 ZIX 1
DEC A 3D 1 NOP 1
DEC B 05 1 NOP 1
DEC BC 0B 1 NOP 1
DEC C 0D 1 NOP 1
DEC D 15 1 NOP 1
DEC DE 1B 1 NOP 1
DEC E 1D 1 NOP 1
DEC H 25 1 NOP 1
DEC HL 2B 1 NOP 1
DEC IX 2BDD 2 NOP 1
DEC IY 2BFD 2 NOP 1
DEC L 2D 1 NOP 1
DEC SP 3B 1 NOP 1
DI "" F3 1 NOP 1
DJNZ * 10 2 R1 1
EI "" FB 1 NOP 1
EX (SP),HL E3 1 NOP 1
EX (SP),IX E3DD 2 NOP 1
EX (SP),IY E3FD 2 NOP 1
EX AF,AF' 08 1 NOP 1
EX DE,HL EB 1 NOP 1
EXX "" D9 1 NOP 1
HALT "" 76 1 NOP 1
IM 0 46ED 2 NOP 1
IM 1 56ED 2 NOP 1
IM 2 5EED 2 NOP 1
/* Alternate form of above
IM0 46ED 2 NOP 1
IM1 56ED 2 NOP 1
IM2 5EED 2 NOP 1
IN A,(C) 78ED 2 NOP 1
IN B,(C) 40ED 2 NOP 1
IN C,(C) 48ED 2 NOP 1
IN D,(C) 50ED 2 NOP 1
IN E,(C) 58ED 2 NOP 1
IN H,(C) 60ED 2 NOP 1
IN L,(C) 68ED 2 NOP 1
IN A,(*) DB 2 NOP 1
IN0 A,(*) 38ED 3 NOP 2
IN0 B,(*) 00ED 3 NOP 2
IN0 C,(*) 08ED 3 NOP 2
IN0 D,(*) 10ED 3 NOP 2
IN0 E,(*) 18ED 3 NOP 2
IN0 H,(*) 20ED 3 NOP 2
IN0 L,(*) 28ED 3 NOP 2
INC (HL) 34 1 NOP 1
INC (IX*) 34DD 3 ZIX 1
INC (IY*) 34FD 3 ZIX 1
INC A 3C 1 NOP 1
INC B 04 1 NOP 1
INC BC 03 1 NOP 1
INC C 0C 1 NOP 1
INC D 14 1 NOP 1
INC DE 13 1 NOP 1
INC E 1C 1 NOP 1
INC H 24 1 NOP 1
INC HL 23 1 NOP 1
INC IX 23DD 2 NOP 1
INC IY 23FD 2 NOP 1
INC L 2C 1 NOP 1
INC SP 33 1 NOP 1
IND "" AAED 2 NOP 1
INDR "" BAED 2 NOP 1
INI "" A2ED 2 NOP 1
INIR "" B2ED 2 NOP 1
JP (HL) E9 1 NOP 1
JP (IX) E9DD 2 NOP 1
JP (IY) E9FD 2 NOP 1
JP C,* DA 3 NOP 1
JP M,* FA 3 NOP 1
JP NC,* D2 3 NOP 1
JP NZ,* C2 3 NOP 1
JP P,* F2 3 NOP 1
JP PE,* EA 3 NOP 1
JP PO,* E2 3 NOP 1
JP Z,* CA 3 NOP 1
JP * C3 3 NOP 1
JR C,* 38 2 R1 1
JR NC,* 30 2 R1 1
JR NZ,* 20 2 R1 1
JR Z,* 28 2 R1 1
JR * 18 2 R1 1
LD (BC),A 02 1 NOP 1
LD (DE),A 12 1 NOP 1
LD (HL),A 77 1 NOP 1
LD (HL),B 70 1 NOP 1
LD (HL),C 71 1 NOP 1
LD (HL),D 72 1 NOP 1
LD (HL),E 73 1 NOP 1
LD (HL),H 74 1 NOP 1
LD (HL),L 75 1 NOP 1
LD (HL),* 36 2 NOP 1
LD (IX*),A 77DD 3 ZIX 1
LD (IX*),B 70DD 3 ZIX 1
LD (IX*),C 71DD 3 ZIX 1
LD (IX*),D 72DD 3 ZIX 1
LD (IX*),E 73DD 3 ZIX 1
LD (IX*),H 74DD 3 ZIX 1
LD (IX*),L 75DD 3 ZIX 1
LD (IX*),* 36DD 4 ZIX 1
LD (IY*),A 77FD 3 ZIX 1
LD (IY*),B 70FD 3 ZIX 1
LD (IY*),C 71FD 3 ZIX 1
LD (IY*),D 72FD 3 ZIX 1
LD (IY*),E 73FD 3 ZIX 1
LD (IY*),H 74FD 3 ZIX 1
LD (IY*),L 75FD 3 ZIX 1
LD (IY*),* 36FD 4 ZIX 1
LD (*),A 32 3 NOP 1
LD (*),BC 43ED 4 NOP 1
LD (*),DE 53ED 4 NOP 1
LD (*),HL 22 3 NOP 1
LD (*),IX 22DD 4 NOP 1
LD (*),IY 22FD 4 NOP 1
LD (*),SP 73ED 4 NOP 1
LD A,(BC) 0A 1 NOP 1
LD A,(DE) 1A 1 NOP 1
LD A,(HL) 7E 1 NOP 1
LD A,(IX*) 7EDD 3 ZIX 1
LD A,(IY*) 7EFD 3 ZIX 1
LD A,A 7F 1 NOP 1
LD A,B 78 1 NOP 1
LD A,C 79 1 NOP 1
LD A,D 7A 1 NOP 1
LD A,E 7B 1 NOP 1
LD A,H 7C 1 NOP 1
LD A,I 57ED 2 NOP 1
LD A,L 7D 1 NOP 1
LD A,R 5FED 2 NOP 1
LD A,(*) 3A 3 NOP 1
LD A,* 3E 2 NOP 1
LD B,(HL) 46 1 NOP 1
LD B,(IX*) 46DD 3 ZIX 1
LD B,(IY*) 46FD 3 ZIX 1
LD B,A 47 1 NOP 1
LD B,B 40 1 NOP 1
LD B,C 41 1 NOP 1
LD B,D 42 1 NOP 1
LD B,E 43 1 NOP 1
LD B,H 44 1 NOP 1
LD B,L 45 1 NOP 1
LD B,* 06 2 NOP 1
LD BC,(*) 4BED 4 NOP 1
LD BC,* 01 3 NOP 1
LD C,(HL) 4E 1 NOP 1
LD C,(IX*) 4EDD 3 ZIX 1
LD C,(IY*) 4EFD 3 ZIX 1
LD C,A 4F 1 NOP 1
LD C,B 48 1 NOP 1
LD C,C 49 1 NOP 1
LD C,D 4A 1 NOP 1
LD C,E 4B 1 NOP 1
LD C,H 4C 1 NOP 1
LD C,L 4D 1 NOP 1
LD C,* 0E 2 NOP 1
LD D,(HL) 56 1 NOP 1
LD D,(IX*) 56DD 3 ZIX 1
LD D,(IY*) 56FD 3 ZIX 1
LD D,A 57 1 NOP 1
LD D,B 50 1 NOP 1
LD D,C 51 1 NOP 1
LD D,D 52 1 NOP 1
LD D,E 53 1 NOP 1
LD D,H 54 1 NOP 1
LD D,L 55 1 NOP 1
LD D,* 16 2 NOP 1
LD DE,(*) 5BED 4 NOP 1
LD DE,* 11 3 NOP 1
LD E,(HL) 5E 1 NOP 1
LD E,(IX*) 5EDD 3 ZIX 1
LD E,(IY*) 5EFD 3 ZIX 1
LD E,A 5F 1 NOP 1
LD E,B 58 1 NOP 1
LD E,C 59 1 NOP 1
LD E,D 5A 1 NOP 1
LD E,E 5B 1 NOP 1
LD E,H 5C 1 NOP 1
LD E,L 5D 1 NOP 1
LD E,* 1E 2 NOP 1
LD H,(HL) 66 1 NOP 1
LD H,(IX*) 66DD 3 ZIX 1
LD H,(IY*) 66FD 3 ZIX 1
LD H,A 67 1 NOP 1
LD H,B 60 1 NOP 1
LD H,C 61 1 NOP 1
LD H,D 62 1 NOP 1
LD H,E 63 1 NOP 1
LD H,H 64 1 NOP 1
LD H,L 65 1 NOP 1
LD H,* 26 2 NOP 1
LD HL,(*) 2A 3 NOP 1
LD HL,* 21 3 NOP 1
LD I,A 47ED 2 NOP 1
LD IX,(*) 2ADD 4 NOP 1
LD IX,* 21DD 4 NOP 1
LD IY,(*) 2AFD 4 NOP 1
LD IY,* 21FD 4 NOP 1
LD L,(HL) 6E 1 NOP 1
LD L,(IX*) 6EDD 3 ZIX 1
LD L,(IY*) 6EFD 3 ZIX 1
LD L,A 6F 1 NOP 1
LD L,B 68 1 NOP 1
LD L,C 69 1 NOP 1
LD L,D 6A 1 NOP 1
LD L,E 6B 1 NOP 1
LD L,H 6C 1 NOP 1
LD L,L 6D 1 NOP 1
LD L,* 2E 2 NOP 1
LD R,A 4FED 2 NOP 1
LD SP,(*) 7BED 4 NOP 1
LD SP,HL F9 1 NOP 1
LD SP,IX F9DD 2 NOP 1
LD SP,IY F9FD 2 NOP 1
LD SP,* 31 3 NOP 1
LDD "" A8ED 2 NOP 1
LDDR "" B8ED 2 NOP 1
LDI "" A0ED 2 NOP 1
LDIR "" B0ED 2 NOP 1
NEG "" 44ED 2 NOP 1
NOP "" 00 1 NOP 1
MLT BC 4CED 2 NOP 2
MLT DE 5CED 2 NOP 2
MLT HL 6CED 2 NOP 2
MLT SP 7CED 2 NOP 2
OR (HL) B6 1 NOP 1
OR (IX*) B6DD 3 ZIX 1
OR (IY*) B6FD 3 ZIX 1
OR A B7 1 NOP 1
OR B B0 1 NOP 1
OR C B1 1 NOP 1
OR D B2 1 NOP 1
OR E B3 1 NOP 1
OR H B4 1 NOP 1
OR L B5 1 NOP 1
OR * F6 2 NOP 1
OTDM "" 8BED 2 NOP 2
OTDMR "" 9BED 2 NOP 2
OTDR "" BBED 2 NOP 1
OTIM "" 83ED 2 NOP 2
OTIMR "" 93ED 2 NOP 2
OTIR "" B3ED 2 NOP 1
OUT (C),A 79ED 2 NOP 1
OUT (C),B 41ED 2 NOP 1
OUT (C),C 49ED 2 NOP 1
OUT (C),D 51ED 2 NOP 1
OUT (C),E 59ED 2 NOP 1
OUT (C),H 61ED 2 NOP 1
OUT (C),L 69ED 2 NOP 1
OUT (*),A D3 2 NOP 1
OUT0 (*),A 39ED 3 NOP 2
OUT0 (*),B 01ED 3 NOP 2
OUT0 (*),C 09ED 3 NOP 2
OUT0 (*),D 11ED 3 NOP 2
OUT0 (*),E 19ED 3 NOP 2
OUT0 (*),H 21ED 3 NOP 2
OUT0 (*),L 29ED 3 NOP 2
OUTD "" ABED 2 NOP 1
OUTI "" A3ED 2 NOP 1
POP AF F1 1 NOP 1
POP BC C1 1 NOP 1
POP DE D1 1 NOP 1
POP HL E1 1 NOP 1
POP IX E1DD 2 NOP 1
POP IY E1FD 2 NOP 1
PUSH AF F5 1 NOP 1
PUSH BC C5 1 NOP 1
PUSH DE D5 1 NOP 1
PUSH HL E5 1 NOP 1
PUSH IX E5DD 2 NOP 1
PUSH IY E5FD 2 NOP 1
RES *,(HL) 86CB 2 ZBIT 1
RES *,(IX*) CBDD 4 ZBIT 1 0 8600
RES *,(IY*) CBFD 4 ZBIT 1 0 8600
RES *,A 87CB 2 ZBIT 1
RES *,B 80CB 2 ZBIT 1
RES *,C 81CB 2 ZBIT 1
RES *,D 82CB 2 ZBIT 1
RES *,E 83CB 2 ZBIT 1
RES *,H 84CB 2 ZBIT 1
RES *,L 85CB 2 ZBIT 1
RET "" C9 1 NOP 1
RET C D8 1 NOP 1
RET M F8 1 NOP 1
RET NC D0 1 NOP 1
RET NZ C0 1 NOP 1
RET P F0 1 NOP 1
RET PE E8 1 NOP 1
RET PO E0 1 NOP 1
RET Z C8 1 NOP 1
RETI "" 4DED 2 NOP 1
RETN "" 45ED 2 NOP 1
RL (HL) 16CB 2 NOP 1
RL (IX*) CBDD 4 ZIX 1 0 1600
RL (IY*) CBFD 4 ZIX 1 0 1600
RL A 17CB 2 NOP 1
RL B 10CB 2 NOP 1
RL C 11CB 2 NOP 1
RL D 12CB 2 NOP 1
RL E 13CB 2 NOP 1
RL H 14CB 2 NOP 1
RL L 15CB 2 NOP 1
RLA "" 17 1 NOP 1
RLC (HL) 06CB 2 NOP 1
RLC (IX*) CBDD 4 ZIX 1 0 0600
RLC (IY*) CBFD 4 ZIX 1 0 0600
RLC A 07CB 2 NOP 1
RLC B 00CB 2 NOP 1
RLC C 01CB 2 NOP 1
RLC D 02CB 2 NOP 1
RLC E 03CB 2 NOP 1
RLC H 04CB 2 NOP 1
RLC L 05CB 2 NOP 1
RLCA "" 07 1 NOP 1
RLD "" 6FED 2 NOP 1
RR (HL) 1ECB 2 NOP 1
RR (IX*) CBDD 4 ZIX 1 0 1E00
RR (IY*) CBFD 4 ZIX 1 0 1E00
RR A 1FCB 2 NOP 1
RR B 18CB 2 NOP 1
RR C 19CB 2 NOP 1
RR D 1ACB 2 NOP 1
RR E 1BCB 2 NOP 1
RR H 1CCB 2 NOP 1
RR L 1DCB 2 NOP 1
RRA "" 1F 1 NOP 1
RRC (HL) 0ECB 2 NOP 1
RRC (IX*) CBDD 4 ZIX 1 0 0E00
RRC (IY*) CBFD 4 ZIX 1 0 0E00
RRC A 0FCB 2 NOP 1
RRC B 08CB 2 NOP 1
RRC C 09CB 2 NOP 1
RRC D 0ACB 2 NOP 1
RRC E 0BCB 2 NOP 1
RRC H 0CCB 2 NOP 1
RRC L 0DCB 2 NOP 1
RRCA "" 0F 1 NOP 1
RRD "" 67ED 2 NOP 1
RST 00H C7 1 NOP 1
RST 08H CF 1 NOP 1
RST 10H D7 1 NOP 1
RST 18H DF 1 NOP 1
RST 20H E7 1 NOP 1
RST 28H EF 1 NOP 1
RST 30H F7 1 NOP 1
RST 38H FF 1 NOP 1
/* Alternate form of above
RST 00 C7 1 NOP 1
RST 08 CF 1 NOP 1
RST 10 D7 1 NOP 1
RST 18 DF 1 NOP 1
RST 20 E7 1 NOP 1
RST 28 EF 1 NOP 1
RST 30 F7 1 NOP 1
RST 38 FF 1 NOP 1
SBC A,(HL) 9E 1 NOP 1
SBC A,(IX*) 9EDD 3 ZIX 1
SBC A,(IY*) 9EFD 3 ZIX 1
SBC A,A 9F 1 NOP 1
SBC A,B 98 1 NOP 1
SBC A,C 99 1 NOP 1
SBC A,D 9A 1 NOP 1
SBC A,E 9B 1 NOP 1
SBC A,H 9C 1 NOP 1
SBC A,L 9D 1 NOP 1
SBC HL,BC 42ED 2 NOP 1
SBC HL,DE 52ED 2 NOP 1
SBC HL,HL 62ED 2 NOP 1
SBC HL,SP 72ED 2 NOP 1
SBC A,* DE 2 NOP 1
SCF "" 37 1 NOP 1
SET *,(HL) C6CB 2 ZBIT 1
SET *,(IX*) CBDD 4 ZBIT 1 0 C600
SET *,(IY*) CBFD 4 ZBIT 1 0 C600
SET *,A C7CB 2 ZBIT 1
SET *,B C0CB 2 ZBIT 1
SET *,C C1CB 2 ZBIT 1
SET *,D C2CB 2 ZBIT 1
SET *,E C3CB 2 ZBIT 1
SET *,H C4CB 2 ZBIT 1
SET *,L C5CB 2 ZBIT 1
SLA (HL) 26CB 2 NOP 1
SLA (IX*) CBDD 4 ZIX 1 0 2600
SLA (IY*) CBFD 4 ZIX 1 0 2600
SLA A 27CB 2 NOP 1
SLA B 20CB 2 NOP 1
SLA C 21CB 2 NOP 1
SLA D 22CB 2 NOP 1
SLA E 23CB 2 NOP 1
SLA H 24CB 2 NOP 1
SLA L 25CB 2 NOP 1
SLP "" 76ED 2 NOP 2
SRA (HL) 2ECB 2 NOP 1
SRA (IX*) CBDD 4 ZIX 1 0 2E00
SRA (IY*) CBFD 4 ZIX 1 0 2E00
SRA A 2FCB 2 NOP 1
SRA B 28CB 2 NOP 1
SRA C 29CB 2 NOP 1
SRA D 2ACB 2 NOP 1
SRA E 2BCB 2 NOP 1
SRA H 2CCB 2 NOP 1
SRA L 2DCB 2 NOP 1
SRL (HL) 3ECB 2 NOP 1
SRL (IX*) CBDD 4 ZIX 1 0 3E00
SRL (IY*) CBFD 4 ZIX 1 0 3E00
SRL A 3FCB 2 NOP 1
SRL B 38CB 2 NOP 1
SRL C 39CB 2 NOP 1
SRL D 3ACB 2 NOP 1
SRL E 3BCB 2 NOP 1
SRL H 3CCB 2 NOP 1
SRL L 3DCB 2 NOP 1
SUB (HL) 96 1 NOP 1
SUB (IX*) 96DD 3 ZIX 1
SUB (IY*) 96FD 3 ZIX 1
SUB A 97 1 NOP 1
SUB B 90 1 NOP 1
SUB C 91 1 NOP 1
SUB D 92 1 NOP 1
SUB E 93 1 NOP 1
SUB H 94 1 NOP 1
SUB L 95 1 NOP 1
SUB * D6 2 NOP 1
TST A 3CED 2 NOP 2
TST B 04ED 2 NOP 2
TST C 0CED 2 NOP 2
TST D 14ED 2 NOP 2
TST E 1CED 2 NOP 2
TST H 24ED 2 NOP 2
TST L 2CED 2 NOP 2
TST (HL) 34ED 2 NOP 2
TST * 64ED 3 NOP 2
TSTIO * 74ED 3 NOP 2
XOR (HL) AE 1 NOP 1
XOR (IX*) AEDD 3 ZIX 1
XOR (IY*) AEFD 3 ZIX 1
XOR A AF 1 NOP 1
XOR B A8 1 NOP 1
XOR C A9 1 NOP 1
XOR D AA 1 NOP 1
XOR E AB 1 NOP 1
XOR H AC 1 NOP 1
XOR L AD 1 NOP 1
XOR * EE 2 NOP 1

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

Loading…
Cancel
Save