home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol006 / zx65r.prn < prev    next >
Encoding:
Text File  |  1985-02-18  |  97.7 KB  |  2,113 lines

  1. ZXMAIN                                 SD SYSTEMS Z80 ASSEMBLER PAGE 0001 
  2.  ADDR  CODE      STMT SOURCE STATEMENT
  3.  
  4.                  0001         NAME    ZXMAIN
  5.                  0003 ;
  6.                  0004 ; V 2.1 OF ZX65 IS MODIFIED TO BE LINKED AT ASSEMBLY
  7.                  0005 ; TIME WITH ZXLD V 2.1.  THIS COMBINATION IS TOTALLY
  8.                  0006 ; RELOCATABLE, AND WILL FUNCTION UNDER ANY CPM 1.4
  9.                  0007 ; SYSTEM SIZE.  FORMAT IS FOR SD SYSTEMS ASSEMBLER
  10.                  0008 ; V 3.3 AND LINKER V 3.0
  11.                  0009 ;
  12.                  0010 ; V 2.1 INCLUDES ALL PREVIOUS MODS PLUS CORRECTED
  13.                  0011 ; JSR/JMP/RTS FUNCTIONS.
  14.                  0012 ;
  15.                  0013         GLOBAL  RELBAS
  16.                  0014 ;
  17. '>0000           0015 BASE    EQU     $
  18. '>0F00           0016 HOST    EQU     BASE+0F00H      ; HOST SYSTEM CBIOS
  19. '>0F00           0017 SYSTK   EQU     HOST            ; SYSTEM STACK
  20. '>0F03           0018 CPWRM   EQU     HOST+3          ; CP/M COLD ST
  21. '>0F06           0019 CONST   EQU     HOST+6          ; HOST SYSTEM INPUT TEST
  22. '>0F09           0020 CONIN   EQU     HOST+9          ; HOST SYSTEM CONS IN
  23. '>0F0C           0021 CONOUT  EQU     HOST+0CH        ; HOST SYSTEM CONS OUT
  24. '>0F18           0022 HOME    EQU     HOST+18H        ; DRIV HOME
  25. '>0F1B           0023 SETDRV  EQU     HOST+1BH        ; SELECT DRVE
  26. '>0F1E           0024 SETTRK  EQU     HOST+1EH        ; SELECT TRACK
  27. '>0F21           0025 SETSEC  EQU     HOST+21H        ; SELECT SECTOR
  28. '>0F24           0026 SETBUF  EQU     HOST+24H        ; SET XFER ADDRESS
  29. '>0F27           0027 READ    EQU     HOST+27H        ; READ A SECTOR
  30. '>0F2A           0028 WRITE   EQU     HOST+2AH        ; WRITE A SECTOR
  31.                  0029 ;
  32. '0000  31000F'   0030 RELBAS  LD      SP,SYSTK
  33. '0003  0E01      0031         LD      C,1
  34. '0005  CD3A0B'   0032         CALL    DRVS            ; ACTIVATE DRV B
  35. '0008  CD370B'   0033         CALL    HOMB            ; AND INIT IT
  36. '000B  FD216C0B' 0034         LD      IY,INTRO
  37. '000F  CDD90A'   0035         CALL    PRTXT           ; PRINT HEADER
  38. '0012  CD4F0A'   0036         CALL    CRLF
  39.                  0037 ;
  40.                  0038 ; COMMAND LEVEL...RETURN HERE FROM ANY POINT IN PGM
  41.                  0039 ;
  42. '0015  211500'   0040 CMND    LD      HL,CMND
  43. '0018  E5        0041         PUSH    HL              ; RET ADDR ON STACK
  44. '0019  CD4F0A'   0042         CALL    CRLF
  45. '001C  CD590A'   0043         CALL    PROM
  46. '001F  CD160B'   0044         CALL    GETCHR          ; GET COMMAND
  47. '0022  FE45      0045         CP      'E'
  48. '0024  CAE906'   0046         JP      Z,EXAM          ; EXAM MEMORY
  49. '0027  FE4D      0047         CP      'M'
  50. '0029  CA4B07'   0048         JP      Z,SUBM          ; SUB MEMORY
  51. '002C  DD21630B' 0049         LD      IX,VREG         ; FOR SIMX
  52. '0030  FE42      0050         CP      'B'
  53. '0032  2864      0051         JR      Z,BRKP-$        ; RUN TO BREAKPOINT
  54. '0034  FE43      0052         CP      'C'
  55. '0036  CACE00'   0053         JP      Z,RGSTR         ; DSPLY/MODIFY CPU REGS
  56. '0039  FE47      0054         CP      'G'
  57. '003B  CAC100'   0055         JP      Z,RUN           ; RUN FROM NPC
  58. '003E  FE54      0056         CP      'T'
  59. '0040  282D      0057         JR      Z,MULTX-$       ; TRACE/DISPLAY N STEPS
  60. '0042  FE20      0058         CP      ' '
  61. '0044  2836      0059         JR      Z,EXONE-$       ; EX ONE INSTR & STOP
  62.  
  63.  
  64.  
  65.  
  66.  
  67. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0002 
  68.  ADDR  CODE      STMT SOURCE STATEMENT
  69.  
  70. '0046  DD21700C' 0060         LD      IX,BUFFR        ; FOR DOS
  71. '004A  FE44      0061         CP      'D'
  72. '004C  CAA807'   0062         JP      Z,PDIR          ; DOS DIR
  73. '004F  FE49      0063         CP      'I'
  74. '0051  CACB08'   0064         JP      Z,INIT          ; DOS INITIALIZE
  75. '0054  FE4B      0065         CP      'K'
  76. '0056  CAB608'   0066         JP      Z,KILL          ; DOS ERASE
  77. '0059  FE4C      0067         CP      'L'
  78. '005B  CAF507'   0068         JP      Z,LOAD          ; DOS LOADER
  79. '005E  FE52      0069         CP      'R'
  80. '0060  CAEB07'   0070         JP      Z,LDGO          ; LOAD AND RUN PGM
  81. '0063  FE53      0071         CP      'S'
  82. '0065  CA1308'   0072         JP      Z,SAVE          ; DOS SAVER
  83. '0068  0E3F      0073         LD      C,'?'
  84. '006A  CD340B'   0074         CALL    PRNC            ; INVALID COMMAND
  85. '006D  18A6      0075         JR      CMND-$
  86.                  0076 ;
  87.                  0077 ; EXECUTE N STEPS
  88.                  0078 ;
  89. '006F  FD21250C' 0079 MULTX   LD      IY,MLTMSG
  90. '0073  CDD90A'   0080         CALL    PRTXT
  91. '0076  CD630A'   0081         CALL    GETWRD          ; GET N
  92. '0079  7B        0082         LD      A,E
  93. '007A  2002      0083         JR      NZ,DOMULT-$
  94. '007C  3E01      0084 EXONE   LD      A,1             ; EXECUTE 1 STEP
  95.                  0085 ;
  96.                  0086 ; EXECUTE # STEPS IN A
  97.                  0087 ;
  98. '007E  325D0B'   0088 DOMULT  LD      (NSTEPS),A      ; STORE N IN TEMP
  99. '0081  CD9601'   0089         CALL    STEP            ; EXEC & DSPLY INSTR
  100. '0084  CD1101'   0090         CALL    DSPLY
  101. '0087  3A5D0B'   0091         LD      A,(NSTEPS)
  102. '008A  3D        0092         DEC     A
  103. '008B  C8        0093         RET     Z
  104. '008C  F5        0094         PUSH    AF
  105. '008D  015F0B'   0095         LD      BC,DLYCON       ; DELAY FOR VIEWING
  106. '0090  0B        0096 DOLP    DEC     BC
  107. '0091  78        0097         LD      A,B
  108. '0092  B1        0098         OR      C
  109. '0093  20FB      0099         JR      NZ,DOLP-$
  110. '0095  F1        0100         POP     AF
  111. '0096  18E6      0101         JR      DOMULT-$
  112.                  0102 ;
  113.                  0103 ; RUN WITHOUT DISPLAY TO BREAKPOINT
  114.                  0104 ;
  115. '0098  FD21370C' 0105 BRKP    LD      IY,BKPMSG
  116. '009C  CDD90A'   0106         CALL    PRTXT
  117. '009F  CD630A'   0107         CALL    GETWRD          ; GET IT
  118. '00A2  ED53610B' 0108         LD      (BREAK),DE      ; STORE IT IN TEMP
  119. '00A6  CD9601'   0109 BKLP    CALL    STEP            ; EXEC ONE INSTR
  120. '00A9  ED5B610B' 0110         LD      DE,(BREAK)
  121. '00AD  7C        0111         LD      A,H             ; CHECK IF AT BKPT
  122. '00AE  BA        0112         CP      D
  123. '00AF  2009      0113         JR      NZ,INTST-$
  124. '00B1  7D        0114         LD      A,L
  125. '00B2  BB        0115         CP      E
  126. '00B3  2005      0116         JR      NZ,INTST-$
  127. '00B5  CD9601'   0117         CALL    STEP            ; DO ONE MORE
  128.  
  129.  
  130.  
  131.  
  132.  
  133. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0003 
  134.  ADDR  CODE      STMT SOURCE STATEMENT
  135.  
  136. '00B8  1857      0118         JR      DSPLY-$
  137. '00BA  CD310B'   0119 INTST   CALL    KBST            ; TEST FOR KBD INP
  138. '00BD  28E7      0120         JR      Z,BKLP-$        ; CONTINUE IF NONE
  139. '00BF  1808      0121         JR      QDSP-$
  140.                  0122 ;
  141.                  0123 ; RUN ONLY..NO DISPLAY OR BREAKPOINT
  142.                  0124 ;
  143. '00C1  CD9601'   0125 RUN     CALL    STEP            ; DO A STEP
  144. '00C4  CD310B'   0126         CALL    KBST            ; CHECK FOR KB INPUT
  145. '00C7  28F8      0127         JR      Z,RUN-$         ; IF NONE JUST REPEAT
  146.                  0128 ;
  147.                  0129 ; STOP, DISPLAY, & RET TO CMND
  148.                  0130 ;
  149. '00C9  CD2E0B'   0131 QDSP    CALL    KBIN            ; CLEAR UART
  150. '00CC  1843      0132         JR      DSPLY-$         ; DISP CPU & RET
  151.                  0133 ; 
  152.                  0134 ; DISPLAY & UPDATE CPU REGISTERS
  153.                  0135 ;
  154. '00CE  DDE5      0136 RGSTR   PUSH    IX
  155. '00D0  CD4F0A'   0137         CALL    CRLF
  156. '00D3  FD21B00B' 0138         LD      IY,HEADR+42
  157. '00D7  CD8C01'   0139         CALL    PRN6            ; PRINT RG NAME
  158. '00DA  ED5B6A0B' 0140         LD      DE,(NPC)        ; NEXT PC TO DE
  159. '00DE  CDB20A'   0141         CALL    PRTWRD          ; PRINT IT
  160. '00E1  CD590A'   0142         CALL    PROM            ; PROMPT FOR CHANGE
  161. '00E4  CD630A'   0143         CALL    GETWRD
  162. '00E7  2804      0144         JR      Z,AREG-$        ; SPACE = NO CHANGE
  163. '00E9  ED536A0B' 0145         LD      (NPC),DE        ; PUT IN NEW VALUE
  164. '00ED  FD21920B' 0146 AREG    LD      IY,HEADR+12
  165. '00F1  0605      0147         LD      B,5
  166. '00F3  CD4F0A'   0148 NREG    CALL    CRLF            ; DO REST OF REGS
  167. '00F6  CD8C01'   0149         CALL    PRN6            ; PRINT NAME
  168. '00F9  DD5E00    0150         LD      E,(IX+0)
  169. '00FC  CDB60A'   0151         CALL    PRTBYT          ; PRINT CONTENTS
  170. '00FF  CD590A'   0152         CALL    PROM            ; PROMPT FOR CHANGE
  171. '0102  CD630A'   0153         CALL    GETWRD
  172. '0105  2803      0154         JR      Z,NXTREG-$      ; SPACE = NO CHANGE
  173. '0107  DD7300    0155         LD      (IX+0),E
  174. '010A  DD23      0156 NXTREG  INC     IX              ; POINT TO NEXT REG
  175. '010C  10E5      0157         DJNZ    NREG-$          ; DO AGAIN IF MORE
  176. '010E  DDE1      0158         POP     IX
  177. '0110  C9        0159         RET
  178.                  0160 ;
  179.                  0161 ; DISPLAY PC, INSTRUCTION, AND ALL REGISTERS
  180.                  0162 ;
  181. '0111  DDE5      0163 DSPLY   PUSH    IX              ; SAVE POINTER
  182. '0113  C5        0164         PUSH    BC              ; SAVE MNEMONIC CODE
  183. '0114  CD4F0A'   0165         CALL    CRLF
  184. '0117  FD21860B' 0166         LD      IY,HEADR
  185. '011B  CD8C01'   0167         CALL    PRN6            ; 'CPC'
  186. '011E  ED5B680B' 0168         LD      DE,(CPC)
  187. '0122  CDB20A'   0169         CALL    PRTWRD          ; VALUE
  188. '0125  CD8C01'   0170         CALL    PRN6            ; 'INS'
  189. '0128  C1        0171         POP     BC
  190. '0129  FDE5      0172         PUSH    IY
  191. '012B  C5        0173         PUSH    BC
  192. '012C  FD21AE0D' 0174         LD      IY,MNMTBL       ; DET MNEM FROM BC
  193. '0130  3EFC      0175         LD      A,0FCH
  194.  
  195.  
  196.  
  197.  
  198.  
  199. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0004 
  200.  ADDR  CODE      STMT SOURCE STATEMENT
  201.  
  202. '0132  A1        0176         AND     C
  203. '0133  CB3F      0177         SRL     A
  204. '0135  5F        0178         LD      E,A
  205. '0136  1600      0179         LD      D,0
  206. '0138  FD19      0180         ADD     IY,DE
  207. '013A  FD5E00    0181         LD      E,(IY+0)        ; GET PACKED MNEM
  208. '013D  FD5601    0182         LD      D,(IY+1)
  209. '0140  CB23      0183         SLA     E               ; UNPACK IT
  210. '0142  CB12      0184         RL      D
  211. '0144  0E03      0185         LD      C,3             ; & PRINT THREE CHRS
  212. '0146  AF        0186 MNM2    XOR     A
  213. '0147  0605      0187         LD      B,5
  214. '0149  CB23      0188 MNM1    SLA     E
  215. '014B  CB12      0189         RL      D
  216. '014D  17        0190         RLA
  217. '014E  10F9      0191         DJNZ    MNM1-$
  218. '0150  CBF7      0192         SET     6,A
  219. '0152  C5        0193         PUSH    BC
  220. '0153  CD270B'   0194         CALL    PRNA
  221. '0156  C1        0195         POP     BC
  222. '0157  0D        0196         DEC     C
  223. '0158  20EC      0197         JR      NZ,MNM2-$
  224. '015A  C1        0198         POP     BC              ; DECODE ADDR MODE
  225. '015B  78        0199         LD      A,B
  226. '015C  CB27      0200         SLA     A
  227. '015E  CB27      0201         SLA     A
  228. '0160  CB27      0202         SLA     A
  229. '0162  5F        0203         LD      E,A
  230. '0163  1600      0204         LD      D,0
  231. '0165  FD211E0E' 0205         LD      IY,AMDTBL
  232. '0169  FD19      0206         ADD     IY,DE
  233. '016B  CD9101'   0207         CALL    PRN8            ; PRINT ADDR MODE
  234. '016E  FDE1      0208         POP     IY
  235. '0170  0605      0209         LD      B,5
  236. '0172  CD8C01'   0210 DSP1    CALL    PRN6            ; PRINT ALL REGS
  237. '0175  DD5E00    0211         LD      E,(IX+0)
  238. '0178  CDB60A'   0212         CALL    PRTBYT
  239. '017B  DD23      0213         INC     IX
  240. '017D  10F3      0214         DJNZ    DSP1-$
  241. '017F  CD8C01'   0215         CALL    PRN6            ; PRINT NEXT PC
  242. '0182  ED5B6A0B' 0216         LD      DE,(NPC)
  243. '0186  CDB20A'   0217         CALL    PRTWRD
  244. '0189  DDE1      0218         POP     IX
  245. '018B  C9        0219         RET
  246.                  0220 ;
  247. '018C  1E06      0221 PRN6    LD      E,6             ; PRINT 6 CHARS PER IY
  248. '018E  C3DB0A'   0222         JP      PRNLP
  249. '0191  1E08      0223 PRN8    LD      E,8             ; PRINT 8 CHRS PER IY
  250. '0193  C3DB0A'   0224         JP      PRNLP
  251.                  0225 ;
  252.                  0226 ; CODE FOR DECODING AND EXECUTING ONE INSTRUCTION
  253.                  0227 ; ENTER WITH HL POINTING TO INSTR TO BE DECODED. EXITS
  254.                  0228 ; WITH HL POINTING TO NEXT INSTR, B HOLDING ADDRESSING
  255.                  0229 ; MODE CODE, C HOLDING MNEMONIC CODE
  256.                  0230 ;
  257. '0196  2A6A0B'   0231 STEP    LD      HL,(NPC)        ; NEXT PC TO HL
  258. '0199  22680B'   0232         LD      (CPC),HL        ; BECOMES CURRENT PC
  259. '019C  7E        0233         LD      A,(HL)          ; OP CODE
  260.  
  261.  
  262.  
  263.  
  264.  
  265. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0005 
  266.  ADDR  CODE      STMT SOURCE STATEMENT
  267.  
  268. '019D  B7        0234         OR      A               ; ZERO?
  269. '019E  CAF601'   0235         JP      Z,PBRK          ; IF SO, 'BRK'
  270. '01A1  CB47      0236         BIT     0,A             ; TEST LSD FOR ODD/EVEN
  271. '01A3  C21804'   0237         JP      NZ,MLTMOD       ; ODD INSTRS MULTI MODE
  272. '01A6  E60F      0238         AND     0FH
  273. '01A8  2018      0239         JR      NZ,FLGTST-$
  274. '01AA  7E        0240         LD      A,(HL)          ; RESTORE OP CODE
  275. '01AB  CB67      0241         BIT     4,A             ; MSD ODD/EVEN
  276. '01AD  C22A02'   0242         JP      NZ,PBRNCH       ; IF ODD, BRANCH
  277. '01B0  FE20      0243         CP      20H
  278. '01B2  CA6202'   0244         JP      Z,PJSR          ; PROCESS JSR
  279. '01B5  FE40      0245         CP      40H
  280. '01B7  CAAC02'   0246         JP      Z,PRTI          ; PROCESS RTI
  281. '01BA  FE60      0247         CP      60H
  282. '01BC  CAA302'   0248         JP      Z,PRTS          ; PROCESS RTS
  283. '01BF  C31804'   0249         JP      MLTMOD          ; ELSE MULTI MODE
  284. '01C2  FE08      0250 FLGTST  CP      8
  285. '01C4  200E      0251         JR      NZ,IMP2-$
  286. '01C6  7E        0252         LD      A,(HL)          ; RESTORE
  287. '01C7  CB67      0253         BIT     4,A             ; MSD ODD/EVEN
  288. '01C9  CA2103'   0254         JP      Z,PIMPL         ; IF EVEN, MST BE IMPLD
  289. '01CC  FE98      0255         CP      98H             ; MSD = 9?
  290. '01CE  CADB03'   0256         JP      Z,PTYA          ; YES, PROC TYA SPECIAL
  291. '01D1  C3E803'   0257         JP      PFLGS           ; ELSE PROCESS FLAG OPS
  292. '01D4  FE0A      0258 IMP2    CP      0AH
  293. '01D6  2010      0259         JR      NZ,JMPTST-$     ; MUST BE JUMP
  294. '01D8  7E        0260         LD      A,(HL)          ; RESTORE
  295. '01D9  E6F0      0261         AND     0F0H            ; TESTS ON MSD
  296. '01DB  CB67      0262         BIT     4,A             ; ODD/EVEN
  297. '01DD  C20603'   0263         JP      NZ,PTSS         ; PROSESS SP OPS SPECIAL
  298. '01E0  FE70      0264         CP      70H
  299. '01E2  DA1804'   0265         JP      C,MLTMOD        ; PROCESS ACCUM MODES
  300. '01E5  C32103'   0266         JP      PIMPL           ; ELSE MORE IMPLIEDS
  301. '01E8  7E        0267 JMPTST  LD      A,(HL)          ; RESTORE OP CODE
  302. '01E9  FE4C      0268         CP      4CH
  303. '01EB  CA8302'   0269         JP      Z,PJABS         ; PROCESS ABS JMP
  304. '01EE  FE6C      0270         CP      6CH
  305. '01F0  CA8802'   0271         JP      Z,PJIND         ; PROCESS INDIRECT JMP
  306. '01F3  C31804'   0272         JP      MLTMOD
  307.                  0273 ;
  308.                  0274 ; INSTURCTION PROCESSORS BEGIN HERE.. ENTER WITH
  309.                  0275 ; HL = PC, IX POINTING TO SIM CPU
  310.                  0276 ;
  311.                  0277 ; IF BRK VECTOR (IPOINT) = 0, RETURN TO CMND
  312.                  0278 ;
  313. '01F6  DDCB01E6  0279 PBRK    SET     4,(IX+1)        ; SET BRK STATUS BIT
  314. '01FA  2A5B0B'   0280         LD      HL,(IPOINT)     ; SEE IF RET TO CMND
  315. '01FD  7C        0281         LD      A,H
  316. '01FE  B5        0282         OR      L
  317. '01FF  2007      0283         JR      NZ,BRK1-$
  318. '0201  C1        0284         POP     BC              ; ADJUST SP
  319. '0202  012904    0285         LD      BC,429H         ; RET TO CMND
  320. '0205  C31101'   0286         JP      DSPLY
  321. '0208  23        0287 BRK1    INC     HL              ; NORMAL BREAK
  322. '0209  CD0406'   0288         CALL    TSPY            ; SP TO IY
  323. '020C  FD7400    0289         LD      (IY+0),H        ; 'PUSH' PC
  324. '020F  FD2B      0290         DEC     IY
  325. '0211  FD7500    0291         LD      (IY+0),L
  326.  
  327.  
  328.  
  329.  
  330.  
  331. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0006 
  332.  ADDR  CODE      STMT SOURCE STATEMENT
  333.  
  334. '0214  FD2B      0292         DEC     IY
  335. '0216  DD7E01    0293         LD      A,(IX+1)        ; 'PUSH' P
  336. '0219  FD7700    0294         LD      (IY+0),A
  337. '021C  FD2B      0295         DEC     IY
  338. '021E  CD0D06'   0296         CALL    TYSP            ; IY TO SP
  339. '0221  2A5B0B'   0297         LD      HL,(IPOINT)     ; GET INTERRUPT VECTOR
  340. '0224  012904    0298         LD      BC,429H         ; CODE FOR # BYTES & MNEM
  341. '0227  C3D705'   0299         JP      END1            ; AND FINISH
  342.                  0300 ;
  343.                  0301 ; PROCESS BRANCHES
  344.                  0302 ;
  345. '022A  0600      0303 PBRNCH  LD      B,0             ; FORM INDEX INTO MSKTBL
  346. '022C  4E        0304         LD      C,(HL)          ; INSTR TO C
  347. '022D  FD21420D' 0305         LD      IY,MSKTBL
  348. '0231  CB39      0306         SRL     C               ; GET MSD
  349. '0233  CB39      0307         SRL     C
  350. '0235  CB39      0308         SRL     C
  351. '0237  CB39      0309         SRL     C
  352. '0239  0D        0310         DEC     C
  353. '023A  FD09      0311         ADD     IY,BC
  354. '023C  23        0312         INC     HL              ; POINT TO OFFSET
  355. '023D  CB49      0313         BIT     1,C             ; MSD ODD/EVEN
  356. '023F  DD7E01    0314         LD      A,(IX+1)        ; P REG TO ACC
  357. '0242  FD4E00    0315         LD      C,(IY+0)        ; # CODE
  358. '0245  FD4601    0316         LD      B,(IY+1)        ; FLAG MASK
  359. '0248  2005      0317         JR      NZ,BRSET-$      ; ODD/EVEN DET SET/CLR
  360. '024A  A0        0318         AND     B               ; ISOLATE BIT FOR TEST
  361. '024B  2807      0319         JR      Z,TRUE-$
  362. '024D  180E      0320         JR      FALSE-$
  363. '024F  A0        0321 BRSET   AND     B
  364. '0250  2002      0322         JR      NZ,TRUE-$
  365. '0252  1809      0323         JR      FALSE-$
  366. '0254  1600      0324 TRUE    LD      D,0             ; CONDITION MET; BRANCH
  367. '0256  5E        0325         LD      E,(HL)          ; OFFSET TO E
  368. '0257  CB7B      0326         BIT     7,E             ; CHECK SIGN OF OFFSET
  369. '0259  2801      0327         JR      Z,TRU1-$
  370. '025B  15        0328         DEC     D               ; IF B7 IS SET, DO NEG
  371. '025C  19        0329 TRU1    ADD      HL,DE          ; ADD OFFSET FOR NEW PC
  372. '025D  0600      0330 FALSE   LD      B,0             ; COND NOT MET; GO ON
  373. '025F  C3D605'   0331         JP      END
  374.                  0332 ;
  375.                  0333 ; PROCESS JUMPS AND JSR...JMP 0-4 AND JSR 0-4 GO INTO Z80
  376.                  0334 ; ROUTINES PER JUMP TABLE AT USR0. CONTROL THEN RETURNS
  377.                  0335 ; TO SIMULATOR UPON Z80 'RET' (C9).. ALL OTHERS PROCESSED
  378.                  0336 ; NORMALLY.
  379.                  0337 ;
  380. '0262  017302    0338 PJSR    LD      BC,273H         ; JSR
  381. '0265  C5        0339         PUSH    BC
  382. '0266  CDD002'   0340         CALL    SPCTST          ; TEST FOR USER
  383. '0269  2006      0341         JR      NZ,PJS2-$
  384. '026B  CDDE02'   0342         CALL    INUSR           ; GO TO USER SR
  385. '026E  C1        0343         POP     BC
  386. '026F  1838      0344         JR      EE0-$
  387. '0271  CD0406'   0345 PJS2    CALL    TSPY            ; NORMAL JSR
  388. '0274  FD7400    0346         LD      (IY+0),H        ; PUSH CURRENT PC
  389. '0277  FD2B      0347         DEC     IY
  390. '0279  FD7500    0348         LD      (IY+0),L
  391. '027C  FD2B      0349         DEC     IY
  392.  
  393.  
  394.  
  395.  
  396.  
  397. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0007 
  398.  ADDR  CODE      STMT SOURCE STATEMENT
  399.  
  400. '027E  CD0D06'   0350         CALL    TYSP
  401. '0281  181C      0351         JR      DOJ1-$
  402. '0283  016F02    0352 PJABS   LD      BC,26FH         ; ABS JMP
  403. '0286  1808      0353         JR      DOJP-$
  404. '0288  016F0C    0354 PJIND   LD      BC,0C6FH        ; INDIRECT JMP
  405. '028B  CDD002'   0355         CALL    SPCTST
  406. '028E  EB        0356         EX      DE,HL
  407. '028F  2B        0357         DEC     HL
  408. '0290  C5        0358 DOJP    PUSH    BC
  409. '0291  CDD002'   0359         CALL    SPCTST          ; TEST FOR SPECIALS
  410. '0294  2009      0360         JR      NZ,DOJ1-$
  411. '0296  CDDE02'   0361         CALL    INUSR           ; FOR SPECIALS
  412. '0299  CDC002'   0362         CALL    PRET            ; DO SR RETURN
  413. '029C  C1        0363         POP     BC
  414. '029D  180A      0364         JR      EE0-$           ; GO TO PC+1
  415. '029F  EB        0365 DOJ1    EX      DE,HL           ; NEW PC
  416. '02A0  C1        0366         POP     BC
  417. '02A1  181A      0367         JR      EE1-$
  418.                  0368 ;
  419.                  0369 ; PROCESS SR AND INTERRUPT RETURNS
  420.                  0370 ;
  421. '02A3  CDC002'   0371 PRTS    CALL    PRET            ; RTS...RESTORE PC
  422. '02A6  01A904    0372         LD      BC,4A9H
  423. '02A9  C3D605'   0373 EE0     JP      END             ; GO TO PC+1
  424. '02AC  CD0406'   0374 PRTI    CALL    TSPY            ; RTI
  425. '02AF  FD23      0375         INC     IY
  426. '02B1  FD7E00    0376         LD      A,(IY+0)        ; RESTORE FLAGS
  427. '02B4  DD7701    0377         LD      (IX+1),A
  428. '02B7  CDC302'   0378         CALL    PRET1           ; RESTORE PC
  429. '02BA  01A504    0379         LD      BC,4A5H
  430. '02BD  C3D705'   0380 EE1     JP      END1
  431. '02C0  CD0406'   0381 PRET    CALL    TSPY            ; SP TO IY
  432. '02C3  FD23      0382 PRET1   INC     IY              ; POINT TO LAST ENTRY
  433. '02C5  FD6E00    0383         LD      L,(IY+0)        ; RESTORE PCL
  434. '02C8  FD23      0384         INC     IY
  435. '02CA  FD6600    0385         LD      H,(IY+0)        ; RESTORE PCH
  436. '02CD  C30D06'   0386         JP      TYSP            ; RESTORE NEW SP
  437.                  0387 ;
  438.                  0388 ; TEST FOR USER SUBROUTINE CALLS/JUMPS. IF TARGET
  439.                  0389 ; ADDRESS < 0005 THEN RET WITH Z FLG SET, ELSE CLR
  440.                  0390 ;
  441. '02D0  23        0391 SPCTST  INC     HL              ; TEST FOR USR SR
  442. '02D1  5E        0392         LD      E,(HL)          ; LO BYTE
  443. '02D2  23        0393         INC     HL              ; TARGET TO DE
  444. '02D3  56        0394         LD      D,(HL)          ; HI BYTE
  445. '02D4  3E00      0395         LD      A,0             ; TARGET < 0005?
  446. '02D6  B2        0396         OR      D
  447. '02D7  C0        0397         RET     NZ
  448. '02D8  3E04      0398         LD      A,4
  449. '02DA  BB        0399         CP      E
  450. '02DB  D8        0400         RET     C
  451. '02DC  AF        0401         XOR     A               ; SET Z FLAG
  452. '02DD  C9        0402         RET
  453.                  0403 ;
  454.                  0404 ; INDEX INTO USER SUBROUTINE TABLE
  455.                  0405 ; PASS A, X, & Y TO/FROM USER ROUTINE AS A, B, & C.
  456.                  0406 ;
  457. '02DE  1600      0407 INUSR   LD      D,0
  458.  
  459.  
  460.  
  461.  
  462.  
  463. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0008 
  464.  ADDR  CODE      STMT SOURCE STATEMENT
  465.  
  466. '02E0  7B        0408         LD      A,E
  467. '02E1  83        0409         ADD     A,E
  468. '02E2  83        0410         ADD     A,E
  469. '02E3  5F        0411         LD      E,A
  470. '02E4  FD214C0B' 0412         LD      IY,USR0
  471. '02E8  01F902'   0413         LD      BC,USRET        ; RETURN ON STACK
  472. '02EB  C5        0414         PUSH    BC
  473. '02EC  FD19      0415         ADD     IY,DE
  474. '02EE  DD7E00    0416         LD      A,(IX+0)        ; PASS A,X, & Y
  475. '02F1  DD4602    0417         LD      B,(IX+2)
  476. '02F4  DD4E03    0418         LD      C,(IX+3)
  477. '02F7  FDE9      0419         JP      (IY)            ; AND GO
  478. '02F9  DD7700    0420 USRET   LD      (IX+0),A        ; RETURN HERE
  479. '02FC  DD7002    0421         LD      (IX+2),B        ; RETURN PARAMETERS
  480. '02FF  DD7103    0422         LD      (IX+3),C
  481. '0302  C9        0423         RET
  482. '0303  00        0424         NOP                     ; PAD FOR PATCH
  483. '0304  00        0425         NOP
  484. '0305  00        0426         NOP
  485.                  0427 ;
  486.                  0428 ; PROCESS SP EXCHANGES
  487.                  0429 ;
  488. '0306  FE90      0430 PTSS    CP      90H             ; WHICH ONE IS IT?
  489. '0308  200C      0431         JR      NZ,PTSX-$
  490. '030A  DD7E02    0432 PTXS    LD      A,(IX+2)        ; MOVE DATA FROM X...
  491. '030D  DD7704    0433         LD      (IX+4),A        ; TO SP
  492. '0310  01D904    0434         LD      BC,4D9H
  493. '0313  C3D605'   0435         JP      END
  494. '0316  DD7E04    0436 PTSX    LD      A,(IX+4)        ; MOVE SP
  495. '0319  DD7702    0437         LD      (IX+2),A        ; TO X REG
  496. '031C  0ED1      0438         LD      C,0D1H
  497. '031E  C3E303'   0439         JP      COMPL           ; AND MODIFY FLAGS
  498.                  0440 ;
  499.                  0441 ; PROCESS ALL REMAINING IMPLIED INSTRUCTIONS
  500.                  0442 ;
  501. '0321  4F        0443 PIMPL   LD      C,A             ; OP CODE
  502. '0322  CB39      0444         SRL     C               ; GET MSD
  503. '0324  CB39      0445         SRL     C
  504. '0326  CB39      0446         SRL     C
  505. '0328  CB39      0447         SRL     C
  506. '032A  E60F      0448         AND     0FH             ; CHECK LSD
  507. '032C  FE08      0449         CP      8
  508. '032E  FD21620D' 0450         LD      IY,IMPTBL       ; INDEX INTO TABLE
  509. '0332  CADA06'   0451         JP      Z,JPIB
  510. '0335  FD216A0D' 0452         LD      IY,IMPTBL+8
  511. '0339  C3DA06'   0453         JP      JPIB
  512.                  0454 ;
  513.                  0455 ; IMPLIED INSTR PROCESSORS
  514.                  0456 ;
  515. '033C  DD3402    0457 PINX    INC     (IX+2)          ; INX
  516. '033F  0E65      0458         LD      C,65H
  517. '0341  1813      0459         JR      IDEFLG-$
  518. '0343  DD3403    0460 PINY    INC     (IX+3)          ; INY
  519. '0346  0E69      0461         LD      C,69H
  520. '0348  180C      0462         JR      IDEFLG-$
  521. '034A  DD3502    0463 PDEX    DEC     (IX+2)          ; DEX
  522. '034D  0E55      0464         LD      C,55H
  523. '034F  1805      0465         JR      IDEFLG-$
  524.  
  525.  
  526.  
  527.  
  528.  
  529. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0009 
  530.  ADDR  CODE      STMT SOURCE STATEMENT
  531.  
  532. '0351  DD3503    0466 PDEY    DEC     (IX+3)          ; DEY
  533. '0354  0E59      0467         LD      C,59H
  534. '0356  DDCB018E  0468 IDEFLG  RES     1,(IX+1)        ; SET/RES Z FLG
  535. '035A  2004      0469         JR      NZ,SINTST-$     ; PER Z80 FLAGS
  536. '035C  DDCB01CE  0470         SET     1,(IX+1)
  537. '0360  DDCB01BE  0471 SINTST  RES     7,(IX+1)        ; ALSO SIGN FLG
  538. '0364  F21304'   0472         JP      P,ENDIT
  539. '0367  DDCB01FE  0473         SET     7,(IX+1)
  540. '036B  C31304'   0474         JP      ENDIT
  541. '036E  018504    0475 PNOP    LD      BC,485H         ; NOP
  542. '0371  C3D605'   0476         JP      END
  543. '0374  CD0406'   0477 PPHA    CALL    TSPY            ; PHA
  544. '0377  DD7E00    0478         LD      A,(IX+0)        ; ACCUM
  545. '037A  0E8D      0479         LD      C,8DH
  546. '037C  1808      0480         JR      DOPUSH-$        ; PUSH IT
  547. '037E  CD0406'   0481 PPHP    CALL    TSPY            ; PHP
  548. '0381  DD7E01    0482         LD      A,(IX+1)        ; P REG
  549. '0384  0E91      0483         LD      C,91H
  550. '0386  C5        0484 DOPUSH  PUSH    BC
  551. '0387  FD7700    0485         LD      (IY+0),A        ; PLACE ON STACK
  552. '038A  FD2B      0486         DEC     IY              ; BUMP SP DOWN
  553. '038C  CD0D06'   0487         CALL    TYSP            ; & REPLACE IT
  554. '038F  C1        0488         POP     BC
  555. '0390  C31304'   0489         JP      ENDIT
  556. '0393  CDB403'   0490 PPLA    CALL    DOPULL          ; PLA
  557. '0396  DD7700    0491         LD      (IX+0),A        ; DATA TO ACC
  558. '0399  CDED05'   0492         CALL    SINS1           ; SET/RES S,Z FLGS
  559. '039C  CD0D06'   0493         CALL    TYSP            ; RESTORE SP
  560. '039F  019504    0494         LD      BC,495H
  561. '03A2  C3D605'   0495         JP      END
  562. '03A5  CDB403'   0496 PPLP    CALL    DOPULL          ; PLP
  563. '03A8  DD7701    0497         LD      (IX+1),A        ; DATA TO P REG
  564. '03AB  CD0D06'   0498         CALL    TYSP            ; RESTORE SP
  565. '03AE  019904    0499         LD      BC,499H
  566. '03B1  C3D605'   0500         JP      END
  567. '03B4  CD0406'   0501 DOPULL  CALL    TSPY            ; GET SP
  568. '03B7  FD23      0502         INC     IY              ; BUMP SP
  569. '03B9  FD7E00    0503         LD      A,(IY+0)        ; GET DATA
  570. '03BC  C9        0504         RET
  571.                  0505 ;
  572.                  0506 ; PROCESS ACC/INDEX TRANSFERS
  573.                  0507 ;
  574. '03BD  DD7E00    0508 PTAX    LD      A,(IX+0)        ; TAX
  575. '03C0  DD7702    0509         LD      (IX+2),A
  576. '03C3  0EC9      0510         LD      C,0C9H
  577. '03C5  181C      0511         JR      COMPL-$
  578. '03C7  DD7E00    0512 PTAY    LD      A,(IX+0)        ; TAY
  579. '03CA  DD7703    0513         LD      (IX+3),A
  580. '03CD  0ECD      0514         LD      C,0CDH
  581. '03CF  1812      0515         JR      COMPL-$
  582. '03D1  DD7E02    0516 PTXA    LD      A,(IX+2)        ; TXA
  583. '03D4  DD7700    0517         LD      (IX+0),A
  584. '03D7  0ED5      0518         LD      C,0D5H
  585. '03D9  1808      0519         JR      COMPL-$
  586. '03DB  DD7E03    0520 PTYA    LD      A,(IX+3)        ; TYA
  587. '03DE  DD7700    0521         LD      (IX+0),A
  588. '03E1  0EDD      0522         LD      C,0DDH
  589. '03E3  CDED05'   0523 COMPL   CALL    SINS1           ; SET/RES S,Z FLGS
  590.  
  591.  
  592.  
  593.  
  594.  
  595. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0010 
  596.  ADDR  CODE      STMT SOURCE STATEMENT
  597.  
  598. '03E6  182B      0524         JR      ENDIT-$
  599.                  0525 ;
  600.                  0526 ; PROCESS FLAG SET/RES INSTRUCTIONS
  601.                  0527 ;
  602. '03E8  FD21520D' 0528 PFLGS   LD      IY,FLGTBL       ; TABLE START
  603. '03EC  0600      0529         LD      B,0
  604. '03EE  FEB8      0530         CP      0B8H            ; CLV SPECIAL
  605. '03F0  2002      0531         JR      NZ,PFL1-$
  606. '03F2  CBAF      0532         RES     5,A
  607. '03F4  1F        0533 PFL1    RRA                     ; CHECK MSD
  608. '03F5  1F        0534         RRA
  609. '03F6  1F        0535         RRA
  610. '03F7  1F        0536         RRA
  611. '03F8  E60E      0537         AND     0EH             ; MASK MSD + 1
  612. '03FA  CB4F      0538         BIT     1,A             ; TEST FOR SET/RES
  613. '03FC  4F        0539         LD      C,A             ; FORM TABLE INDEX
  614. '03FD  FD09      0540         ADD     IY,BC
  615. '03FF  FD4E00    0541         LD      C,(IY+0)        ; GET MNEM CODE
  616. '0402  FD7E01    0542         LD      A,(IY+1)        ; GET MASK
  617. '0405  2006      0543         JR      NZ,PFL2-$
  618. '0407  2F        0544         CPL                     ; DO CLEARS
  619. '0408  DDA601    0545         AND     (IX+1)
  620. '040B  1803      0546         JR      PFL3-$
  621. '040D  DDB601    0547 PFL2    OR      (IX+1)          ; DO SETS
  622. '0410  DD7701    0548 PFL3    LD      (IX+1),A        ; AND STUFF IT
  623. '0413  0604      0549 ENDIT   LD      B,4
  624. '0415  C3D605'   0550         JP      END
  625.                  0551 ;
  626.                  0552 ; PROCESS ALL INSTRUCTIONS HAVING MULTIPLE ADDRESSING
  627.                  0553 ;
  628. '0418  01D405'   0554 MLTMOD  LD      BC,MLTEND       ; PUT RETURN ON STACK
  629. '041B  C5        0555         PUSH    BC
  630. '041C  7E        0556         LD      A,(HL)          ; GET INSTR TO A
  631. '041D  4F        0557         LD      C,A             ; AND TO C
  632. '041E  CB39      0558         SRL     C               ; TEST EVEN/ODD
  633. '0420  F5        0559         PUSH    AF
  634. '0421  CB39      0560         SRL     C               ; ROTATE MSD INTO LSD
  635. '0423  CB39      0561         SRL     C
  636. '0425  CB39      0562         SRL     C
  637. '0427  CB81      0563         RES     0,C             ; MASK LSB
  638. '0429  F1        0564         POP     AF
  639. '042A  FD218E0D' 0565         LD      IY,EVNTBL       ; JUMP PER TABLES
  640. '042E  D2DA06'   0566         JP      NC,JPIB
  641. '0431  FD219E0D' 0567         LD      IY,ODDTBL
  642. '0435  C3DA06'   0568         JP      JPIB
  643.                  0569 ;
  644.                  0570 ; MULTI-MODE INSTRUCTION PROCESSORS
  645.                  0571 ;
  646. '0438  CD1A06'   0572 PASL    CALL    MODBBB          ; GET MODE,ADDR,&DATA
  647. '043B  CB27      0573         SLA     A               ; ASL
  648. '043D  CDE305'   0574         CALL    SINSET          ; SET/RES S,Z,C FLGS
  649. '0440  CDD806'   0575         CALL    PUTDAT          ; RESTORE DATA
  650. '0443  3E08      0576         LD      A,8
  651. '0445  C9        0577         RET
  652. '0446  CB4F      0578 PBTRL   BIT     1,A             ; BIT OR ROL?
  653. '0448  2810      0579         JR      Z,PBIT-$
  654. '044A  CD1A06'   0580         CALL    MODBBB          ; ROL
  655. '044D  CDDB05'   0581         CALL    CARSET          ; SET UP C FLAG
  656.  
  657.  
  658.  
  659.  
  660.  
  661. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0011 
  662.  ADDR  CODE      STMT SOURCE STATEMENT
  663.  
  664. '0450  17        0582 PROL1   RLA                     ; DO ROTATE
  665. '0451  CDE305'   0583         CALL    SINSET
  666. '0454  CDD806'   0584         CALL    PUTDAT
  667. '0457  3E9C      0585         LD      A,9CH
  668. '0459  C9        0586         RET
  669. '045A  DDCB01B6  0587 PBIT    RES     6,(IX+1)        ; BIT
  670. '045E  CD3206'   0588         CALL    MODBBX
  671. '0461  C5        0589         PUSH    BC
  672. '0462  47        0590         LD      B,A             ; SAVE IT IN B
  673. '0463  DD7E00    0591         LD      A,(IX+0)        ; GET SIM ACC
  674. '0466  A0        0592         AND     B               ; AND IT
  675. '0467  CB77      0593         BIT     6,A             ; CHECK V BIT
  676. '0469  2804      0594         JR      Z,PBIT1-$
  677. '046B  DDCB01F6  0595         SET     6,(IX+1)        ; SET V BIT IF REQD
  678. '046F  CDED05'   0596 PBIT1   CALL    SINS1           ; SET/RES S,Z FLGS
  679. '0472  C1        0597         POP     BC
  680. '0473  3E18      0598         LD      A,18H
  681. '0475  C9        0599         RET
  682. '0476  CD1A06'   0600 PLSR    CALL    MODBBB          ; LSR
  683. '0479  CB3F      0601         SRL     A
  684. '047B  CDE305'   0602         CALL    SINSET
  685. '047E  CDD806'   0603         CALL    PUTDAT
  686. '0481  3E80      0604         LD      A,80H
  687. '0483  C9        0605         RET
  688. '0484  CD1A06'   0606 PROR    CALL    MODBBB          ; ROR
  689. '0487  CDDB05'   0607         CALL    CARSET          ; SET UP C FLG
  690. '048A  1F        0608 PROR1   RRA                     ; DO ROTATE
  691. '048B  CDE305'   0609         CALL    SINSET
  692. '048E  CDD806'   0610         CALL    PUTDAT
  693. '0491  3EA0      0611         LD      A,0A0H
  694. '0493  C9        0612         RET
  695. '0494  CB4F      0613 PSTXY   BIT     1,A             ; WHICH ONE?
  696. '0496  280C      0614         JR      Z,PSY-$
  697. '0498  CD3206'   0615         CALL    MODBBX          ; STX
  698. '049B  DD7E02    0616         LD      A,(IX+2)
  699. '049E  CDD806'   0617         CALL    PUTDAT
  700. '04A1  3EC0      0618         LD      A,0C0H
  701. '04A3  C9        0619         RET
  702. '04A4  CD3206'   0620 PSY     CALL    MODBBX          ; STY
  703. '04A7  DD7E03    0621         LD      A,(IX+3)
  704. '04AA  CDD806'   0622         CALL    PUTDAT
  705. '04AD  3EC4      0623         LD      A,0C4H
  706. '04AF  C9        0624         RET
  707. '04B0  CB4F      0625 PLDXY   BIT     1,A             ; WHICH ONE?
  708. '04B2  280C      0626         JR      Z,PLY-$
  709. '04B4  CD2006'   0627         CALL    MODDDD          ; LDX
  710. '04B7  DD7702    0628         LD      (IX+2),A
  711. '04BA  CDED05'   0629         CALL    SINS1
  712. '04BD  3E78      0630         LD      A,78H
  713. '04BF  C9        0631         RET
  714. '04C0  CD2006'   0632 PLY     CALL    MODDDD          ; LDY
  715. '04C3  DD7703    0633         LD      (IX+3),A
  716. '04C6  CDED05'   0634         CALL    SINS1
  717. '04C9  3E7C      0635         LD      A,7CH
  718. '04CB  C9        0636         RET
  719. '04CC  CB4F      0637 PDCY    BIT     1,A             ; WHICH ONE?
  720. '04CE  2827      0638         JR      Z,PCPY-$
  721. '04D0  CD3206'   0639         CALL    MODBBX          ; DEC
  722.  
  723.  
  724.  
  725.  
  726.  
  727. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0012 
  728.  ADDR  CODE      STMT SOURCE STATEMENT
  729.  
  730. '04D3  3D        0640         DEC     A
  731. '04D4  CDED05'   0641         CALL    SINS1
  732. '04D7  CDD806'   0642         CALL    PUTDAT
  733. '04DA  3E50      0643         LD      A,50H
  734. '04DC  C9        0644         RET
  735. '04DD  CB4F      0645 PICX    BIT     1,A             ; WHICH ONE?
  736. '04DF  280D      0646         JR      Z,PCPX-$
  737. '04E1  CD3206'   0647         CALL    MODBBX          ; INC
  738. '04E4  3C        0648         INC     A
  739. '04E5  CDED05'   0649         CALL    SINS1
  740. '04E8  CDD806'   0650         CALL    PUTDAT
  741. '04EB  3E60      0651         LD      A,60H
  742. '04ED  C9        0652         RET
  743. '04EE  CD0405'   0653 PCPX    CALL    CXY             ; CPX
  744. '04F1  CDE305'   0654         CALL    SINSET
  745. '04F4  3E48      0655         LD      A,48H
  746. '04F6  C9        0656         RET
  747. '04F7  DD23      0657 PCPY    INC     IX
  748. '04F9  CD0405'   0658         CALL    CXY             ; CPY
  749. '04FC  DD2B      0659         DEC     IX
  750. '04FE  CDE305'   0660         CALL    SINSET
  751. '0501  3E4C      0661         LD      A,4CH
  752. '0503  C9        0662         RET
  753. '0504  CD4306'   0663 CXY     CALL    MODCC
  754. '0507  C5        0664         PUSH    BC
  755. '0508  47        0665         LD      B,A             ; MEM DAT INTO B
  756. '0509  DD7E02    0666         LD      A,(IX+2)        ; X (Y) INTO A
  757. '050C  90        0667         SUB     B
  758. '050D  3F        0668         CCF                     ; BORROW = 6502 /C
  759. '050E  C1        0669         POP     BC
  760. '050F  C9        0670         RET
  761. '0510  DDCB01B6  0671 PSBC    RES     6,(IX+1)        ; SBC...CLR V FLG
  762. '0514  CD1406'   0672         CALL    MODAAA
  763. '0517  C5        0673         PUSH    BC
  764. '0518  47        0674         LD      B,A             ; DATA TO B
  765. '0519  DD7E00    0675         LD      A,(IX+0)        ; ACC TO A
  766. '051C  CDDB05'   0676         CALL    CARSET          ; SET UP C FLAG
  767. '051F  3F        0677         CCF                     ; AND COMPLEMENT IT
  768. '0520  DDCB015E  0678 PSBC1   BIT     3,(IX+1)        ; CHECK FOR DEC MODE
  769. '0524  2003      0679         JR      NZ,PSDEC-$
  770. '0526  98        0680         SBC     A,B
  771. '0527  1802      0681         JR      PSBC2-$
  772. '0529  98        0682 PSDEC   SBC     A,B             ; DECIMAL MODE
  773. '052A  27        0683         DAA
  774. '052B  DD7700    0684 PSBC2   LD      (IX+0),A        ; RESULT TO ACCUM
  775. '052E  3F        0685         CCF                     ; BORROW = 6502 /C
  776. '052F  CDE305'   0686         CALL    SINSET
  777. '0532  E6C0      0687         AND     0C0H            ; TEST XOR OF B6 & B7
  778. '0534  2808      0688         JR      Z,SBC3-$
  779. '0536  FEC0      0689         CP      0C0H
  780. '0538  2804      0690         JR      Z,SBC3-$
  781. '053A  DDCB01F6  0691         SET     6,(IX+1)        ; SET V FLAG IF XOR = 1
  782. '053E  C1        0692 SBC3    POP     BC
  783. '053F  3EAC      0693         LD      A,0ACH
  784. '0541  C9        0694         RET
  785. '0542  CD1406'   0695 PORA    CALL    MODAAA          ; ORA
  786. '0545  C5        0696         PUSH    BC
  787. '0546  47        0697         LD      B,A             ; DATA TO B
  788.  
  789.  
  790.  
  791.  
  792.  
  793. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0013 
  794.  ADDR  CODE      STMT SOURCE STATEMENT
  795.  
  796. '0547  DD7E00    0698         LD      A,(IX+0)        ; ACC TO A
  797. '054A  B0        0699         OR      B
  798. '054B  DD7700    0700         LD      (IX+0),A        ; RESULT TO ACC
  799. '054E  CDED05'   0701         CALL    SINS1
  800. '0551  C1        0702         POP     BC
  801. '0552  3E88      0703         LD      A,88H
  802. '0554  C9        0704         RET
  803. '0555  CD1406'   0705 PAND    CALL    MODAAA          ; AND
  804. '0558  C5        0706         PUSH    BC
  805. '0559  47        0707         LD      B,A             ; DATA TO B
  806. '055A  DD7E00    0708         LD      A,(IX+0)        ; ACC TO A
  807. '055D  A0        0709         AND     B
  808. '055E  DD7700    0710         LD      (IX+0),A        ; RESULT TO ACC
  809. '0561  CDED05'   0711         CALL    SINS1
  810. '0564  C1        0712         POP     BC
  811. '0565  3E04      0713         LD      A,4
  812. '0567  C9        0714         RET
  813. '0568  CD1406'   0715 PEOR    CALL    MODAAA          ; EOR
  814. '056B  C5        0716         PUSH    BC
  815. '056C  47        0717         LD      B,A             ; DATA TO B
  816. '056D  DD7E00    0718         LD      A,(IX+0)        ; ACC TO A
  817. '0570  A8        0719         XOR     B
  818. '0571  DD7700    0720         LD      (IX+0),A        ; RESULT TO ACC
  819. '0574  CDED05'   0721         CALL    SINS1
  820. '0577  C1        0722         POP     BC
  821. '0578  3E5C      0723         LD      A,5CH
  822. '057A  C9        0724         RET
  823. '057B  DDCB01B6  0725 PADC    RES     6,(IX+1)        ; ADC: CLEAR V FLAG
  824. '057F  CD1406'   0726         CALL    MODAAA
  825. '0582  C5        0727         PUSH    BC
  826. '0583  47        0728         LD      B,A             ; DATA TO B
  827. '0584  DD7E00    0729         LD      A,(IX+0)        ; ACC TO A
  828. '0587  CDDB05'   0730         CALL    CARSET          ; SET UP C FLG
  829. '058A  DDCB015E  0731 PADC1   BIT     3,(IX+1)        ; CHECK FOR DEC MODE
  830. '058E  2003      0732         JR      NZ,PADEC-$
  831. '0590  88        0733         ADC     A,B             ; BINARY MODE
  832. '0591  1802      0734         JR      PADC2-$
  833. '0593  88        0735 PADEC   ADC     A,B             ; DECIMAL MODE
  834. '0594  27        0736         DAA
  835. '0595  DD7700    0737 PADC2   LD      (IX+0),A        ; RESULT TO ACC
  836. '0598  CDE305'   0738         CALL    SINSET
  837. '059B  E6C0      0739         AND     0C0H            ; CHECK XOR OF B6 & B7
  838. '059D  2808      0740         JR      Z,PADC3-$
  839. '059F  FEC0      0741         CP      0C0H
  840. '05A1  2804      0742         JR      Z,PADC3-$
  841. '05A3  DDCB01F6  0743         SET     6,(IX+1)        ; SET V FLG IF XOR = 1
  842. '05A7  C1        0744 PADC3   POP     BC
  843. '05A8  3E00      0745         LD      A,0
  844. '05AA  C9        0746         RET
  845. '05AB  CD1406'   0747 PSTA    CALL    MODAAA          ; STA
  846. '05AE  DD7E00    0748         LD      A,(IX+0)        ; ACC TO MEM
  847. '05B1  CDD806'   0749         CALL    PUTDAT
  848. '05B4  3EBC      0750         LD      A,0BCH
  849. '05B6  C9        0751         RET
  850. '05B7  CD1406'   0752 PLDA    CALL    MODAAA          ; LDA
  851. '05BA  DD7700    0753         LD      (IX+0),A        ; MEM TO ACC
  852. '05BD  CDED05'   0754         CALL    SINS1
  853. '05C0  3E74      0755         LD      A,74H
  854.  
  855.  
  856.  
  857.  
  858.  
  859. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0014 
  860.  ADDR  CODE      STMT SOURCE STATEMENT
  861.  
  862. '05C2  C9        0756         RET
  863. '05C3  CD1406'   0757 PCMP    CALL    MODAAA          ; CMP
  864. '05C6  C5        0758         PUSH    BC
  865. '05C7  47        0759         LD      B,A             ; DATA TO B
  866. '05C8  DD7E00    0760         LD      A,(IX+0)        ; ACC TO A
  867. '05CB  90        0761         SUB     B
  868. '05CC  3F        0762         CCF                     ; BORROW = 6502 /C
  869. '05CD  CDE305'   0763         CALL    SINSET
  870. '05D0  C1        0764         POP     BC
  871. '05D1  3E44      0765         LD      A,44H
  872. '05D3  C9        0766         RET
  873.                  0767 ;
  874.                  0768 ; END OF ALL MULTI MODE PROCESSORS
  875.                  0769 ;
  876. '05D4  81        0770 MLTEND  ADD     A,C             ; FORM MNEM CODE IN C
  877. '05D5  4F        0771         LD      C,A
  878. '05D6  23        0772 END     INC     HL              ; POINT TO NXT INSTR
  879. '05D7  226A0B'   0773 END1    LD      (NPC),HL
  880. '05DA  C9        0774         RET                     ; BACK TO CMND
  881.                  0775 ;
  882.                  0776 ; VARIOUS SUBROUTINES FOR TRANSLATOR
  883.                  0777 ;
  884.                  0778 ; SET Z80 C FLAG TO MATCH 6502 C FLG
  885.                  0779 ;
  886. '05DB  37        0780 CARSET  SCF
  887. '05DC  DDCB0146  0781         BIT     0,(IX+1)
  888. '05E0  C0        0782         RET     NZ
  889. '05E1  3F        0783         CCF
  890. '05E2  C9        0784         RET
  891.                  0785 ;
  892.                  0786 ; SET SIMULATOR S,Z,C FLAGS PER Z80 RESULTS
  893.                  0787 ;
  894. '05E3  DDCB0186  0788 SINSET  RES     0,(IX+1)        ; RESET C FLAG
  895. '05E7  3004      0789         JR      NC,SINS1-$
  896. '05E9  DDCB01C6  0790         SET     0,(IX+1)        ; SET C PER Z80 C
  897. '05ED  DDCB018E  0791 SINS1   RES     1,(IX+1)        ; CLEAR Z FLAG
  898. '05F1 0   0474         JP      ENDIT
  899. '036E  018504    0475 PNOP    LD      BC,485H         ; NOP
  900. '0371  C3D605'   0476         JP   1CE  0794         SET     1,(IX+1)        ; SET Z FLG
  901. '05F8  DDCB01BE  0795 SINS2   RES     7,(IX+1)        ; CLEAR SIGN FLAG
  902. '05FC  CB7F      0796         BIT     7,A             ; CHECK SIGN OF ACC
  903. '05FE  C8        0797         RET     Z
  904. '05FF  DDCB01FE  0798         SET     7,(IX+1)        ; SET S IF NECESSARY
  905. '0603  C9        0799         RET
  906.                  0800 ;
  907.                  0801 ; TRANSFER SIMULATOR SP TO/FROM IY
  908.                  0802 ;
  909. '0604  0601      0803 TSPY    LD      B,1             ; XFER SP TO IY
  910. '0606  DD4E04    0804         LD      C,(IX+4)
  911. '0609  C5        0805         PUSH    BC
  912. '060A  FDE1      0806         POP     IY
  913. '060C  C9        0807         RET
  914. '060D  FDE5      0808 TYSP    PUSH    IY              ; XFER IY TO SP
  915. '060F  C1        0809         POP     BC
  916. '0610  DD7104    0810         LD      (IX+4),C
  917. '0613  C9        0811         RET
  918.                  0812 ;
  919.                  0813 ; ADDRESS MODE DECODERS...RETURN WITH DATA TO BE MODIFIED
  920.  
  921.  
  922.  
  923.  
  924.  
  925. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0015 
  926.  ADDR  CODE      STMT SOURCE STATEMENT
  927.  
  928.                  0814 ; IN A, ADDRESS MODE CODE IN B, # BYTES IN C, ADDRESS OF
  929.                  0815 ; DATA IN DE
  930.                  0816 ;
  931. '0614  FD21000D' 0817 MODAAA  LD      IY,AAATBL       ; GROUP 1
  932. '0618  182D      0818         JR      MOD1-$
  933. '061A  FD21100D' 0819 MODBBB  LD      IY,BBBTBL       ; GROUP 2
  934. '061E  1827      0820         JR      MOD1-$
  935. '0620  FD21200D' 0821 MODDDD  LD      IY,DDDTBL       ; GROUP 3
  936. '0624  FEB6      0822         CP      0B6H            ; LDX ZPG,Y SPECIAL
  937. '0626  2002      0823         JR      NZ,DDD1-$
  938. '0628  3E10      0824         LD      A,10H
  939. '062A  FEBE      0825 DDD1    CP      0BEH            ; LDX ABS,Y SPECIAL
  940. '062C  2019      0826         JR      NZ,MOD1-$
  941. '062E  3E18      0827         LD      A,18H
  942. '0630  1815      0828         JR      MOD1-$
  943. '0632  FD21300D' 0829 MODBBX  LD      IY,BBXTBL       ; GROUP 4 & 6
  944. '0636  FE96      0830         CP      96H             ; STX ZPG,Y SPECIAL
  945. '0638  2805      0831         JR      Z,BBX-$
  946. '063A  1F        0832         RRA                     ; EXTRA SHIFT
  947. '063B  E60C      0833         AND     0CH             ; EXTRA MASK
  948. '063D  1808      0834         JR      MOD1-$
  949. '063F  3E10      0835 BBX     LD      A,10H           ; SPECIAL
  950. '0641  1804      0836         JR      MOD1-$
  951. '0643  FD213A0D' 0837 MODCC   LD      IY,CCTBL        ; GROUP 5
  952. '0647  1F        0838 MOD1    RRA                     ; ROTATE MODE INTO LSD
  953. '0648  E60E      0839         AND     0EH             ; MASK THE REST
  954. '064A  0600      0840         LD      B,0             ; FORM OFFSET IN BC
  955. '064C  4F        0841         LD      C,A
  956. '064D  FD09      0842         ADD     IY,BC           ; ADD TO TABLE START
  957. '064F  FD4E00    0843         LD      C,(IY+0)        ; MODE OFFSET
  958. '0652  FD4601    0844         LD      B,(IY+1)        ; # CODE
  959. '0655  C5        0845         PUSH    BC              ; SAVE FOR LATER
  960. '0656  FD217A0D' 0846 GETDAT  LD      IY,GETTBL       ; JUMP TABLE
  961. '065A  C3DA06'   0847         JP      JPIB
  962. '065D  23        0848 PABY    INC     HL              ; ABS,Y
  963. '065E  7E        0849         LD      A,(HL)          ; 2ND BYTE INSTR
  964. '065F  DD8603    0850         ADD     A,(IX+3)        ; PLUS Y INDEX
  965. '0662  5F        0851         LD      E,A             ; TO E
  966. '0663  23        0852         INC     HL
  967. '0664  7E        0853         LD      A,(HL)          ; 3RD BYTE INSTR
  968. '0665  CE00      0854         ADC     A,0             ; PLUS CARRY
  969. '0667  57        0855         LD      D,A             ; TO D
  970. '0668  1861      0856         JR      EXIT-$
  971. '066A  23        0857 PIMM    INC     HL              ; IMMEDIATE
  972. '066B  7E        0858         LD      A,(HL)          ; DATA TO ACC
  973. '066C  185E      0859         JR      EX1-$
  974. '066E  DD7E00    0860 PACX    LD      A,(IX+0)        ; ACCUM
  975. '0671  DDE5      0861         PUSH    IX
  976. '0673  D1        0862         POP     DE
  977. '0674  1856      0863         JR      EX1-$
  978. '0676  23        0864 PZPG    INC     HL              ; ZPG
  979. '0677  5E        0865         LD      E,(HL)          ; ADDRESS TO DE
  980. '0678  1600      0866         LD      D,0
  981. '067A  184F      0867         JR      EXIT-$
  982. '067C  23        0868 PAB     INC     HL              ; ABSOLUTE
  983. '067D  5E        0869         LD      E,(HL)          ; ADDRESS TO DE
  984. '067E  23        0870         INC     HL
  985. '067F  56        0871         LD      D,(HL)
  986.  
  987.  
  988.  
  989.  
  990.  
  991. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0016 
  992.  ADDR  CODE      STMT SOURCE STATEMENT
  993.  
  994. '0680  1849      0872         JR      EXIT-$
  995. '0682  DD7E02    0873 PZX     LD      A,(IX+2)        ; ZPG,X...GET X INDEX
  996. '0685  1803      0874         JR      PZ1-$
  997. '0687  DD7E03    0875 PZY     LD      A,(IX+3)        ; ZPG,Y...GET Y INDEX
  998. '068A  23        0876 PZ1     INC     HL
  999. '068B  86        0877         ADD     A,(HL)          ; ADD BASE ADDRESS
  1000. '068C  5F        0878         LD      E,A             ; PUT IN E
  1001. '068D  1600      0879         LD      D,0             ; ZERO PAGE, NO WRAP
  1002. '068F  183A      0880         JR      EXIT-$
  1003. '0691  23        0881 PZIX    INC     HL              ; (ZPG,X)
  1004. '0692  7E        0882         LD      A,(HL)          ; 2ND BYTE INSTR
  1005. '0693  DD8602    0883         ADD     A,(IX+2)        ; ADD X INDEX
  1006. '0696  5F        0884         LD      E,A             ; TO FORM BASE ADDRESS...
  1007. '0697  1600      0885         LD      D,0             ; IN ZERO PG, NO WRAP
  1008. '0699  FD210000  0886         LD      IY,0
  1009. '069D  FD19      0887         ADD     IY,DE           ; TRANSFER TO IY
  1010. '069F  FD5E00    0888         LD      E,(IY+0)        ; EFF ADDR TO DE
  1011. '06A2  FD5601    0889         LD      D,(IY+1)
  1012. '06A5  1824      0890         JR      EXIT-$
  1013. '06A7  23        0891 PZIY    INC     HL              ; (ZPG),Y
  1014. '06A8  5E        0892         LD      E,(HL)          ; BASE ADDRESS
  1015. '06A9  1600      0893         LD      D,0             ; IN ZERO PAGE
  1016. '06AB  FD210000  0894         LD      IY,0
  1017. '06AF  FD19      0895         ADD     IY,DE           ; TRANSFER TO IY
  1018. '06B1  FD7E00    0896         LD      A,(IY+0)        ; EFF ADDRESS...
  1019. '06B4  DD8603    0897         ADD     A,(IX+3)        ; PLUS Y INDEX...
  1020. '06B7  5F        0898         LD      E,A             ; TO DE
  1021. '06B8  FD7E01    0899         LD      A,(IY+1)
  1022. '06BB  CE00      0900         ADC     A,0
  1023. '06BD  57        0901         LD      D,A
  1024. '06BE  180B      0902         JR      EXIT-$
  1025. '06C0  23        0903 PABX    INC     HL              ; ABS,X
  1026. '06C1  7E        0904         LD      A,(HL)          ; 2ND BYTE INSTR
  1027. '06C2  DD8602    0905         ADD     A,(IX+2)        ; PLUS X INDEX
  1028. '06C5  5F        0906         LD      E,A             ; TO E
  1029. '06C6  23        0907         INC     HL              ; 3RD BYTE INSTR
  1030. '06C7  7E        0908         LD      A,(HL)
  1031. '06C8  CE00      0909         ADC     A,0             ; PLUS CARRY
  1032. '06CA  57        0910         LD      D,A             ; TO E
  1033. '06CB  1A        0911 EXIT    LD      A,(DE)          ; DATA TO ACC
  1034. '06CC  C1        0912 EX1     POP     BC              ; RESTORE # CODE
  1035. '06CD  F5        0913         PUSH    AF              ; SAVE DATA
  1036. '06CE  3E03      0914         LD      A,3
  1037. '06D0  A0        0915         AND     B               ; # BYTES...
  1038. '06D1  4F        0916         LD      C,A             ; TO C
  1039. '06D2  CB38      0917         SRL     B
  1040. '06D4  CB38      0918         SRL     B               ; B=ADDR MODE
  1041. '06D6  F1        0919         POP     AF              ; RESTORE DATA
  1042. '06D7  C9        0920         RET
  1043.                  0921 ;
  1044.                  0922 ; STORE DATA TO ADDRESS FROM GETDAT
  1045.                  0923 ;
  1046. '06D8  12        0924 PUTDAT  LD      (DE),A
  1047. '06D9  C9        0925         RET
  1048.                  0926 ;
  1049.                  0927 ; INDEX INTO JUMP TABLES...ENTER WITH TABLE START
  1050.                  0928 ; ADDRESS IN IY AND OFFSET IN C. CALCULATES TABLE
  1051.                  0929 ; POSITION AND JUMPS TO RESULT
  1052.  
  1053.  
  1054.  
  1055.  
  1056.  
  1057. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0017 
  1058.  ADDR  CODE      STMT SOURCE STATEMENT
  1059.  
  1060.                  0930 ;
  1061. '06DA  0600      0931 JPIB    LD      B,0             ; INDIRECT JUMP PER TABLE
  1062. '06DC  FD09      0932         ADD     IY,BC           ; TABLE ADDRESS TO IY
  1063. '06DE  FD4E00    0933         LD      C,(IY+0)        ; TABLE ENTRY TO BC
  1064. '06E1  FD4601    0934         LD      B,(IY+1)
  1065. '06E4  C5        0935         PUSH    BC
  1066. '06E5  FDE1      0936         POP     IY              ; ENTRY TO IY
  1067. '06E7  FDE9      0937         JP      (IY)            ; AND GO TO IT
  1068.                  0938 ;
  1069.                  0939 ; ELEMENTARY MONITOR FUNCTIONS TO EXAMINE A BLOCK OF
  1070.                  0940 ; MEMORY LOCATIONS (E) AND TO CHECK AND UPDATE
  1071.                  0941 ; INDIVIDUAL LOCATIONS (M)
  1072.                  0942 ;
  1073. '06E9  11E40B'   0943 EXAM    LD      DE,GETADR       ; EXAM BLOCK OF MEM
  1074. '06EC  CDCE0A'   0944         CALL    PRTDE
  1075. '06EF  CD630A'   0945         CALL    GETWRD          ; GET START ADDR
  1076. '06F2  D5        0946         PUSH    DE
  1077. '06F3  CD540A'   0947         CALL    LINF
  1078. '06F6  11FC0B'   0948         LD      DE,GETN
  1079. '06F9  CDCE0A'   0949         CALL    PRTDE
  1080. '06FC  CD630A'   0950         CALL    GETWRD          ; GET # BYTES
  1081. '06FF  D5        0951         PUSH    DE
  1082. '0700  C1        0952         POP     BC
  1083. '0701  1E04      0953         LD      E,4             ; CHANGE TO # LINES (/16)
  1084. '0703  AF        0954         XOR     A
  1085. '0704  CB38      0955 BYTLN   SRL     B
  1086. '0706  CB19      0956         RR      C
  1087. '0708  3001      0957         JR      NC,XXX-$
  1088. '070A  3C        0958         INC     A
  1089. '070B  1D        0959 XXX     DEC     E
  1090. '070C  20F6      0960         JR      NZ,BYTLN-$
  1091. '070E  B7        0961         OR      A               ; SEE IF PARTIAL LINE
  1092. '070F  2801      0962         JR      Z,YYY-$
  1093. '0711  03        0963         INC     BC
  1094. '0712  E1        0964 YYY     POP     HL              ; HL = START, BC = COUNT
  1095. '0713  0B        0965         DEC     BC              ; ONE LESS LINE
  1096. '0714  C5        0966 EXLP    PUSH    BC              ; LOOP FOR ONE LINE
  1097. '0715  CD4F0A'   0967         CALL    CRLF
  1098. '0718  CD9007'   0968         CALL    LADR            ; PRINT ADDRESS AT START
  1099. '071B  CD9D07'   0969         CALL    TWO             ; INSERT TWO SPACES
  1100. '071E  E5        0970         PUSH    HL              ; SAVE ADDRESS FOR ALPHA
  1101. '071F  1E10      0971         LD      E,16            ; 16 ENTRIES PER LINE
  1102. '0721  7E        0972 LNLP    LD      A,(HL)          ; GET BYTE FROM MEMORY
  1103. '0722  CD9607'   0973         CALL    PACC            ; PRINT IT HEX
  1104. '0725  CDA007'   0974         CALL    ONE             ; SPACE
  1105. '0728  23        0975         INC     HL              ; POINT TO NEXT BYTE
  1106. '0729  1D        0976         DEC     E               ; DONE WITH HEX?
  1107. '072A  20F5      0977         JR      NZ,LNLP-$       ; NO, DO NEXT BYTE
  1108. '072C  CD9D07'   0978         CALL    TWO             ; YES, SET UP FOR ALPHA
  1109. '072F  E1        0979         POP     HL              ; SAME STARTING ADDRESS
  1110. '0730  1E10      0980         LD      E,16
  1111. '0732  7E        0981 ASCII   LD      A,(HL)          ; GET BYTE
  1112. '0733  FE20      0982         CP      20H             ; IS IT PRINTABLE?
  1113. '0735  3804      0983         JR      C,DOT-$
  1114. '0737  FE80      0984         CP      80H
  1115. '0739  3802      0985         JR      C,ASOK-$
  1116. '073B  3E2E      0986 DOT     LD      A,'.'           ; NO, PRINT A DOT
  1117. '073D  CD270B'   0987 ASOK    CALL    PRNA
  1118.  
  1119.  
  1120.  
  1121.  
  1122.  
  1123. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0018 
  1124.  ADDR  CODE      STMT SOURCE STATEMENT
  1125.  
  1126. '0740  23        0988         INC     HL              ; BUMP POINTER
  1127. '0741  1D        0989         DEC     E               ; DONE WITH LINE?
  1128. '0742  20EE      0990         JR      NZ,ASCII-$
  1129. '0744  C1        0991         POP     BC
  1130. '0745  78        0992         LD      A,B             ; SEE IF ALL DONE
  1131. '0746  B1        0993         OR      C
  1132. '0747  C8        0994         RET     Z               ; YES, RET TO CMND
  1133. '0748  0B        0995         DEC     BC
  1134. '0749  18C9      0996         JR      EXLP-$          ; ELSE DO ANOTHER LINE
  1135.                  0997 ;
  1136.                  0998 ; SUBSTITUTE MEMORY...ENTER BY 'M'
  1137.                  0999 ;
  1138. '074B  11E40B'   1000 SUBM    LD      DE,GETADR       ; ASK FOR ADDRESS
  1139. '074E  CDCE0A'   1001         CALL    PRTDE
  1140. '0751  CD630A'   1002         CALL    GETWRD          ; GET IT
  1141. '0754  EB        1003         EX      DE,HL           ; MOVE IT TO HL
  1142. '0755  CD4F0A'   1004 SULP    CALL    CRLF
  1143. '0758  CD9007'   1005         CALL    LADR            ; PRINT THE ADDRESS
  1144. '075B  CD9D07'   1006         CALL    TWO
  1145. '075E  7E        1007         LD      A,(HL)
  1146. '075F  CD9607'   1008         CALL    PACC            ; PRINT THE CONTENTS
  1147. '0762  CD9D07'   1009         CALL    TWO
  1148. '0765  CD160B'   1010 JLP     CALL    GETCHR          ; GET INPUT
  1149. '0768  FE2E      1011         CP      2EH             ; EXIT ON "."
  1150. '076A  C8        1012         RET     Z
  1151. '076B  FE20      1013         CP      20H
  1152. '076D  281E      1014         JR      Z,FWD-$         ; SKIP AHEAD ON "SPACE"
  1153. '076F  CD890A'   1015         CALL    CONV            ; CONV HEX IF POSSIBLE
  1154. '0772  28F1      1016         JR      Z,JLP-$         ; NOT A HEX NUMBER
  1155. '0774  E5        1017         PUSH    HL              ; SAVE ADDRESS AGAIN
  1156. '0775  210000    1018         LD      HL,0            ; CLEAR FOR ROTATE
  1157. '0778  CDAB0A'   1019 LLP     CALL    ROBYT           ; ROTATE NYBBLE INTO HL
  1158. '077B  CD160B'   1020 KLP     CALL    GETCHR          ; GET ANOTHER CHARACTER
  1159. '077E  FE0D      1021         CP      0DH
  1160. '0780  2807      1022         JR      Z,PUTIN-$       ; IF "CR" STUFF IT
  1161. '0782  CD890A'   1023         CALL    CONV            ; CONV BINARY
  1162. '0785  28F4      1024         JR      Z,KLP-$         ; NOT A HEX NUMBER
  1163. '0787  18EF      1025         JR      LLP-$           ; CONTINUE
  1164. '0789  E5        1026 PUTIN   PUSH    HL              ; DATA TO BC
  1165. '078A  C1        1027         POP     BC
  1166. '078B  E1        1028         POP     HL              ; RETRIEVE ADDRESS
  1167. '078C  71        1029         LD      (HL),C          ; STUFF THE DATA
  1168. '078D  23        1030 FWD     INC     HL              ; BUMP POINTER
  1169. '078E  18C5      1031         JR      SULP-$          ; ...AND CONTINUE
  1170. '0790  EB        1032 LADR    EX      DE,HL           ; PRINT WORD IN HL
  1171. '0791  CDB20A'   1033         CALL    PRTWRD
  1172. '0794  EB        1034         EX      DE,HL
  1173. '0795  C9        1035         RET
  1174. '0796  D5        1036 PACC    PUSH    DE              ; PRINT BYTE IN A
  1175. '0797  5F        1037         LD      E,A
  1176. '0798  CDB60A'   1038         CALL    PRTBYT
  1177. '079B  D1        1039         POP     DE
  1178. '079C  C9        1040         RET
  1179. '079D  CDA007'   1041 TWO     CALL    ONE             ; PRINT 2 SPACES
  1180. '07A0  C5        1042 ONE     PUSH    BC              ; PRINT SPACE
  1181. '07A1  0E20      1043         LD      C,' '
  1182. '07A3  CD340B'   1044         CALL    PRNC
  1183. '07A6  C1        1045         POP     BC
  1184.  
  1185.  
  1186.  
  1187.  
  1188.  
  1189. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0019 
  1190.  ADDR  CODE      STMT SOURCE STATEMENT
  1191.  
  1192. '07A7  C9        1046         RET
  1193.                  1047 ;
  1194.                  1048 ; ELEMENTARY DOS BEGINS HERE. FILES ARE MAINTAINED ON
  1195.                  1049 ; DRIVE B ONLY AND ARE NOT CP/M COMPATIBLE. FUNCTIONS
  1196.                  1050 ; ARE DIRECTORY LIST (D), SAVE (S), LOAD (L), KILL (K)
  1197.                  1051 ; AND INITIALIZE (I).
  1198.                  1052 ; FILE NAMES CONSIST OF A PRIMARY FILE NAME OF UP TO
  1199.                  1053 ; SIX CHARS AND AN OPTIONAL FILE TYPE OF UP TO THREE.
  1200.                  1054 ;
  1201.                  1055 ; LIST DIRECTORY
  1202.                  1056 ;
  1203. '07A8  CD3A0A'   1057 PDIR    CALL    DIR1            ; SET UP FOR DIR SCH
  1204. '07AB  CD8A09'   1058 PAGLP   CALL    NEWPG           ; NEXT DIR PG TO BUFF
  1205. '07AE  0608      1059         LD      B,8             ; 8 ENTRIES/PAGE
  1206. '07B0  DD7E00    1060 PRPAG   LD      A,(IX+0)        ; STATUS BYTE
  1207. '07B3  3D        1061         DEC     A
  1208. '07B4  C8        1062         RET     Z               ; QUIT IF DONE
  1209. '07B5  3D        1063         DEC     A
  1210. '07B6  202A      1064         JR      NZ,NEXT-$
  1211. '07B8  CD4F0A'   1065         CALL    CRLF
  1212. '07BB  C5        1066 PRLIN   PUSH    BC              ; PRINT NAME FROM DIR
  1213. '07BC  DDE5      1067         PUSH    IX
  1214. '07BE  060A      1068         LD      B,10
  1215. '07C0  DD4E01    1069 PLNLP   LD      C,(IX+1)
  1216. '07C3  CD340B'   1070         CALL    PRNC
  1217. '07C6  DD23      1071         INC     IX
  1218. '07C8  10F6      1072         DJNZ    PLNLP-$
  1219. '07CA  DDE1      1073         POP     IX
  1220. '07CC  CD0A0B'   1074         CALL    SPAC
  1221. '07CF  DD5E0B    1075         LD      E,(IX+11)       ; PRINT ADDRESS
  1222. '07D2  DD560C    1076         LD      D,(IX+12)
  1223. '07D5  CDB20A'   1077         CALL    PRTWRD
  1224. '07D8  CD0A0B'   1078         CALL    SPAC
  1225. '07DB  DD5E0F    1079         LD      E,(IX+15)       ; PRINT # RECORDS
  1226. '07DE  CDB60A'   1080         CALL    PRTBYT
  1227. '07E1  C1        1081         POP     BC
  1228. '07E2  111000    1082 NEXT    LD      DE,10H
  1229. '07E5  DD19      1083         ADD     IX,DE           ; POINT TO NXT ENTRY
  1230. '07E7  10C7      1084         DJNZ    PRPAG-$         ; AND REPEAT
  1231. '07E9  18C0      1085         JR      PAGLP-$
  1232.                  1086 ;
  1233.                  1087 ; LOAD PGM FROM DRIVE B AND RUN FROM START ADDRESS
  1234.                  1088 ;
  1235. '07EB  CDF507'   1089 LDGO    CALL    LOAD            ; GET PGM
  1236. '07EE  DD21630B' 1090         LD      IX,VREG         ; FOR SIMULATOR
  1237. '07F2  C3C100'   1091         JP      RUN
  1238.                  1092 ;
  1239.                  1093 ; SEARCH FOR AND LOAD A FILE AT ADDR PER DIRECTORY
  1240.                  1094 ;
  1241. '07F5  CDF309'   1095 LOAD    CALL    ANAME           ; LOAD A FILE
  1242. '07F8  CD3A09'   1096         CALL    NAMSCH          ; TRY TO MATCH NAME
  1243. '07FB  CA9D09'   1097         JP      Z,NTFND
  1244. '07FE  FD6EFB    1098         LD      L,(IY-5)        ; SAVE START ADDR
  1245. '0801  FD66FC    1099         LD      H,(IY-4)
  1246. '0804  226A0B'   1100         LD      (NPC),HL
  1247. '0807  CDAA09'   1101 LOADLP  CALL    SETDAT          ; SET UP FOR LOAD
  1248. '080A  CD460B'   1102         CALL    RDONE           ; AND READ N SECTORS
  1249. '080D  CDC309'   1103         CALL    INCDAT
  1250.  
  1251.  
  1252.  
  1253.  
  1254.  
  1255. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0020 
  1256.  ADDR  CODE      STMT SOURCE STATEMENT
  1257.  
  1258. '0810  20F5      1104         JR      NZ,LOADLP-$
  1259. '0812  C9        1105         RET
  1260.                  1106 ;
  1261.                  1107 ; SAVE A FILE AND ADD IT TO DIRECTORY
  1262.                  1108 ;
  1263. '0813  CDF309'   1109 SAVE    CALL    ANAME           ; SAVE # SECTORS
  1264. '0816  CD3A09'   1110         CALL    NAMSCH          ; SEE IF HAVE ALREADY
  1265. '0819  280A      1111         JR      Z,SAV1-$
  1266. '081B  CD540A'   1112         CALL    LINF
  1267. '081E  11C50B'   1113         LD      DE,HAVMSG       ; IF SO, INFORM & QUIT
  1268. '0821  CDCE0A'   1114         CALL    PRTDE
  1269. '0824  C9        1115         RET
  1270. '0825  FD21600C' 1116 SAV1    LD      IY,TEMPS
  1271. '0829  3E02      1117         LD      A,2             ; NEW ACTIVE FILE
  1272. '082B  FD7700    1118         LD      (IY+0),A
  1273. '082E  CD540A'   1119         CALL    LINF
  1274. '0831  11E40B'   1120         LD      DE,GETADR       ; GET RUN ADDR
  1275. '0834  CDCE0A'   1121         CALL    PRTDE
  1276. '0837  CD630A'   1122         CALL    GETWRD
  1277. '083A  FD730B    1123         LD      (IY+11),E
  1278. '083D  FD720C    1124         LD      (IY+12),D
  1279. '0840  CD540A'   1125         CALL    LINF
  1280. '0843  11FC0B'   1126         LD      DE,GETN         ; GET # BYTES
  1281. '0846  CDCE0A'   1127         CALL    PRTDE
  1282. '0849  CD630A'   1128         CALL    GETWRD
  1283. '084C  AF        1129         XOR     A               ; CONVERT TO SECTORS
  1284. '084D  0607      1130         LD      B,7             ; DIV BY 128
  1285. '084F  CB3A      1131 SAVX    SRL     D
  1286. '0851  CB1B      1132         RR      E
  1287. '0853  3001      1133         JR      NC,SAVY-$
  1288. '0855  3C        1134         INC     A
  1289. '0856  10F7      1135 SAVY    DJNZ    SAVX-$
  1290. '0858  B7        1136         OR      A               ; FRACTIONAL SCTR?
  1291. '0859  2801      1137         JR      Z,SAVZ-$
  1292. '085B  1C        1138         INC     E               ; THEN ADD ONE
  1293. '085C  FD730F    1139 SAVZ    LD      (IY+15),E       ; SAVE IT
  1294. '085F  CD3A0A'   1140         CALL    DIR1            ; SET UP FOR DIR SCH
  1295. '0862  CD8A09'   1141 SAV2    CALL    NEWPG           ; SEARCH FOR NAME
  1296. '0865  0608      1142         LD      B,8
  1297. '0867  DD7E00    1143 SAV3    LD      A,(IX+0)        ; STAT BYTE
  1298. '086A  3D        1144         DEC     A
  1299. '086B  281F      1145         JR      Z,SAVNEW-$      ; NEW FILE
  1300. '086D  D602      1146         SUB     2               ; DEAD FILE?
  1301. '086F  2009      1147         JR      NZ,SAV4-$
  1302. '0871  FD7E0F    1148         LD      A,(IY+15)       ; WILL IT FIT?
  1303. '0874  3D        1149         DEC     A
  1304. '0875  DDBE0F    1150         CP      (IX+15)
  1305. '0878  3821      1151         JR      C,SAVOLD-$
  1306. '087A  111000    1152 SAV4    LD      DE,10H          ; CHECK NXT ONE
  1307. '087D  DD19      1153         ADD     IX,DE
  1308. '087F  DD56FD    1154         LD      D,(IX-3)        ; OLD TRACK
  1309. '0882  DD5EFE    1155         LD      E,(IX-2)        ; OLD SECTOR
  1310. '0885  DD4EFF    1156         LD      C,(IX-1)        ; OLD #
  1311. '0888  10DD      1157         DJNZ    SAV3-$
  1312. '088A  18D6      1158         JR      SAV2-$
  1313. '088C  3E1A      1159 SAVNEW  LD      A,26            ; NEW ENTRY
  1314. '088E  0C        1160         INC     C
  1315. '088F  1C        1161 NEWLP   INC     E
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0021 
  1322.  ADDR  CODE      STMT SOURCE STATEMENT
  1323.  
  1324. '0890  BB        1162         CP      E               ; >26?
  1325. '0891  3003      1163         JR      NC,NEW1-$
  1326. '0893  14        1164         INC     D               ; IF SO, NXT TRK
  1327. '0894  1E01      1165         LD      E,1
  1328. '0896  0D        1166 NEW1    DEC     C
  1329. '0897  20F6      1167         JR      NZ,NEWLP-$
  1330. '0899  1806      1168         JR      UPDIR-$
  1331. '089B  DD560D    1169 SAVOLD  LD      D,(IX+13)
  1332. '089E  DD5E0E    1170         LD      E,(IX+14)
  1333. '08A1  FD720D    1171 UPDIR   LD      (IY+13),D       ; PUT NEW TRK & SCTR
  1334. '08A4  FD730E    1172         LD      (IY+14),E
  1335. '08A7  CD2809'   1173         CALL    PUTDIR          ; UPDATE DIR
  1336. '08AA  CDAA09'   1174 SAVER   CALL    SETDAT          ; SET UP FOR SAVE
  1337. '08AD  CD490B'   1175         CALL    WRONE           ; & WRITE # SECTORS
  1338. '08B0  CDC309'   1176         CALL    INCDAT
  1339. '08B3  20F5      1177         JR      NZ,SAVER-$
  1340. '08B5  C9        1178         RET
  1341.                  1179 ;
  1342.                  1180 ; KILL A FILE (SET INACTIVE STATUS IN DIRECTORY)
  1343.                  1181 ;
  1344. '08B6  CDF309'   1182 KILL    CALL    ANAME           ; GET NAME
  1345. '08B9  CD3A09'   1183         CALL    NAMSCH          ; FIND IT
  1346. '08BC  CA9D09'   1184         JP      Z,NTFND
  1347. '08BF  FD21600C' 1185         LD      IY,TEMPS
  1348. '08C3  3E03      1186         LD      A,3             ; MAKE STAT = 03
  1349. '08C5  FD360003  1187         LD      (IY+0),3
  1350. '08C9  185D      1188         JR      PUTDIR-$        ; AND UPDATE DIRECTORY
  1351.                  1189 ;
  1352.                  1190 ; INITIALIZE DISK (WRITES BLANK DIRECTORY)
  1353.                  1191 ;
  1354. '08CB  114B0C'   1192 INIT    LD      DE,INIMSG       ; INITIALIZE DISK
  1355. '08CE  CDCE0A'   1193         CALL    PRTDE
  1356. '08D1  CD160B'   1194         CALL    GETCHR          ; ASK YES OR NO
  1357. '08D4  FE59      1195         CP      'Y'
  1358. '08D6  C0        1196         RET     NZ
  1359. '08D7  CD370B'   1197         CALL    HOMB
  1360. '08DA  DD21700C' 1198         LD      IX,BUFFR        ; FILL BUFF W/PATTERN
  1361. '08DE  FD21F00C' 1199         LD      IY,INIMSK       ; STORED AT INIMSK
  1362. '08E2  DDE5      1200         PUSH    IX
  1363. '08E4  0E08      1201         LD      C,8
  1364. '08E6  FDE5      1202 INLP1   PUSH    IY
  1365. '08E8  0610      1203         LD      B,10H
  1366. '08EA  FD7E00    1204 INLP2   LD      A,(IY+0)
  1367. '08ED  DD7700    1205         LD      (IX+0),A
  1368. '08F0  DD23      1206         INC     IX
  1369. '08F2  FD23      1207         INC     IY
  1370. '08F4  10F4      1208         DJNZ    INLP2-$
  1371. '08F6  FDE1      1209         POP     IY
  1372. '08F8  0D        1210         DEC     C
  1373. '08F9  20EB      1211         JR      NZ,INLP1-$
  1374. '08FB  DDE1      1212         POP     IX
  1375. '08FD  3E03      1213         LD      A,3             ; MAKE 1ST ONE DEAD
  1376. '08FF  DD7700    1214         LD      (IX+0),A
  1377. '0902  01700C'   1215         LD      BC,BUFFR
  1378. '0905  CD430B'   1216         CALL    BUFS
  1379. '0908  0E00      1217         LD      C,0
  1380. '090A  CD400B'   1218         CALL    TRKS
  1381. '090D  0C        1219         INC     C
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0022 
  1388.  ADDR  CODE      STMT SOURCE STATEMENT
  1389.  
  1390. '090E  CD3D0B'   1220         CALL    SECS
  1391. '0911  CD490B'   1221         CALL    WRONE           ; 1ST DIR PAGE
  1392. '0914  3E01      1222         LD      A,1             ; RESTORE PATTERN
  1393. '0916  DD7700    1223         LD      (IX+0),A
  1394. '0919  010219    1224         LD      BC,1902H
  1395. '091C  C5        1225 WRLP    PUSH    BC              ; WRITE REST OF TRK 0
  1396. '091D  CD3D0B'   1226         CALL    SECS
  1397. '0920  CD490B'   1227         CALL    WRONE
  1398. '0923  C1        1228         POP     BC
  1399. '0924  0C        1229         INC     C
  1400. '0925  10F5      1230         DJNZ    WRLP-$
  1401. '0927  C9        1231         RET
  1402.                  1232 ;
  1403.                  1233 ; OVERWRITE CURRENT DIRECTORY PAGE
  1404.                  1234 ;
  1405. '0928  0610      1235 PUTDIR  LD      B,10H           ; UPDATE DIR
  1406. '092A  FD7E00    1236 UPLP    LD      A,(IY+0)
  1407. '092D  DD7700    1237         LD      (IX+0),A
  1408. '0930  DD23      1238         INC     IX
  1409. '0932  FD23      1239         INC     IY
  1410. '0934  10F4      1240         DJNZ    UPLP-$
  1411. '0936  CD490B'   1241         CALL    WRONE           ; REWRITE DIR PAGE
  1412. '0939  C9        1242         RET
  1413.                  1243 ;
  1414.                  1244 ; SEARCH FOR FILE NAME IN DIRECTORY.. RETURN WITH Z FLG
  1415.                  1245 ; SET IF NOT FOUND, Z CLEAR AND BUFFER FILLED IF FOUND
  1416.                  1246 ;
  1417. '093A  CD3A0A'   1247 NAMSCH  CALL    DIR1            ; SET UP FOR DIR SCH
  1418. '093D  CD8A09'   1248 LDLP    CALL    NEWPG           ; READ PAGE OF NDX
  1419. '0940  0608      1249         LD      B,8
  1420. '0942  DD7E00    1250 LDLP1   LD      A,(IX+0)        ; CHECK STAT
  1421. '0945  3D        1251         DEC     A
  1422. '0946  2001      1252         JR      NZ,LDLP2-$
  1423. '0948  C9        1253         RET
  1424. '0949  3D        1254 LDLP2   DEC     A
  1425. '094A  DDE5      1255         PUSH    IX
  1426. '094C  FDE5      1256         PUSH    IY
  1427. '094E  2013      1257         JR      NZ,LDNXT-$      ; INACTIVE?
  1428. '0950  0E0A      1258         LD      C,10            ; ELSE COMP NAME
  1429. '0952  FD7E01    1259 CMPLP   LD      A,(IY+1)
  1430. '0955  DDBE01    1260         CP      (IX+1)
  1431. '0958  2009      1261         JR      NZ,LDNXT-$
  1432. '095A  DD23      1262         INC     IX
  1433. '095C  FD23      1263         INC     IY
  1434. '095E  0D        1264         DEC     C
  1435. '095F  20F1      1265         JR      NZ,CMPLP-$
  1436. '0961  180D      1266         JR      CMPOK-$         ; SAME NAME
  1437. '0963  FDE1      1267 LDNXT   POP     IY              ; TRY NEXT ONE
  1438. '0965  DDE1      1268         POP     IX
  1439. '0967  111000    1269         LD      DE,10H
  1440. '096A  DD19      1270         ADD     IX,DE
  1441. '096C  10D4      1271         DJNZ    LDLP1-$
  1442. '096E  18CD      1272         JR      LDLP-$          ; NEXT PAGE
  1443. '0970  FDE1      1273 CMPOK   POP     IY              ; NAME MATCHES
  1444. '0972  DDE1      1274         POP     IX
  1445. '0974  0610      1275         LD      B,10H           ; XFER DIR NTRY TO BUFF
  1446. '0976  DD7E00    1276 FILLP   LD      A,(IX+0)
  1447. '0979  FD7700    1277         LD      (IY+0),A
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0023 
  1454.  ADDR  CODE      STMT SOURCE STATEMENT
  1455.  
  1456. '097C  DD23      1278         INC     IX
  1457. '097E  FD23      1279         INC     IY
  1458. '0980  10F4      1280         DJNZ    FILLP-$
  1459. '0982  11F0FF    1281         LD      DE,-10H
  1460. '0985  DD19      1282         ADD     IX,DE
  1461. '0987  AF        1283         XOR     A
  1462. '0988  3C        1284         INC     A               ; EXIT A = 1
  1463. '0989  C9        1285         RET
  1464. '098A  D9        1286 NEWPG   EXX                     ; GET NXT DIR PAGE
  1465. '098B  DD21700C' 1287         LD      IX,BUFFR
  1466. '098F  FD340E    1288         INC     (IY+14)         ; NXT SCTR
  1467. '0992  FD4E0E    1289         LD      C,(IY+14)
  1468. '0995  CD3D0B'   1290         CALL    SECS
  1469. '0998  CD460B'   1291         CALL    RDONE           ; READ IT IN
  1470. '099B  D9        1292         EXX
  1471. '099C  C9        1293         RET
  1472. '099D  CD540A'   1294 NTFND   CALL    LINF            ; NOT FOUND
  1473. '09A0  11B60B'   1295         LD      DE,NFMSG
  1474. '09A3  CDCE0A'   1296         CALL    PRTDE
  1475. '09A6  31FE0E'   1297         LD      SP,SYSTK-2      ; RET TO CMND
  1476. '09A9  C9        1298         RET
  1477.                  1299 ;
  1478.                  1300 ; FILL IN DISK DATA. USES SR CALLS IN CBIOS
  1479.                  1301 ;
  1480. '09AA  FD21600C' 1302 SETDAT  LD      IY,TEMPS        ; SET UP FOR DSK DATA
  1481. '09AE  FD4E0B    1303         LD      C,(IY+11)
  1482. '09B1  FD460C    1304         LD      B,(IY+12)
  1483. '09B4  CD430B'   1305         CALL    BUFS            ; XFER ADDR
  1484. '09B7  FD4E0D    1306         LD      C,(IY+13)
  1485. '09BA  CD400B'   1307         CALL    TRKS            ; TRACK
  1486. '09BD  FD4E0E    1308         LD      C,(IY+14)
  1487. '09C0  C33D0B'   1309         JP      SECS            ; SECTOR
  1488.                  1310 ;
  1489.                  1311 ; BUMP SECTOR/TRACK AND XFER ADDRESS FOR MULTI
  1490.                  1312 ; SECTOR READ OR WRITE
  1491.                  1313 ;
  1492. '09C3  FD7E0B    1314 INCDAT  LD      A,(IY+11)       ; BUMP DSK DATA
  1493. '09C6  C680      1315         ADD     A,80H           ; BUMP XFER ADDR
  1494. '09C8  FD770B    1316         LD      (IY+11),A
  1495. '09CB  3003      1317         JR      NC,INC1-$
  1496. '09CD  FD340C    1318         INC     (IY+12)
  1497. '09D0  FD7E0E    1319 INC1    LD      A,(IY+14)
  1498. '09D3  3C        1320         INC     A               ; BUMP SECTOR
  1499. '09D4  FE1B      1321         CP      27
  1500. '09D6  3805      1322         JR      C,INC2-$
  1501. '09D8  3E01      1323         LD      A,1
  1502. '09DA  FD340D    1324         INC     (IY+13)         ; AND TRK IF NEEDED
  1503. '09DD  FD770E    1325 INC2    LD      (IY+14),A
  1504. '09E0  FD7E0D    1326         LD      A,(IY+13)       ; CHECK FOR VALID TRACK
  1505. '09E3  FE4D      1327         CP      77
  1506. '09E5  3808      1328         JR      C,INC3-$
  1507. '09E7  11D10B'   1329         LD      DE,DERMSG       ; ERROR
  1508. '09EA  CDD90A'   1330         CALL    PRTXT
  1509. '09ED  C1        1331         POP     BC              ; RET TO CMND
  1510. '09EE  C9        1332         RET
  1511. '09EF  FD350F    1333 INC3    DEC     (IY+15)
  1512. '09F2  C9        1334         RET
  1513.                  1335 ;
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0024 
  1520.  ADDR  CODE      STMT SOURCE STATEMENT
  1521.  
  1522.                  1336 ; GET FILE NAME TO BUFFER
  1523.                  1337 ;
  1524. '09F3  FD21600C' 1338 ANAME   LD      IY,TEMPS
  1525. '09F7  FDE5      1339         PUSH    IY
  1526. '09F9  060A      1340         LD      B,10
  1527. '09FB  3E20      1341         LD      A,' '
  1528. '09FD  FD7701    1342 MPTY    LD      (IY+1),A        ; CLEAR INPUT BUFFER
  1529. '0A00  FD23      1343         INC     IY
  1530. '0A02  10F9      1344         DJNZ    MPTY-$
  1531. '0A04  11100C'   1345         LD      DE,NAMSG        ; PROMPT FOR NAME
  1532. '0A07  CDCE0A'   1346         CALL    PRTDE
  1533. '0A0A  FDE1      1347         POP     IY
  1534. '0A0C  FDE5      1348         PUSH    IY
  1535. '0A0E  CD160B'   1349 NAMLP   CALL    GETCHR
  1536. '0A11  FE0D      1350         CP      0DH             ; END?
  1537. '0A13  2822      1351         JR      Z,NAMIN-$
  1538. '0A15  FE2E      1352         CP      '.'             ; DELIMITER?
  1539. '0A17  2807      1353         JR      Z,FTYP-$
  1540. '0A19  FD7701    1354         LD      (IY+1),A        ; PUT IT IN BUFFER
  1541. '0A1C  FD23      1355         INC     IY
  1542. '0A1E  18EE      1356         JR      NAMLP-$
  1543. '0A20  FDE1      1357 FTYP    POP     IY
  1544. '0A22  FDE5      1358         PUSH    IY
  1545. '0A24  FD7707    1359         LD      (IY+7),A
  1546. '0A27  FD23      1360         INC     IY
  1547. '0A29  CD160B'   1361 TYPLP   CALL    GETCHR
  1548. '0A2C  FE0D      1362         CP      0DH
  1549. '0A2E  2807      1363         JR      Z,NAMIN-$
  1550. '0A30  FD7707    1364         LD      (IY+7),A
  1551. '0A33  FD23      1365         INC     IY
  1552. '0A35  18F2      1366         JR      TYPLP-$
  1553. '0A37  FDE1      1367 NAMIN   POP     IY
  1554. '0A39  C9        1368         RET
  1555.                  1369 ;
  1556.                  1370 ; SET UP FOR DIRECTORY SEARCH
  1557.                  1371 ;
  1558. '0A3A  FD21600C' 1372 DIR1    LD      IY,TEMPS        ; SET UP FOR DIR SCH
  1559. '0A3E  01700C'   1373         LD      BC,BUFFR
  1560. '0A41  CD430B'   1374         CALL    BUFS
  1561. '0A44  0E00      1375         LD      C,0             ; TRACK 0
  1562. '0A46  FD710D    1376         LD      (IY+13),C
  1563. '0A49  FD710E    1377         LD      (IY+14),C
  1564. '0A4C  C3400B'   1378         JP      TRKS
  1565.                  1379 ;
  1566.                  1380 ; VARIOUS ROUTINES USED BY TRANSLATOR, MONITOR, AND DOS
  1567.                  1381 ;
  1568. '0A4F  0E0D      1382 CRLF    LD      C,0DH           ; PRINT CRLF
  1569. '0A51  CD340B'   1383         CALL    PRNC
  1570. '0A54  0E0A      1384 LINF    LD      C,0AH
  1571. '0A56  C3340B'   1385         JP      PRNC
  1572. '0A59  0E20      1386 PROM    LD      C,' '           ; PRINT ' >'
  1573. '0A5B  CD340B'   1387         CALL    PRNC
  1574. '0A5E  0E3E      1388         LD      C,'>'
  1575. '0A60  C3340B'   1389         JP      PRNC
  1576.                  1390 ;
  1577.                  1391 ; GET HEX DATA IN DE. ROTATE CONTINUOUSLY UNTIL A
  1578.                  1392 ; 'CR' IS INPUT. LSB IN E. SET Z FLG AND RET ON 'SPACE'
  1579.                  1393 ;
  1580.  
  1581.  
  1582.  
  1583.  
  1584.  
  1585. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0025 
  1586.  ADDR  CODE      STMT SOURCE STATEMENT
  1587.  
  1588. '0A63  CD160B'   1394 GETWRD  CALL    GETCHR          ; GET BINARY DATA
  1589. '0A66  FE20      1395         CP      ' '             ; RET Z IF S.ACE
  1590. '0A68  C8        1396         RET     Z
  1591. '0A69  EB        1397         EX      DE,HL
  1592. '0A6A  210000    1398         LD      HL,0            ; CLEAR HO DING REG
  1593. '0A6D  CD890A'   1399         CALL    CONV            ; CHANGE TO HEX
  1594. '0A70  28F1      1400         JR      Z,GETWRD-$      ; INVALID CHAR
  1595. '0A72  CDAB0A'   1401         CALL    ROBYT           ; ROTATE INTO HL
  1596. '0A75  CD160B'   1402 WRDLP   CALL    GETCHR          ; GET NEXT CHAR
  1597. '0A78  FE0D      1403         CP      0DH             ; TERMINATOR
  1598. '0A7A  280A      1404         JR      Z,WRDON-$
  1599. '0A7C  CD890A'   1405         CALL    CONV
  1600. '0A7F  28F4      1406         JR      Z,WRDLP-$
  1601. '0A81  CDAB0A'   1407         CALL    ROBYT
  1602. '0A84  18EF      1408         JR      WRDLP-$
  1603. '0A86  B7        1409 WRDON   OR      A               ; CLEAR Z FLAG
  1604. '0A87  EB        1410         EX      DE,HL           ; DATA INTO DE
  1605. '0A88  C9        1411         RET
  1606.                  1412 ;
  1607.                  1413 ; CONVERT ASCII DATA IN A TO HEX. SET Z FLG IF INVALID
  1608.                  1414 ;
  1609. '0A89  FE30      1415 CONV    CP      '0'             ; CONVERT TO BINARY
  1610. '0A8B  380C      1416         JR      C,BAD-$
  1611. '0A8D  FE3A      1417         CP      3AH
  1612. '0A8F  380F      1418         JR      C,GOOD-$
  1613. '0A91  FE41      1419         CP      41H
  1614. '0A93  3804      1420         JR      C,BAD-$
  1615. '0A95  FE47      1421         CP      47H
  1616. '0A97  3807      1422         JR      C,GOOD-$
  1617. '0A99  0E3F      1423 BAD     LD      C,'?'
  1618. '0A9B  CD340B'   1424         CALL    PRNC            ; NOTIFY BAD INPUT
  1619. '0A9E  AF        1425         XOR     A               ; SET Z FLAG
  1620. '0A9F  C9        1426         RET
  1621. '0AA0  D630      1427 GOOD    SUB     30H
  1622. '0AA2  FE0A      1428         CP      10
  1623. '0AA4  3802      1429         JR      C,GOOD1-$
  1624. '0AA6  D607      1430         SUB     7
  1625. '0AA8  FEFF      1431 GOOD1   CP      0FFH            ; CLEAR Z FLAG
  1626. '0AAA  C9        1432         RET
  1627.                  1433 ;
  1628.                  1434 ; ROTATE BYTE IN A INTO HL VIA L
  1629.                  1435 ;
  1630. '0AAB  29        1436 ROBYT   ADD     HL,HL           ; ROTATE A INTO HL
  1631. '0AAC  29        1437         ADD     HL,HL           ; ROTATE HL 4 BITS LEFT
  1632. '0AAD  29        1438         ADD     HL,HL
  1633. '0AAE  29        1439         ADD     HL,HL
  1634. '0AAF  B5        1440         OR      L               ; PUT NEW DIGIT INTO L
  1635. '0AB0  6F        1441         LD      L,A
  1636. '0AB1  C9        1442         RET
  1637.                  1443 ;
  1638.                  1444 ; PRINT FOUR DIGIT VALUE IN DE
  1639.                  1445 ;
  1640. '0AB2  7A        1446 PRTWRD  LD      A,D
  1641. '0AB3  CDB70A'   1447         CALL    PRBIN
  1642. '0AB6  7B        1448 PRTBYT  LD      A,E             ; PRINT VALUE IN E
  1643. '0AB7  F5        1449 PRBIN   PUSH    AF
  1644. '0AB8  CB0F      1450         RRC     A
  1645. '0ABA  CB0F      1451         RRC     A
  1646.  
  1647.  
  1648.  
  1649.  
  1650.  
  1651. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0026 
  1652.  ADDR  CODE      STMT SOURCE STATEMENT
  1653.  
  1654. '0ABC  CB0F      1452         RRC     A
  1655. '0ABE  CB0F      1453         RRC     A
  1656. '0AC0  CDC40A'   1454         CALL    PRB1
  1657. '0AC3  F1        1455         POP     AF
  1658. '0AC4  E60F      1456 PRB1    AND     0FH
  1659. '0AC6  C690      1457         ADD     A,90H
  1660. '0AC8  27        1458         DAA
  1661. '0AC9  CE40      1459         ADC     A,40H
  1662. '0ACB  27        1460         DAA
  1663. '0ACC  1859      1461         JR      PRNA-$
  1664.                  1462 ;
  1665.                  1463 ; PRINT STRING POINTED TO BY DE. USES PRTXT
  1666.                  1464 ;
  1667. '0ACE  FDE5      1465 PRTDE   PUSH    IY              ; PRNT PER DE
  1668. '0AD0  D5        1466         PUSH    DE
  1669. '0AD1  FDE1      1467         POP     IY
  1670. '0AD3  CDD90A'   1468         CALL    PRTXT
  1671. '0AD6  FDE1      1469         POP     IY
  1672. '0AD8  C9        1470         RET
  1673.                  1471 ;
  1674.                  1472 ; PRINT ASCII STRING POINTED TO BY IY. CHECK FOR
  1675.                  1473 ; SPECIALS: '1' PRINTS AS BYTE POINTED TO BY HL, '2'
  1676.                  1474 ; PRINTS (HL+1), '!' DOES NOT PRINT, '^' TERMINATES.
  1677.                  1475 ;
  1678. '0AD9  1E00      1476 PRTXT   LD      E,0             ; PRNT UP TO 255 CHRSY
  1679. '0ADB  FD7E00    1477 PRNLP   LD      A,(IY+0)
  1680. '0ADE  FE5E      1478         CP      '^'             ; TERMINATOR?
  1681. '0AE0  C8        1479         RET     Z
  1682. '0AE1  FE21      1480         CP      '!'             ; NO PRINT?
  1683. '0AE3  281F      1481         JR      Z,DONXT+1-$
  1684. '0AE5  D5        1482         PUSH    DE
  1685. '0AE6  2A680B'   1483         LD      HL,(CPC)
  1686. '0AE9  23        1484         INC     HL
  1687. '0AEA  FE32      1485         CP      '2'             ; PRINT (HL+1)?
  1688. '0AEC  2007      1486         JR      NZ,PRN1-$
  1689. '0AEE  23        1487         INC     HL
  1690. '0AEF  5E        1488         LD      E,(HL)
  1691. '0AF0  CDB60A'   1489         CALL    PRTBYT
  1692. '0AF3  180E      1490         JR      DONXT-$
  1693. '0AF5  FE31      1491 PRN1    CP      '1'             ; PRINT (HL)?
  1694. '0AF7  2006      1492         JR      NZ,DOALPH-$
  1695. '0AF9  5E        1493         LD      E,(HL)
  1696. '0AFA  CDB60A'   1494         CALL    PRTBYT
  1697. '0AFD  1804      1495         JR      DONXT-$
  1698. '0AFF  4F        1496 DOALPH  LD      C,A             ; ALL OTHER CHARACTERS
  1699. '0B00  CD340B'   1497         CALL    PRNC
  1700. '0B03  D1        1498 DONXT   POP     DE
  1701. '0B04  FD23      1499         INC     IY
  1702. '0B06  1D        1500         DEC     E
  1703. '0B07  20D2      1501         JR      NZ,PRNLP-$
  1704. '0B09  C9        1502         RET
  1705.                  1503 ;
  1706. '0B0A  C5        1504 SPAC    PUSH    BC              ; PRINT 6 SPACES
  1707. '0B0B  0606      1505         LD      B,6
  1708. '0B0D  0E20      1506         LD      C,' '
  1709. '0B0F  CD340B'   1507 SPLP    CALL    PRNC
  1710. '0B12  10FB      1508         DJNZ    SPLP-$
  1711. '0B14  C1        1509         POP     BC
  1712.  
  1713.  
  1714.  
  1715.  
  1716.  
  1717. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0027 
  1718.  ADDR  CODE      STMT SOURCE STATEMENT
  1719.  
  1720. '0B15  C9        1510         RET
  1721.                  1511 ;
  1722.                  1512 ; CONSOLE I/O
  1723.                  1513 ;
  1724. '0B16  CD2E0B'   1514 GETCHR  CALL    KBIN            ; GET CHAR & TEST
  1725. '0B19  FE03      1515         CP      3               ; ^C....
  1726. '0B1B  CA030F'   1516         JP      Z,CPWRM         ; CPM WARM START
  1727. '0B1E  FE18      1517         CP      18H             ; ^X (CAN)...
  1728. '0B20  2005      1518         JR      NZ,PRNA-$
  1729. '0B22  31FE0E'   1519         LD      SP,SYSTK-2      ; FOR RET TO CMND
  1730. '0B25  3E23      1520         LD      A,'#'
  1731. '0B27  4F        1521 PRNA    LD      C,A             ; PRINT CHAR IN A
  1732. '0B28  F5        1522         PUSH    AF
  1733. '0B29  CD340B'   1523         CALL    PRNC
  1734. '0B2C  F1        1524         POP     AF
  1735. '0B2D  C9        1525         RET
  1736.                  1526 ;
  1737.                  1527 ; JUMPS TO EXTERNAL I/O...MODIFY AS NEEDED
  1738.                  1528 ;
  1739. '0B2E  C3090F'   1529 KBIN    JP      CONIN           ; GET SINGLE CHAR IN A
  1740. '0B31  C3060F'   1530 KBST    JP      CONST           ; TEST INPUT STATUS
  1741. '0B34  C30C0F'   1531 PRNC    JP      CONOUT          ; PRINT CHAR IN C
  1742. '0B37  C3180F'   1532 HOMB    JP      HOME            ; DRIVE HOME
  1743. '0B3A  C31B0F'   1533 DRVS    JP      SETDRV          ; SET DRIVE #
  1744. '0B3D  C3210F'   1534 SECS    JP      SETSEC          ; SET SECTOR #
  1745. '0B40  C31E0F'   1535 TRKS    JP      SETTRK          ; SET TRK #
  1746. '0B43  C3240F'   1536 BUFS    JP      SETBUF          ; SET XFER ADDRESS
  1747. '0B46  C3270F'   1537 RDONE   JP      READ            ; READ A SECTOR
  1748. '0B49  C32A0F'   1538 WRONE   JP      WRITE           ; WRITE A SECTOR
  1749.                  1539 ;
  1750.                  1540 ; JUMP TABLE FOR LINKS TO Z80 ROUTINES...FILL IN AS REQD
  1751.                  1541 ; FIRST TWO INITIALIZED TO CONSOLE I/O VIA ACC
  1752.                  1542 ;
  1753. '0B4C  C32E0B'   1543 USR0    JP      KBIN            ; 6502 USER ROUTINES
  1754. '0B4F  C3270B'   1544 USR1    JP      PRNA
  1755. '0B52  C90000    1545 USR2    DEFB    0C9H,0,0
  1756. '0B55  C90000    1546 USR3    DEFB    0C9H,0,0
  1757. '0B58  C90000    1547 USR4    DEFB    0C9H,0,0
  1758.                  1548 ;
  1759.                  1549 ; 6502 BREAK VECTOR...INIT TO GO TO COMMAND LEVEL
  1760.                  1550 ;
  1761. '0B5B  0000      1551 IPOINT  DEFW    0
  1762.                  1552 ;
  1763.                  1553 ; TEMPORARIES FOR TRANSLATOR
  1764.                  1554 ;
  1765. '0B5D  01        1555 NSTEPS  DEFB    1               ; # STEPS TO EXECUTE
  1766. '0B5E  00        1556 NBYTES  DEFB    0               ; # BYTES IN INSTR
  1767. '0B5F  000A      1557 DLYCON  DEFW    0A00H           ; TIME DELAY FOR # STEP
  1768. '0B61  0000      1558 BREAK   DEFW    0               ; BREAKPOINT ADDRESS
  1769.                  1559 ;
  1770.                  1560 ; SIMULATED 6502 CPU REGISTERS...INIT TO THESE VALUES
  1771.                  1561 ;
  1772. '0B63  00        1562 VREG    DEFB    0               ; ACCUMULATOR
  1773. '0B64  00        1563         DEFB    0               ; STATUS (P) REG
  1774. '0B65  00        1564         DEFB    0               ; X INDEX REG
  1775. '0B66  00        1565         DEFB    0               ; Y INDEX REG
  1776. '0B67  FF        1566         DEFB    0FFH            ; STACK POINTER
  1777. '0B68  0002      1567 CPC     DEFW    200H            ; PROGRAM COUNTER
  1778.  
  1779.  
  1780.  
  1781.  
  1782.  
  1783. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0028 
  1784.  ADDR  CODE      STMT SOURCE STATEMENT
  1785.  
  1786. '0B6A  0002      1568 NPC     DEFW    200H            ; LOCATION OF NXT INSTR
  1787.                  1569 ;
  1788.                  1570 ; VARIOUS MESSAGES FOR SYSTEM
  1789.                  1571 ;
  1790. '0B6C  2A2A2A2A  1572 INTRO   DEFM    '***** XENTRIX ZX/65 *****^'
  1791.        2A205845
  1792.        4E545249
  1793.        58205A58
  1794.        2F363520
  1795.        2A2A2A2A
  1796.        2A5E
  1797. '0B86  20435043  1573 HEADR   DEFM    ' CPC.. INS.. A.... P....'
  1798.        2E2E2049
  1799.        4E532E2E
  1800.        20412E2E
  1801.        2E2E2050
  1802.        2E2E2E2E
  1803. '0B9E  20582E2E  1574         DEFM    ' X.... Y.... SP... NPC..'
  1804.        2E2E2059
  1805.        2E2E2E2E
  1806.        2053502E
  1807.        2E2E204E
  1808.        50432E2E
  1809. '0BB6  46494C45  1575 NFMSG   DEFM    'FILE NOT FOUND^'
  1810.        204E4F54
  1811.        20464F55
  1812.        4E445E
  1813. '0BC5  46494C45  1576 HAVMSG  DEFM    'FILE EXISTS^'
  1814.        20455849
  1815.        5354535E
  1816. '0BD1  42414420  1577 DERMSG  DEFM    'BAD TRACK/SECTOR #^'
  1817.        54524143
  1818.        4B2F5345
  1819.        43544F52
  1820.        20235E
  1821. '0BE4  2020454E  1578 GETADR  DEFM    '  ENTER START ADDRESS: ^'
  1822.        54455220
  1823.        53544152
  1824.        54204144
  1825.        44524553
  1826.        533A205E
  1827. '0BFC  2020454E  1579 GETN    DEFM    '  ENTER NO. BYTES: ^'
  1828.        54455220
  1829.        4E4F2E20
  1830.        42595445
  1831.        533A205E
  1832. '0C10  2020454E  1580 NAMSG   DEFM    '  ENTER FILNAM.TYP: ^'
  1833.        54455220
  1834.        46494C4E
  1835.        414D2E54
  1836.        59503A20
  1837.        5E
  1838. '0C25  2020454E  1581 MLTMSG  DEFM    '  ENTER # STEPS: ^'
  1839.        54455220
  1840.        23205354
  1841.        4550533A
  1842.        205E
  1843. '0C37  2020454E  1582 BKPMSG  DEFM    '  ENTER BRKP ADDR: ^'
  1844.  
  1845.  
  1846.  
  1847.  
  1848.  
  1849. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0029 
  1850.  ADDR  CODE      STMT SOURCE STATEMENT
  1851.  
  1852.        54455220
  1853.        42524B50
  1854.        20414444
  1855.        523A205E
  1856. '0C4B  2020494E  1583 INIMSG  DEFM    '  INITIALIZE? (Y/N) ^'
  1857.        49544941
  1858.        4C495A45
  1859.        3F202859
  1860.        2F4E2920
  1861.        5E
  1862.                  1584 ;
  1863.                  1585 ; DOS BUFFERS AND DATA
  1864.                  1586 ;
  1865.  >0C60           1587 TEMPS   DEFS    10H             ; DISK ENTRY BUFFER
  1866.  >0C70           1588 BUFFR   DEFS    80H             ; DIRECTORY PAGE BUFFER
  1867. '0CF0  01202020  1589 INIMSK  DEFB    1,20H,20H,20H,20H,20H,20H,20H
  1868.        20202020
  1869. '0CF8  20202020  1590         DEFB    20H,20H,20H,20H,20H,1,0,0
  1870.        20010000
  1871.                  1591 ;
  1872.                  1592 ; DATA TABLES FOR TRANSLATOR BEGIN HERE
  1873.                  1593 ;
  1874.                  1594 ; ADDRESSING MODE TABLES
  1875.                  1595 ;
  1876. '0D00  0C1A      1596 AAATBL  DEFW    1A0CH           ; (ZPG,X)
  1877. '0D02  040E      1597         DEFW    0E04H           ; ZPG
  1878. '0D04  0006      1598         DEFW    0600H           ; IMM
  1879. '0D06  060B      1599         DEFW    0B06H           ; ABS
  1880. '0D08  0E1E      1600         DEFW    1E0EH           ; (ZPG),Y
  1881. '0D0A  0822      1601         DEFW    2208H           ; ZPG,X
  1882. '0D0C  122F      1602         DEFW    2F12H           ; ABS,Y
  1883. '0D0E  102B      1603         DEFW    2B10H           ; ABS,X
  1884. '0D10  0000      1604 BBBTBL  DEFW    0               ; INVALID
  1885. '0D12  040E      1605         DEFW    0E04H           ; ZPG
  1886. '0D14  0215      1606         DEFW    1502H           ; ACC
  1887. '0D16  060B      1607         DEFW    0B06H           ; ABS
  1888. '0D18  0A26      1608         DEFW    260AH           ; ZPG,Y
  1889. '0D1A  0822      1609         DEFW    2208H           ; ZPG,X
  1890. '0D1C  122F      1610         DEFW    2F12H           ; ABS,Y
  1891. '0D1E  102B      1611         DEFW    2B10H           ; ABS,X
  1892. '0D20  0006      1612 DDDTBL  DEFW    0600H           ; IMM
  1893. '0D22  040E      1613         DEFW    0E04H           ; ZPG
  1894. '0D24  0000      1614         DEFW    0               ; INVALID
  1895. '0D26  060B      1615         DEFW    0B06H           ; ABS
  1896. '0D28  0A26      1616         DEFW    260AH           ; ZPG,Y
  1897. '0D2A  0822      1617         DEFW    2208H           ; ZPG,X
  1898. '0D2C  122F      1618         DEFW    2F12H           ; ABS,Y
  1899. '0D2E  102B      1619         DEFW    2B10H           ; ABS,X
  1900. '0D30  040E      1620 BBXTBL  DEFW    0E04H           ; ZPG
  1901. '0D32  060B      1621         DEFW    0B06H           ; ABS
  1902. '0D34  0822      1622         DEFW    2208H           ; ZPG,X
  1903. '0D36  102B      1623         DEFW    2B10H           ; ABS,X
  1904. '0D38  0A26      1624         DEFW    260AH           ; ZPG,Y
  1905. '0D3A  0006      1625 CCTBL   DEFW    0600H           ; IMM
  1906. '0D3C  040E      1626         DEFW    0E04H           ; ZPG
  1907. '0D3E  0000      1627         DEFW    0               ; INVALID
  1908. '0D40  060B      1628         DEFW    0B06H           ; ABS
  1909.                  1629 ;
  1910.  
  1911.  
  1912.  
  1913.  
  1914.  
  1915. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0030 
  1916.  ADDR  CODE      STMT SOURCE STATEMENT
  1917.  
  1918.                  1630 ; BRANCH MASK TABLE
  1919.                  1631 ;
  1920. '0D42  2680      1632 MSKTBL  DEFW    8026H           ; BPL
  1921. '0D44  1E80      1633         DEFW    801EH           ; BMI
  1922. '0D46  2E40      1634         DEFW    402EH           ; BVC
  1923. '0D48  3240      1635         DEFW    4032H           ; BVS
  1924. '0D4A  0E01      1636         DEFW    010EH           ; BCC
  1925. '0D4C  1201      1637         DEFW    0112H           ; BCS
  1926. '0D4E  2202      1638         DEFW    0222H           ; BNE
  1927. '0D50  1602      1639         DEFW    0216H           ; BEQ
  1928.                  1640 ;
  1929.                  1641 ; FLAG SET/RESET CODES
  1930.                  1642 ;
  1931. '0D52  3501      1643 FLGTBL  DEFW    0135H           ; CLC
  1932. '0D54  B101      1644         DEFW    01B1H           ; SEC
  1933. '0D56  3D04      1645         DEFW    043DH           ; CLI
  1934. '0D58  B904      1646         DEFW    04B9H           ; SEI
  1935. '0D5A  4140      1647         DEFW    4041H           ; CLV
  1936. '0D5C  0000      1648         DEFW    0000            ; INVALID
  1937. '0D5E  3908      1649         DEFW    0839H           ; CLD
  1938. '0D60  B508      1650         DEFW    08B5H           ; SED
  1939.                  1651 ;
  1940.                  1652 ; JUMP TABLES TO IMPLIED INSTRUCTIONS
  1941.                  1653 ;
  1942. '0D62  7E03'     1654 IMPTBL  DEFW    PPHP            ; IMPLIED INSTR TABLE
  1943. '0D64  A503'     1655         DEFW    PPLP
  1944. '0D66  7403'     1656         DEFW    PPHA
  1945. '0D68  9303'     1657         DEFW    PPLA
  1946. '0D6A  5103'     1658         DEFW    PDEY
  1947. '0D6C  C703'     1659         DEFW    PTAY
  1948. '0D6E  4303'     1660         DEFW    PINY
  1949. '0D70  3C03'     1661         DEFW    PINX
  1950. '0D72  D103'     1662         DEFW    PTXA
  1951. '0D74  BD03'     1663         DEFW    PTAX
  1952. '0D76  4A03'     1664         DEFW    PDEX
  1953. '0D78  6E03'     1665         DEFW    PNOP
  1954.                  1666 ;
  1955.                  1667 ; JUMP TABLE TO ADDR MODE PROCESSORS
  1956.                  1668 ;
  1957. '0D7A  6A06'     1669 GETTBL  DEFW    PIMM            ; INSTR MODE TABLE
  1958. '0D7C  6E06'     1670         DEFW    PACX
  1959. '0D7E  7606'     1671         DEFW    PZPG
  1960. '0D80  7C06'     1672         DEFW    PAB
  1961. '0D82  8206'     1673         DEFW    PZX
  1962. '0D84  8706'     1674         DEFW    PZY
  1963. '0D86  9106'     1675         DEFW    PZIX
  1964. '0D88  A706'     1676         DEFW    PZIY
  1965. '0D8A  C006'     1677         DEFW    PABX
  1966. '0D8C  5D06'     1678         DEFW    PABY
  1967.                  1679 ;
  1968.                  1680 ; JUMP TABLES TO MULTI-MODE PROCESSORS
  1969.                  1681 ;
  1970. '0D8E  3804'     1682 EVNTBL  DEFW    PASL            ; JUMPS TO PROCESSORS
  1971. '0D90  4604'     1683         DEFW    PBTRL
  1972. '0D92  7604'     1684         DEFW    PLSR
  1973. '0D94  8404'     1685         DEFW    PROR
  1974. '0D96  9404'     1686         DEFW    PSTXY
  1975. '0D98  B004'     1687         DEFW    PLDXY
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0031 
  1982.  ADDR  CODE      STMT SOURCE STATEMENT
  1983.  
  1984. '0D9A  CC04'     1688         DEFW    PDCY
  1985. '0D9C  DD04'     1689         DEFW    PICX
  1986. '0D9E  4205'     1690 ODDTBL  DEFW    PORA
  1987. '0DA0  5505'     1691         DEFW    PAND
  1988. '0DA2  6805'     1692         DEFW    PEOR
  1989. '0DA4  7B05'     1693         DEFW    PADC
  1990. '0DA6  AB05'     1694         DEFW    PSTA
  1991. '0DA8  B705'     1695         DEFW    PLDA
  1992. '0DAA  C305'     1696         DEFW    PCMP
  1993. '0DAC  1005'     1697         DEFW    PSBC
  1994.                  1698 ;
  1995.                  1699 ; MNEMONIC ASCII CODES (PACKED INTO 2 BYTES)
  1996.                  1700 ;
  1997. '0DAE  8304      1701 MNMTBL  DEFW    0483H           ; MNEMONIC TABLE
  1998. '0DB0  C405      1702         DEFW    05C4H
  1999. '0DB2  6C06      1703         DEFW    066CH
  2000. '0DB4  6308      1704         DEFW    0863H           ; BCC
  2001. '0DB6  7308      1705         DEFW    0873H
  2002. '0DB8  B108      1706         DEFW    08B1H
  2003. '0DBA  3409      1707         DEFW    0934H
  2004. '0DBC  A909      1708         DEFW    09A9H
  2005. '0DBE  C509      1709         DEFW    09C5H
  2006. '0DC0  0C0A      1710         DEFW    0A0CH
  2007. '0DC2  4B0A      1711         DEFW    0A4BH
  2008. '0DC4  C30A      1712         DEFW    0AC3H
  2009. '0DC6  D30A      1713         DEFW    0AD3H
  2010. '0DC8  830D      1714         DEFW    0D83H           ; CLC
  2011. '0DCA  840D      1715         DEFW    0D84H
  2012. '0DCC  890D      1716         DEFW    0D89H
  2013. '0DCE  960D      1717         DEFW    0D96H
  2014. '0DD0  B00D      1718         DEFW    0DB0H
  2015. '0DD2  180E      1719         DEFW    0E18H
  2016. '0DD4  190E      1720         DEFW    0E19H
  2017. '0DD6  A310      1721         DEFW    10A3H           ; DEC
  2018. '0DD8  B810      1722         DEFW    10B8H
  2019. '0DDA  B910      1723         DEFW    10B9H
  2020. '0DDC  F215      1724         DEFW    15F2H           ; EOR
  2021. '0DDE  C325      1725         DEFW    25C3H           ; INC
  2022. '0DE0  D825      1726         DEFW    25D8H
  2023. '0DE2  D925      1727         DEFW    25D9H
  2024. '0DE4  B029      1728         DEFW    29B0H           ; JMP
  2025. '0DE6  722A      1729         DEFW    2A72H
  2026. '0DE8  8130      1730         DEFW    3081H           ; LDA
  2027. '0DEA  9830      1731         DEFW    3098H
  2028. '0DEC  9930      1732         DEFW    3099H
  2029. '0DEE  7232      1733         DEFW    3272H
  2030. '0DF0  F039      1734         DEFW    39F0H           ; NOP
  2031. '0DF2  413E      1735         DEFW    3E41H           ; ORA
  2032. '0DF4  0141      1736         DEFW    4101H           ; PHA
  2033. '0DF6  1041      1737         DEFW    4110H
  2034. '0DF8  8141      1738         DEFW    4181H
  2035. '0DFA  9041      1739         DEFW    4190H
  2036. '0DFC  EC49      1740         DEFW    49ECH           ; ROL
  2037. '0DFE  F249      1741         DEFW    49F2H
  2038. '0E00  894A      1742         DEFW    4A89H
  2039. '0E02  934A      1743         DEFW    4A93H
  2040. '0E04  434C      1744         DEFW    4C43H           ; SBC
  2041. '0E06  A34C      1745         DEFW    4CA3H
  2042.  
  2043.  
  2044.  
  2045.  
  2046.  
  2047. ZXMAIN ZX65  VER 2.1  8/80  RMK        SD SYSTEMS Z80 ASSEMBLER PAGE 0032 
  2048.  ADDR  CODE      STMT SOURCE STATEMENT
  2049.  
  2050. '0E08  A44C      1746         DEFW    4CA4H
  2051. '0E0A  A94C      1747         DEFW    4CA9H
  2052. '0E0C  814E      1748         DEFW    4E81H
  2053. '0E0E  984E      1749         DEFW    4E98H
  2054. '0E10  994E      1750         DEFW    4E99H
  2055. '0E12  3850      1751         DEFW    5038H           ; TAX
  2056. '0E14  3950      1752         DEFW    5039H
  2057. '0E16  7852      1753         DEFW    5278H
  2058. '0E18  0153      1754         DEFW    5301H
  2059. '0E1A  1353      1755         DEFW    5313H
  2060. '0E1C  2153      1756         DEFW    5321H
  2061.                  1757 ;
  2062.                  1758 ; ADDRESS MODE PRINT TABLE
  2063.                  1759 ;
  2064. '0E1E  20243120  1760 AMDTBL  DEFM    ' $1    !'     ; ADDR MODE TABLE...REL
  2065.        20202021
  2066. '0E26  20232431  1761         DEFM    ' #$1   !'     ; IMMEDIATE
  2067.        20202021
  2068. '0E2E  20243231  1762         DEFM    ' $21  !!'     ; ABS
  2069.        20202121
  2070. '0E36  20243120  1763         DEFM    ' $1    !'     ; ZPG
  2071.        20202021
  2072. '0E3E  20202020  1764         DEFM    '        '     ; IMPLIED
  2073.        20202020
  2074. '0E46  20412020  1765         DEFM    ' A      '     ; ACCUM
  2075.        20202020
  2076. '0E4E  20282431  1766         DEFM    ' ($1,X)!'     ; (ZPG,X)
  2077.        2C582921
  2078. '0E56  20282431  1767         DEFM    ' ($1),Y!'     ; (ZPG),Y
  2079.        292C5921
  2080. '0E5E  2024312C  1768         DEFM    ' $1,X  !'     ; ZPG,X
  2081.        58202021
  2082. '0E66  2024312C  1769         DEFM    ' $1,Y  !'     ; ZPG,Y
  2083.        59202021
  2084. '0E6E  20243231  1770         DEFM    ' $21,X!!'     ; ABS,X
  2085.        2C582121
  2086. '0E76  20243231  1771         DEFM    ' $21,Y!!'     ; ABS,Y
  2087.        2C592121
  2088. '0E7E  20282432  1772         DEFM    ' ($21)!!'     ; INDIRECT
  2089.        31292121
  2090.                  1773 ;
  2091.                  1774 ; THAT'S ALL!
  2092.                  1775 ;
  2093.                  1776         END
  2094.  
  2095. ERRORS=0000 
  2096.  
  2097.  
  2098.  
  2099.  
  2100.  
  2101.  
  2102.  
  2103.  
  2104.  
  2105.  
  2106.  
  2107.  
  2108.  
  2109.  
  2110.  
  2111.  
  2112.  
  2113.