home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / SIMTEL / CPMUG / CPMUG051.ARK / FLUB8080.S2M < prev    next >
Text File  |  1984-04-29  |  4KB  |  285 lines

  1. #$#$0 (+-*/)  FLUB TO 8080 TRANSLATION MACROS
  2. .REV $,$#
  3. %FREV: DB 32H    ; 06/13/79  R. CURTISS#
  4. ..REV: DB $10#
  5. $20$37,#
  6. .. DB '$30'#
  7. .. DW $30REV#
  8. $F8#
  9. #
  10. $.$#            ACCEPT AN INPUT LINE
  11. * $10.#              OUTPUT COMMENT LINE
  12. =$10#              PASS LINE ON FOR PROCESSING
  13. #
  14. =BEGIN STAGE2#
  15. .LET P+ EQU DAD D#
  16. .LET P- EQU CALL DSUB#
  17. .LET P* EQU CALL DMULT#
  18. .LET P/ EQU CALL DDIV#
  19. .LET V+ EQU ADD M#
  20. .LET V- EQU SUB M#
  21. .LET C= EQU JZ#
  22. .LET CNE EQU JNZ#
  23. .LET CLT EQU JC#
  24. .LET CGE EQU JNC#
  25. .LET K= EQU CMPEQ#
  26. .LET KNE EQU CMPEQ#
  27. .LET KLT EQU CMPLT#
  28. .LET KGE EQU CMPLT#
  29. .LET VAL EQU +3#
  30. .LET FLG EQU +2#
  31. ..;  #
  32. .REV 5,I,D,S,M,F#        GENERATE REVISION LIST IN SIGN ON MESSAGE
  33. ..PROGR: LXI H,REV#
  34. .. MOV C,M#
  35. .. INX H#
  36. .. LXI D,MHELLO+2#
  37. .. CALL DSPR#
  38. =MESSAGE HELLO TO 5#
  39. .. CALL INITL#
  40. #
  41. =$ $ = $#
  42. .. LDA K$30$11#
  43. .. STA K$20$11#
  44. #
  45. =VAL $ = PTR $#
  46. .. LDA K$20#
  47. .. STA K$10+3#
  48. #
  49. =PTR $ = VAL $#
  50. .. LDA K$20+3#
  51. .. MOV L,A#
  52. .. CMA #
  53. .. ORI 7FH#
  54. .. RLC #
  55. .. INR A#
  56. .. MOV H,A#
  57. .. SHLD K$10#
  58. #
  59. =GET $ = $#
  60. .. LHLD K$20#
  61. .. LXI D,K$10#
  62. .. CALL GMOVE#
  63. #
  64. =STO $ = $#
  65. .. LXI D,K$20#
  66. .. LHLD K$10#
  67. .. CALL SMOVE#
  68. #
  69. =VAL $ = $ + 0#
  70. .. LDA K$20+3#
  71. .. STA K$10+3#
  72. #
  73. =VAL $ = $ + 1#
  74. .. LDA K$20+3#
  75. .. INR A#
  76. .. STA K$10+3#
  77. #
  78. =VAL $ = $ - 1#
  79. .. LDA K$20+3#
  80. .. DCR A#
  81. .. STA K$10+3#
  82. #
  83. =VAL $ = $ $ $#
  84. .. LDA K$20+3#
  85. .. LXI H,K$40+3#
  86. V$30$56 .. $51#
  87. .. STA K$10+3#
  88. #
  89. =PTR $ = $ + 0#
  90. .. LHLD K$20#
  91. .. SHLD K$10#
  92. #
  93. =PTR $ = $ + 1#
  94. .. LHLD K$20#
  95. .. INX H#
  96. .. SHLD K$10#
  97. #
  98. =PTR $ = $ + 2#
  99. .. LHLD K$20#
  100. .. INX H#
  101. .. INX H#
  102. .. SHLD K$10#
  103. #
  104. =PTR $ = $ - 1#
  105. .. LHLD K$20#
  106. .. DCX H#
  107. .. SHLD K$10#
  108. #
  109. =PTR $ = $ - 2#
  110. .. LHLD K$20#
  111. .. DCX H#
  112. .. DCX H#
  113. .. SHLD K$10#
  114. #
  115. =PTR $ = $ + 7#
  116. .. LHLD K$20#
  117. .. INX H#
  118. .. SHLD K$10#
  119. #
  120. =PTR $ = $ - 7#
  121. .. LHLD K$20#
  122. .. DCX H#
  123. .. SHLD K$10#
  124. #
  125. =PTR $ = $ * 7#
  126. .. LHLD K$20#
  127. .. SHLD K$10#
  128. #
  129. =PTR $ = $ / 7#
  130. .. LHLD K$20#
  131. .. SHLD K$10#
  132. #
  133. =PTR $ = $ * 5#
  134. .. LHLD K$20#
  135. .. CALL DMUL10#        SIGNED MULTIPLY BY 10
  136. .. SHLD K$10#
  137. #
  138. =PTR $ = $ / 5#
  139. .. LHLD K$20#
  140. .. CALL DDIV10#        SIGNED DIVIDE BY 10
  141. .. SHLD K$10#
  142. #
  143. =PTR $ = $ $ $#
  144. .. LHLD K$40#
  145. .. XCHG #
  146. .. LHLD K$20#
  147. P$30$56 .. $51#
  148. .. SHLD K$10#
  149. #
  150. =TO $ IF PTR $ $ $#
  151. .. LHLD K$40#
  152. .. XCHG #
  153. .. LHLD K$20#
  154. K$30$66 .. CALL $61#
  155. C$30$56 .. $51 LL$10#
  156. #
  157. =TO $ IF $ $ $ $#
  158. .. LDA K$30$21#
  159. .. LXI H,K$50$21#
  160. .. CMP M#
  161. C$40$66 .. $61 LL$10#
  162. #
  163. =LOC $#
  164. ..LL$10:  #
  165. #
  166. =TO $#
  167. .. JMP LL$10#
  168. #
  169. =TO $ BY $#
  170. .. LXI H,$$+9#
  171. .. SHLD K$20#
  172. .. JMP LL$10#
  173. #
  174. =RETURN BY $#
  175. .. LHLD K$10#
  176. .. PCHL #
  177. #
  178. =READ NEXT $#
  179. .. LDA K$10+3#
  180. .. CALL READ#
  181. .. STA K$10+2#
  182. #
  183. =WRITE NEXT $#
  184. .. LDA K$10+3#
  185. .. CALL WRITE#
  186. .. STA K$10+2#
  187. #
  188. =VAL $ = CHAR#
  189. .. CALL RDCH#
  190. .. STA K$10+3#
  191. #
  192. =CHAR = VAL $#
  193. .. LDA K$10+3#
  194. .. CALL WRCH#
  195. .. STA K$10+2#
  196. #
  197. =REWIND $#
  198. .. LDA K$10+3#
  199. .. CALL REWIND#
  200. .. STA K$10+2#
  201. #
  202. =MESSAGE $ TO $#
  203. .. LDA K$20+3#
  204. .. LXI H,M$10#
  205. .. CALL MWRITE#
  206. .. STA K$20+2#
  207. #
  208. =TRAP#
  209. .. CALL TRAP#
  210. #
  211. =STOP#
  212. .. RET #
  213. #
  214. =END PROGRAM#
  215. ..MEMLOW EQU $$#
  216. .. END #
  217. $F0#
  218. #
  219. .REG $ $ $#        SETUP REGISTER INITIAL VALUES
  220. ..K$30: DW $10#
  221. .. DB $20,$30#
  222. #
  223. .REG#
  224. ABCDEFGHIJKLMNOPQRSTUVWXYZ$17#
  225. ..K$10: DS 4#
  226. $F8#
  227. #
  228. .MSG $=$#
  229. ..M$10: DB $25,'$20',0FFH#
  230. #
  231. %#
  232.  $F13#
  233. #
  234. %$#
  235. $10$F13#
  236. #
  237. ..$ $ $#
  238. $10    $20    $30$F13#
  239. #
  240. * $#                         SOURCE COMMENT LINE
  241. ;            $10$F13#
  242. #
  243. .LET $ EQU $#
  244. $F3#
  245. ##            END OF FLUB TO 8080 MACROS
  246. %MAIN    EQU    100H
  247. %IREV    EQU    MAIN+3
  248. %DREV    EQU    MAIN+7
  249. %
  250. %    ORG    1000H
  251. %
  252. %    JMP    PROGR
  253. %    NOP
  254. %IOOP:    JMP    MAIN+4
  255. %    NOP
  256. %TRAP:    JMP    MAIN+8
  257. %    NOP
  258. %MEMSET:    JMP    MAIN+12
  259. %    NOP
  260. %
  261. .REG 0 0 0
  262. .REG 1 1 1
  263. .REG 2 2 2
  264. .REG 3 3 3
  265. .REG 4 0 4
  266. .REG 10 0 5
  267. .REG 0 0 6
  268. .REG 1 0 7
  269. .REG 0 0 8
  270. .REG 0 0 9
  271. %
  272. %    DB    0,0,0,0,0,0,0,0
  273. %
  274. .REG#
  275. %
  276. %    DB    0,0,0,0,0,0,0,0
  277. %
  278. .MSG IOCH=*** I/O ERROR ***
  279. .MSG EXPR=*** EXPRESSION ERROR ***
  280. .MSG CONV=*** CONVERSION ERROR ***
  281. .MSG FULL=*** MEMORY FULL ERROR ***
  282. .MSG HELLO=---------------------  STAGE2  --  8080 VERSION#
  283. %;
  284. %;
  285.