1Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 1 2Source file: z1mon-1.4.asm 3Title: 4 5LOC OBJECT CODE LINE STMT SOURCE CODE 6 1 1 ; 7 2 2 ; OCR'ed by Larry Kraemer 8 3 3 ; Corrected typos and modified for z80asm by Udo Munk 9 4 4 ; January 2016 10 5 5 ; 11 6 6 ; Use z80asm 1.8, won't assemble correct with versions before 12 7 7 ; 130000 8 8 STAT EQU 0 ;STATUS PORT, DEVICE A 140001 9 9 DATA EQU 1 ;DATA PORT, DEVICE A 150002 10 10 ACMNDP EQU 2 ;COMMAND PORT, DEV. A 160000 11 11 ABAUDP EQU 0 ;BAUD PORT, DEVICE A 170004 12 12 APARLP EQU 4 ;PARALLEL PORT, DEV. A 180052 13 13 BCMNDP EQU 52H ;COMMAND PORT, DEV. B 190054 14 14 BPARLP EQU 54H ;PARALLEL PORT, DEV. B 200040 15 15 DAV EQU 40H ;DATA-AVLAILABLE MASK 210080 16 16 TBE EQU 80H ;XMITTER-BUF-EMPTY MASK 22 17 17 ; 230005 18 18 NBRKPT EQU 5 ;ALLOW ROOM FOR 240016 19 19 BPSTOR EQU NBRKPT*4+2 ;BREAKPOINT STORAGE 250016 20 20 TEMPS EQU BPSTOR 26000b 21 21 BPMRK EQU 0BH ;USED TO MARK THE SET- 27 22 22 ; ;TING OF A BP IN BPSTOR. 280030 23 23 RSTLC EQU 30H ;RST LOCATION 290000 24 24 CASE EQU 0 ;(REQUIRES UPPER-CASE) 300005 25 25 B2F EQU 5 ;2-BYTE FLAG 310006 26 26 PF EQU 6 ;PRIME-ABLE REG FLAG 320007 27 27 CRF EQU 7 ;CRLF FLAG 33 28 28 ; 34000d 29 29 CR EQU 0DH 35000a 30 30 LF EQU 0AH 36001b 31 31 ESC EQU 1BH 37007d 32 32 ALT EQU 7DH 38 33 33 ; 39 34 34 ; DISPLACEMENTS FROM IX OF HI BYTE OF REG PAIRS 40 35 35 ; 41 36 36 ; 42ffff 37 37 DUPC EQU -1 ;(FFFF) 43fffd 38 38 DUAF EQU -3 ;(FFFD) 44fffb 39 39 DUBC EQU -5 ;(FFFB) 45fff9 40 40 DUDE EQU -7 ;(FFF9) 46fff7 41 41 DUHL EQU -9 ;(FFF7) 47fff5 42 42 DUSP EQU -11 ;(FFF5) 48fff3 43 43 DUIX EQU -13 ;(FFF3) 49fff1 44 44 DUIY EQU -15 ;(FFF1) 50ffef 45 45 DUIN EQU -17 ;(FFEF) I & THE INTERRUPT FF 51ffed 46 46 DUAF2 EQU -19 ;(FFED) 52ffeb 47 47 DUBC2 EQU -21 ;(FFEB) 53ffe9 48 48 DUDE2 EQU -23 ;(FFE9) 54ffe7 49 49 DUHL2 EQU -25 ;(FFE7) 55 50 50 ; 56001a 51 51 LENRGS EQU DUPC-DUHL2+2 57 52 52 ; 58 53 53 ; 59 54 54 ; 60 55 55 ; 61 56 56 62 57 57 ORG 0E000H 63 58 58 ; 64 59 59 ; ENTER THE MONITOR FROM RESET. 65 60 60 ; COLD START ENTRY. INITIALIZES THE UART 66Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 2 67Source file: z1mon-1.4.asm 68Title: 69 70LOC OBJECT CODE LINE STMT SOURCE CODE 71 61 61 ; AND ZEROES THE BREAKPOINT STACK POINTER. 72 62 62 ; ALTERS THE A-REGISTER. SAVES ALL OTHER 73 63 63 ; REGISTERS EXCEPT THE PROGRAM COUNTER, 74 64 64 ; BUT DOES NOT DISPLAY THEM. 75 65 65 76e000 3e 01 66 66 CSTART: LD A,1 77e002 d3 40 67 67 OUT (40H),A ;SELECT BANK B 78e004 f5 68 68 PUSH AF ;SIMULATE UPC 79e005 f5 69 69 PUSH AF ;USER-F-REGISTER 80e006 18 42 70 70 JR COMMON 81 71 71 ; WARM START ENTRY. INITIALIZES THE BREAKPOINT 82 72 72 ; STORAGE POINTER. SAVES ALL REGISTERS EXCEPT 83 73 73 ; THE PROGRAM COUNTER, BUT DOES NOT DISPLAY THEM. 84 74 74 85e008 f5 75 75 WSTART: PUSH AF ;SIMULATE UPC 86e009 f5 76 76 PUSH AF ;UAF 87e00a 3e 80 77 77 LD A,80H ;FLAG: 88e00c 18 3c 78 78 JR COMMON ;WARM-START ENTRY 89 79 79 ; 90 80 80 ; CHECK INPUT & RETURN WITH DATA IF READY. 91 81 81 ; 92e00e db 00 82 82 CHKIN: IN A,(STAT) 93e010 e6 40 83 83 AND DAV 94e012 c8 84 84 RET Z 95e013 db 01 85 85 IN A,(DATA) 96e015 c9 86 86 RET 97 87 87 ; 98 88 88 ; 99 89 89 ; GET CHARACTER FROM INPUT. 100 90 90 ; 101e016 cd 0e e0 91 91 GBYTE: CALL CHKIN 102e019 28 fb 92 92 JR Z,GBYTE 103e01b e6 7f 93 93 AND 7FH 104e01d c9 94 94 RET 105 95 95 ; 106 96 96 ; 107 97 97 ; PRINT CHARACTER. 108 98 98 ; 109e01e f5 99 99 PBYTE: PUSH AF 110e01f db 00 100 100 PBY1: IN A,(STAT) 111e021 e6 80 101 101 AND TBE 112e023 28 fa 102 102 JR Z,PBY1 113e025 f1 103 103 POP AF 114e026 d3 01 104 104 OUT (DATA),A 115e028 c9 105 105 RET 116 106 106 ; 117 107 107 ; 118 108 108 ; SELECT DEVICE A & INITIALIZE ITS BAUD RATE. 119 109 109 ; ENTER WITH A=1. 120 110 110 ; 121e029 d3 54 111 111 INIT: OUT (BPARLP),A ;SELECT DEVICE A 122e02b d3 52 112 112 OUT (BCMNDP),A ;RESET DEVICE B 123 113 113 ; ;[CONTINUE BELOW] 124 114 114 ; 125 115 115 ; 126 116 116 ; INITIALIZE BAUD RATE OF THE CURRENT DEVICE. 127 117 117 ; 128 118 118 ; PUSH CARRIAGE-RETURN TO SELECT THE PROPER BAUD 129 119 119 ; RATE FOR THE CURRENT TERMINAL. (THE MAXIMUM 130 120 120 ; NUMBER OF CARRIAGE-RETURNS REQUIRED IS FOUR.) 131Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 3 132Source file: z1mon-1.4.asm 133Title: 134 135LOC OBJECT CODE LINE STMT SOURCE CODE 136 121 121 ; 137 122 122 ; WITH THE CROMEMCO TUART ANY OF THE FOLLOWING 138 123 123 ; BAUD RATES CAN BE SELECTED: 139 124 124 ; 19200, 9600, 4800, 2400, 1200, 300, 150, 110. 140 125 125 ; 141 126 126 ; WITH THE 3P+S: 2400, 300, 110. 142 127 127 ; 143 128 128 ; TWO CARRIAGE-RETURNS ARE REQUIRED FOR 144 129 129 ; ANY UART WITH A FIXED BAUD RATE. 145 130 130 ; 146e02d 21 a3 e3 131 131 INITBAUD: LD HL,BAUDRS 147e030 0e 00 132 132 LD C,ABAUDP 148e032 3e 11 133 133 LD A,11H ;OCTUPLE THE CLOCK 149e034 d3 02 134 134 IT1: OUT (ACMNDP),A ;& RESET CURRENT DEVICE 150e036 ed a3 135 135 OUTI 151e038 cd 16 e0 136 136 CALL GBYTE 152e03b cd 16 e0 137 137 CALL GBYTE 153e03e fe 0d 138 138 CP CR 154e040 3e 01 139 139 LD A,1 ;SLOW THE CLOCK 155e042 20 f0 140 140 JR NZ,IT1 156e044 c9 141 141 RET 157 142 142 ; 158 143 143 ; 159 144 144 ; BREAKPOINT ENTRY. INITIALIZES NOTHING. 160 145 145 ; SAVES ALL REGISTERS AND DISPLAYS THEM. 161 146 146 ; 162e045 e3 147 147 SVMS: EX (SP),HL ;ADJUST BRKPT 163e046 2b 148 148 DEC HL ;RET ADDR 164e047 e3 149 149 EX (SP),HL 165e048 f5 150 150 PUSH AF ;UAF 166e049 97 151 151 SUB A ;FLAG: 167 152 152 ;BREAKPOINT ENTRY; 168 153 153 ; 169 154 154 ; 170e04a c5 155 155 COMMON: PUSH BC ;UBC 171e04b 47 156 156 LD B,A ;ENTRY FLAG 172e04c d5 157 157 PUSH DE ;UDE 173e04d e5 158 158 PUSH HL ;UHL 174 159 159 ; 175 160 160 ; PLACE SYS STACK AT HIGHEST PAGE OF 176 161 161 ; AVAILABLE RAM. 177 162 162 ; ALLOW ROOM FOR TEMP STORAGE. 178 163 163 ; 179e04e 21 e9 00 164 164 LD HL,00FFH-TEMPS 180e051 25 165 165 COM1: DEC H 181e052 7e 166 166 LD A,(HL) 182e053 34 167 167 INC (HL) 183e054 be 168 168 CP (HL) ;DID IT CHANGE? 184e055 28 fa 169 169 JR Z,COM1 185e057 35 170 170 DEC (HL) ;YES. RESTORE IT. 186 171 171 ; 187e058 78 172 172 LD A,B ;ENTRY FLAG 188e059 eb 173 173 EX DE,HL 189e05a 21 09 00 174 174 LD HL,9 190e05d 39 175 175 ADD HL,SP ; -> UPC, HI BYTE 191e05e 01 0a 00 176 176 LD BC,10 192e061 ed b8 177 177 LDDR 193 178 178 ; 194e063 13 179 179 INC DE ;-> UHL,LO ON SYS STK 195e064 eb 180 180 EX DE,HL 196Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 4 197Source file: z1mon-1.4.asm 198Title: 199 200LOC OBJECT CODE LINE STMT SOURCE CODE 201e065 f9 181 181 LD SP,HL ;CURRENT SYS SP 202e066 eb 182 182 EX DE,HL 203e067 01 0b 00 183 183 LD BC,DUPC-DUHL+3 204e06a 09 184 184 ADD HL,BC ;HL = USER SP 205e06b e5 185 185 PUSH HL ;USP 206e06c dd e5 186 186 PUSH IX ;UIX 207e06e fd e5 187 187 PUSH IY ;UIY 208e070 eb 188 188 EX DE,HL 209e071 09 189 189 ADD HL,BC 210e072 4d 190 190 LD C,L ;SAVE 211e073 2b 191 191 DEC HL 212e074 e5 192 192 PUSH HL 213e075 dd e1 193 193 POP IX 214e077 fe 01 194 194 CP 1 ;ENTRY? 215e079 38 07 195 195 JR C,COM3 ;SKIP IF VIA BP. 216e07b 71 196 196 LD (HL),C ;BP PNTR, LO BYTE 217e07c 23 197 197 INC HL 218e07d 36 00 198 198 LD (HL),0 ;BP-STACK ENDMARK 219 199 199 ; INITIALIZE THE TUART IF ENTRY WAS VIA RESET. 220 200 200 ; (A CONTAINS 1.) 221 201 201 ; 222e07f cc 29 e0 202 202 CALL Z,INIT 223 203 203 ; 224e082 ed 57 204 204 COM3: LD A,I 225e084 67 205 205 LD H,A 226e085 2e 00 206 206 LD L,0 227e087 e2 8b e0 207 207 JP PO,COM4 228e08a 2c 208 208 INC L 229e08b e5 209 209 COM4: PUSH HL ;UIN 230e08c 08 210 210 EX AF,AF' 231e08d f5 211 211 PUSH AF ;UAF' 232e08e 08 212 212 EX AF,AF' 233e08f d9 213 213 EXX 234e090 c5 214 214 PUSH BC ;UBC' 235e091 d5 215 215 PUSH DE ;UDE' 236e092 e5 216 216 PUSH HL ;UHL' 237e093 d9 217 217 EXX 238 218 218 ; 239 219 219 ;IF CY IS SET, ENTRY WAS VIA A BREAKPOINT 240e094 21 f0 e3 220 220 LD HL,HEAD 241e097 d4 0f e2 221 221 CALL NC,PMSG 242e09a 01 86 50 222 222 LD BC,(('P'+CASE) < 8)+86H ;IF BP ENTRY, 243e09d dc 23 e3 223 223 CALL C,SUBR3 ;DISPLAY THE PC. 244 224 224 ; 245 225 225 ; 246 226 226 ;CLEAR ALL BREAKPOINTS 247 227 227 ; 248e0a0 dd e5 228 228 CLBP: PUSH IX 249e0a2 e1 229 229 POP HL ;POINTS TO BPSP,LO 250e0a3 6e 230 230 LD L,(HL) ;BPSP NOW IN HL 251 231 231 ; 252e0a4 7e 232 232 CL1: LD A,(HL) ;BP STK EMPTY? 253e0a5 fe 0b 233 233 CP BPMRK ;IF BPMRK, BP IS SET 254e0a7 20 0a 234 234 JR NZ,CL2 255 235 235 ; 256e0a9 34 236 236 INC (HL) ;BP-ERASED MARK 257e0aa 2b 237 237 DEC HL 258e0ab 56 238 238 LD D,(HL) 259e0ac 2b 239 239 DEC HL 260e0ad 5e 240 240 LD E,(HL) 261Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 5 262Source file: z1mon-1.4.asm 263Title: 264 265LOC OBJECT CODE LINE STMT SOURCE CODE 266e0ae 2b 241 241 DEC HL 267e0af ed a8 242 242 LDD ;RESTORE MEM CONTENTS 268e0b1 18 f1 243 243 JR CL1 269 244 244 ; 270e0b3 7d 245 245 CL2: LD A,L 271e0b4 2b 246 246 DEC HL 272e0b5 77 247 247 LD (HL),A ;ADJUST BPSP 273 248 248 ; 274e0b6 11 e6 ff 249 249 LD DE,-LENRGS ;FOR THE BENEFIT 275e0b9 19 250 250 ADD HL,DE ;OF ERROR & ESCPE 276e0ba f9 251 251 LD SP,HL ;RE-INITIALIZE SP 277 252 252 ; 278 253 253 ; 279 254 254 ;GET 1-BYTE COMMAND. 280 255 255 ;RETURNS VALUE IN HL & JUMPS TO THAT ADDR. 281 256 256 ; 282e0bb cd 4d e1 257 257 CALL CRLF 283e0be 11 be e0 258 258 CMND: LD DE,CMND ;SET-UP RETURN 284e0c1 d5 259 259 PUSH DE 285e0c2 21 ae e3 260 260 CMND1: LD HL,PRMPT ;RE-ENTRY POINT 286e0c5 cd 0f e2 261 261 CALL PMSG ;FOR RECURSION 287 262 262 ;HL NOW PNTS TO THE COMMAND TABLE. 288 263 263 ; 289 264 264 ;GET THE COMMAND. 290 265 265 ;DE GETS THE FIRST ALPHA CHAR LESS 'D'. 291 266 266 292e0c8 cd dd e1 267 267 CALL SKSG0 ;GET NON-SPACE 293e0cb c8 268 268 RET Z ;IF CR, IGNORE. 294e0cc d6 44 269 269 SUB 'D'+CASE ; < 'D'? 295e0ce 38 15 270 270 JR C,ERROR 296e0d0 fe 14 271 271 CP 'W'-'D'+1 ; > 'W'? 297e0d2 30 11 272 272 JR NC,ERROR 298e0d4 5f 273 273 LD E,A 299e0d5 16 00 274 274 LD D,0 300 275 275 ; 301e0d7 4a 276 276 LD C,D ;INITIALIZE FOR SUBR 302e0d8 eb 277 277 EX DE,HL 303e0d9 29 278 278 ADD HL,HL ;TIMES 2 304e0da 19 279 279 ADD HL,DE ; + TBL ADDR 305e0db 5e 280 280 LD E,(HL) 306e0dc 23 281 281 INC HL 307e0dd 56 282 282 LD D,(HL) 308e0de eb 283 283 EX DE,HL 309e0df cd dd e1 284 284 CALL SKSG0 ;NEXT CMND GHAR 310e0e2 fe 4d 285 285 CP 'M'+CASE ; (USED IN SUBST & DISPL) 311e0e4 e9 286 286 JP (HL) 312 287 287 ; 313 288 288 ; 314 289 289 ; ERROR & ESCAPE. RETURNS TO CMND WITH SP 315 290 290 ; POINTING TO SAVED-REG AREA (UHL'). 316 291 291 317e0e5 3e 3f 292 292 ERROR: LD A,'?' 318e0e7 cd 12 e1 293 293 CALL PCHR 319e0ea 18 b4 294 294 ESCPE: JR CLBP ;CLEAR ANY BRKPTS 320 295 295 ; 321 296 296 ; 322 297 297 ; PROGRAM PROMS. ABORTS IF DESTINATION 323 298 298 ; IS NOT ON A 1K (400H) BOUNDARY, OR IF SWATH 324 299 299 ; WIDTH IS NOT A MULTIPLE OF 1K. 325 300 300 ; 326Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 6 327Source file: z1mon-1.4.asm 328Title: 329 330LOC OBJECT CODE LINE STMT SOURCE CODE 331 301 301 ; 332e0ec cd a5 e1 302 302 PROG: CALL L3NCR 333e0ef 78 303 303 LD A,B ;ARE INCREMENT & 334e0f0 b2 304 304 OR D ;DESTINATION BOTH 335e0f1 e6 03 305 305 AND 3 ;MULTIPLES OF 336e0f3 b1 306 306 OR C ;1024? 337e0f4 b3 307 307 OR E 338e0f5 20 ee 308 308 ERRV1: JR NZ,ERROR ;ERROR VECTOR 339 309 309 ; 340e0f7 e5 310 310 PUSH HL ;SOURCE 341e0f8 21 40 01 311 311 LD HL,320 ;# OF ITERATIONS 342e0fb e3 312 312 PR1: EX (SP),HL 343e0fc cd 1a e2 313 313 CALL MVE ;MOVE IT 344e0ff e3 314 314 EX (SP),HL 345e100 2b 315 315 DEC HL ;ITERATION CT 346e101 7c 316 316 LD A,H 347e102 b5 317 317 OR L 348e103 20 f6 318 318 JR NZ,PR1 349e105 e1 319 319 POP HL 350e106 18 61 320 320 JR VRFY ;VERIFY IT 351 321 321 ; 352 322 322 ; 353 323 323 ;PRINT THE 2 BYTES IN (HL) & (HL-1) 354 324 324 ;DECREMENTS HL BY 2. ALTERS A. 355 325 325 ;PRESERVES OTHER REGS. 356 326 326 ; 357e108 cd ec e1 327 327 P2NMS: CALL PNM 358e10b 2b 328 328 DEC HL 359e10c cd ec e1 329 329 CALL PNM 360e10f 2b 330 330 DEC HL ; (CONTINUE BELOW) 361 331 331 ; 362 332 332 ; 363 333 333 ;PRINT SPACE. ALTERS A. 364 334 334 ; 365e110 3e 20 335 335 SPACE: LD A,20H ; (CONTINUE BELOW) 366 336 336 ; 367 337 337 ; 368 338 338 ;PRINT THE CHARACTER IN THE A-REGISTER. 369 339 339 ;(CHKS INPUT FOR ESC.) PRESERVES ALL REGS. 370 340 340 ; 371e112 f5 341 341 PCHR: PUSH AF ;SAVE THE CHAR 372e113 e6 7f 342 342 PC1: AND 7FH 373e115 fe 1b 343 343 CP ESC 374e117 28 d1 344 344 JR Z,ESCPE 375e119 fe 7d 345 345 CP ALT ;ALT MODE? 376e11b 28 cd 346 346 JR Z,ESCPE 377e11d cd 0e e0 347 347 CALL CHKIN 378e120 20 f1 348 348 JR NZ,PC1 379 349 349 ; 380e122 f1 350 350 PC2: POP AF 381e123 e5 351 351 PUSH HL 382e124 f5 352 352 PUSH AF 383e125 e6 7f 353 353 AND 7FH 384e127 cd 1e e0 354 354 CALL PBYTE 385e12a 21 ab e3 355 355 LD HL,LFNN 386e12d fe 0d 356 356 CP CR 387e12f cc 0f e2 357 357 CALL Z,PMSG 388e132 fe 3c 358 358 CP '<' ;RECURSIVE CALL 389e134 20 0b 359 359 JR NZ,PC3 ;ON CMND? 390e136 f1 360 360 POP AF 391Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 7 392Source file: z1mon-1.4.asm 393Title: 394 395LOC OBJECT CODE LINE STMT SOURCE CODE 396e137 3e 0d 361 361 LD A,CR ;YES. CONVERT 397e139 f5 362 362 PUSH AF ;'<' TO A CR. 398e13a d5 363 363 PUSH DE 399e13b c5 364 364 PUSH BC 400e13c cd c2 e0 365 365 CALL CMND1 401e13f c1 366 366 POP BC 402e140 d1 367 367 POP DE 403e141 f1 368 368 PC3: POP AF 404e142 e1 369 369 POP HL 405e143 c9 370 370 RET 406 371 371 ; 407 372 372 ; 408 373 373 ; GET CHARACTER. RETURNS IT IN A. 409 374 374 ; ALTERS F. 410 375 375 ; 411e144 cd 16 e0 376 376 GCHR: CALL GBYTE 412e147 cd 12 e1 377 377 CALL PCHR 413e14a 28 f8 378 378 JR Z,GCHR ;IF NULL DON'T RETURN 414e14c c9 379 379 RET 415 380 380 ; 416 381 381 ; 417 382 382 ; CRLF. ALTERS A ONLY. 418 383 383 ; 419e14d 3e 0d 384 384 CRLF: LD A,CR 420e14f 18 c1 385 385 JR PCHR 421 386 386 ; 422 387 387 ; 423 388 388 ; LOADS HL WITH SOURCE ADDR, BC & DE 424 389 389 ; WITH THE INCREMENT. ENDS WITH A CRLF. 425 390 390 ; 426e151 97 391 391 L2NCR0: SUB A 427 392 392 428e152 cd 8b e1 393 393 L2NCR: CALL LD2N 429 394 394 ; 430 395 395 ; SKIP INITIAL SPACES. 431 396 396 ; IF DELIMITER NOT A CR, ERROR 432 397 397 ; 433e155 cd de e1 398 398 SKSGCR: CALL SKSG ;WAIT FOR NON-SPACE 434e158 20 9b 399 399 JR NZ,ERRV1 ;IF NOT CR, ERROR 435e15a eb 400 400 EX DE,HL 436e15b c9 401 401 RET 437 402 402 ; 438 403 403 ; 439 404 404 ; PRINT THE NUMBER IN HL, FOLLOWED BY A COLON. 440 405 405 ; PRESERVES ALL REGISTERS EXCEPT A. 441 406 406 ; 442e15c cd 4d e1 407 407 PCADDR: CALL CRLF 443 408 408 ; 444e15f cd f2 e1 409 409 PADDR: CALL PNHL 445e162 3e 3a 410 410 LD A,':' 446e164 18 ac 411 411 JR PCHR 447 412 412 ; 448 413 413 ; 449 414 414 ; COMMAND 450 415 415 ; 451e166 cd a5 e1 416 416 VERIF: CALL L3NCR ;GET 3 OPERANDS 452 417 417 ; 453 418 418 ; COMPARES TWO AREAS OF MEMORY. ENTER WITH 454 419 419 ; SOURCE IN HL, DESTINATION IN DE & COUNT 455 420 420 ; IN BC. ALTERS ALL REGISTERS. 456Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 8 457Source file: z1mon-1.4.asm 458Title: 459 460LOC OBJECT CODE LINE STMT SOURCE CODE 461 421 421 ; 462e169 1a 422 422 VRFY: LD A,(DE) 463e16a ed a1 423 423 CPI ;COMPARE TO SOURCE 464e16c 2b 424 424 DEC HL 465e16d c4 f2 e1 425 425 CALL NZ,PNHL ;PRINT SOURCE ADDR 466e170 c4 e9 e1 426 426 CALL NZ,PSNM ; & CONTENTS 467e173 eb 427 427 EX DE,HL 468e174 c4 e9 e1 428 428 CALL NZ,PSNM ; & DEBT CONTENTS 469e177 c4 ef e1 429 429 CALL NZ,PSNHL ; & DEBT ADDR 470e17a c4 4d e1 430 430 CALL NZ,CRLF 471e17d eb 431 431 EX DE,HL 472e17e 23 432 432 INC HL 473e17f 13 433 433 INC DE 474e180 e0 434 434 RET PO ;IF BC=0, DONE. 475e181 18 e6 435 435 JR VRFY 476 436 436 ; 477 437 437 ; 478 438 438 ; COMMAND 479 439 439 ; 480e183 cd a5 e1 440 440 MOVE: CALL L3NCR ;OPERANDS 481e186 cd 1a e2 441 441 CALL MVE ;MOVE IT 482e189 18 de 442 442 JR VRFY 483 443 443 ; 484 444 444 ; 485 445 445 ; LOAD TWO NUMBERS. LOADS DE WITH THE BEGINNING 486 446 446 ; ADDR, N1. LOADS BC & HL WITH THE INCREMENT 487 447 447 ; N2-Ni+1 (OR WITH N2 IF THE OPR IS 'S'). 488 448 448 ; RETURNS WITH LAST DELIMITER IN A. 489 449 449 ; 490e18b cd ae e1 450 450 LD2N: CALL GNHL ;N1 TO HL, DELIM TO A 491e18e eb 451 451 EX DE,HL ;SAVE N1 IN DE 492e18f cd de e1 452 452 CALL SKSG ;GET NEXT NON-SPACE 493e192 fe 53 453 453 CP 'S'+CASE ;SWATH? 494e194 20 05 454 454 JR NZ,L2N1 495 455 455 ; 496e196 cd ad e1 456 456 CALL GNHL0 ;YES. INCREMENT TO HL. 497e199 18 07 457 457 JR L2N2 498 458 458 499e19b cd ae e1 459 459 L2N1: CALL GNHL ;INCREMENT 500e19e b7 460 460 OR A ;CLEAR CY 501e19f ed 52 461 461 SBC HL,DE ;N2-N1 502e1a1 23 462 462 INC HL ;INCLUDE END POINT 503e1a2 44 463 463 L2N2: LD B,H 504e1a3 4d 464 464 LD C,L ;BC GETS THE INCRM 505e1a4 c9 465 465 RET 506 466 466 ; 507 467 467 ; 508 468 468 ; LOAD 3 OPERANDS. HL GETS THE SOURCE, BC 509 469 469 ; THE INCREMENT, AND DE THE 3RD OPERAND. 510 470 470 ; 511e1a5 cd 8b e1 471 471 L3NCR: CALL LD2N 512 472 472 ; (CONTINUE BELOW) 513 473 473 ; 514 474 474 ; 515 475 475 ; ENTER WITH SPACE OR THE FIRST DIGIT 516 476 476 ; OF A NUMBER IN A. LOADS HL WITH 517 477 477 ; WITH A NEW NUMBER & THEN EXCHANGES 518 478 478 ; DE & HL. FINISHES WITH A CRLF. 519 479 479 ; 520e1a8 cd ae e1 480 480 L1NCR: CALL GNHL ;SKIP SPACES, LOAD HL 521Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 9 522Source file: z1mon-1.4.asm 523Title: 524 525LOC OBJECT CODE LINE STMT SOURCE CODE 526e1ab 18 a8 481 481 JR SKSGCR ;WAIT FOR A CR 527 482 482 ; 528 483 483 ; 529 484 484 ; CLEARS HL. IF ENTERED WITH HEX CHAR IN A, 530 485 485 ; SHIFTS IT INTO HL. O/W, IGNORES LEADING 531 486 486 ; SPACES. FIRST CHAR MUST BE HEX. CONTINUES 532 487 487 ; SHIFT UNTIL A NON-HEX CHAR RECEIVED & THEN 533 488 488 ; RETURNS WITH THE LATTER IN A. 534 489 489 ; PRESERVES B,C,D,E. 535 490 490 ; 536 491 491 ; 537e1ad 97 492 492 GNHL0: SUB A 538 493 493 ; 539e1ae c5 494 494 GNHL: PUSH BC ;SAVE 540e1af 21 00 00 495 495 LD HL,0 ;CLR BUFFER 541 496 496 ; STRIP LEADING SPACES & GET CHAR 542e1b2 cd de e1 497 497 CALL SKSG 543 498 498 ; FIRST CHAR MUST BE HEX 544e1b5 cd c6 e1 499 499 CALL HEXSH ;IF HEX, SHIFT INTO HL 545e1b8 da e5 e0 500 500 JP C,ERROR ;O/W, ERROR 546e1bb cd 44 e1 501 501 GN1: CALL GCHR 547e1be cd c6 e1 502 502 CALL HEXSH ;IF HEX SHIFT INTO HL 548e1c1 78 503 503 LD A,B ;RESTORE CHAR 549e1c2 30 f7 504 504 JR NC,GN1 ;IF HEX, CONTINUE 550e1c4 c1 505 505 POP BC ;IF NON-HEX, DONE 551e1c5 c9 506 506 RET 552 507 507 ; 553 508 508 ; 554 509 509 ; IF A CONTAINS HEX CHAR, SHIFTS BINARY EQUIVALENT 555 510 510 ; INTO HL. IF NOT HEX, RET WITH CY SET. SAVES 556 511 511 ; ORIGINAL CHAR IN B 557 512 512 ; 558e1c6 47 513 513 HEXSH: LD B,A 559e1c7 d6 30 514 514 SUB '0' ; < '0'? 560e1c9 d8 515 515 RET C 561e1ca c6 e9 516 516 ADD A,'0'-('G'+CASE) 562e1cc d8 517 517 RET C 563e1cd d6 fa 518 518 SUB 'A'-'G' 564e1cf 30 03 519 519 JR NC,HX1 ;OK IF >= 'A' 565e1d1 c6 07 520 520 ADD A,('A'+CASE)-('9'+1) 566e1d3 d8 521 521 RET C 567e1d4 c6 0a 522 522 HX1: ADD A,'9'+1-'0' 568 523 523 ; THE A-REG NOW CONTAINS THE HEX DIGIT IN BINARY. 569 524 524 ; (THE HIGH-ORDER NIBBLE OF A IS 0.) 570e1d6 29 525 525 HXSH4: ADD HL,HL ;SHIFT 4 BITS INTO HL 571e1d7 29 526 526 ADD HL,HL 572e1d8 29 527 527 ADD HL,HL 573e1d9 29 528 528 ADD HL,HL 574e1da b5 529 529 OR L 575e1db 6f 530 530 LD L,A 576e1dc c9 531 531 RET 577 532 532 ; 578 533 533 ; 579 534 534 ; RETURNS WITH A NON-SPACE IN THE A-REG. 580 535 535 ; IF ENTERED WITH A-REG CONTAINING A NULL 581 536 536 ; OR A SPACE, GETS NEW CHARS UNTIL FIRST 582 537 537 ; NON-SPACE OCCURS. ALTERS AF. 583 538 538 ; 584e1dd 97 539 539 SKSG0: SUB A 585 540 540 ; 586Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 10 587Source file: z1mon-1.4.asm 588Title: 589 590LOC OBJECT CODE LINE STMT SOURCE CODE 591e1de b7 541 541 SKSG: OR A ;DOES A CONTAIN NULL? 592e1df cc 44 e1 542 542 SK1: CALL Z,GCHR 593e1e2 fe 20 543 543 CP 20H ;SPACE? 594e1e4 28 f9 544 544 JR Z,SK1 595e1e6 fe 0d 545 545 CP CR 596e1e8 c9 546 546 RET 597 547 547 ; 598 548 548 ; 599 549 549 ; PRINT SPACE FOLLOWED BY THE NUMBER POINTED 600 550 550 ; TO BY HL. ALTERS A ONLY. 601 551 551 ; 602e1e9 cd 10 e1 552 552 PSNM: CALL SPACE 603 553 553 ; (CONTINUE BELOW) 604 554 554 605 555 555 ; PRINTS THE NUMBER POINTED TO BY HL. 606 556 556 ; PRESERVES ALL REGISTERS BUT A. 607 557 557 608e1ec 7e 558 558 PNM: LD A,(HL) 609e1ed 18 08 559 559 JR P2HEX 610 560 560 ; 611 561 561 ; 612 562 562 ; PRINT THE NUMBER IN HL. 613 563 563 ; PRESERVES ALL BUT A. 614 564 564 ; 615e1ef cd 10 e1 565 565 PSNHL: CALL SPACE 616 566 566 ; 617e1f2 7c 567 567 PNHL: LD A,H 618e1f3 cd f7 e1 568 568 CALL P2HEX 619e1f6 7d 569 569 LD A,L 620 570 570 ; ; (CONTINUE BELOW) 621 571 571 ; 622 572 572 ;PRINT THE NUMBER IN THE A-REGISTER. 623 573 573 ;PRESERVES ALL REGISTERS. 624 574 574 ; 625e1f7 cd fb e1 575 575 P2HEX: CALL P1HEX 626e1fa 1f 576 576 RRA 627e1fb 1f 577 577 P1HEX: RRA 628e1fc 1f 578 578 RRA 629e1fd 1f 579 579 RRA 630e1fe 1f 580 580 RRA 631e1ff f5 581 581 PUSH AF 632e200 e6 0f 582 582 AND 0FH ;MASK 633e202 fe 0a 583 583 CP 10 ; < 9? 634e204 38 02 584 584 JR C,PH1 635e206 c6 07 585 585 ADD A,7 ;A THRU F 636e208 c6 30 586 586 PH1: ADD A,30H ;ASCII BIAS 637e20a cd 12 e1 587 587 CALL PCHR ;PRINT IT 638e20d f1 588 588 POP AF 639e20e c9 589 589 RET 640 590 590 ; 641 591 591 ; 642 592 592 ;PRINT MESSAGE. ENTER WITH ADDR OF MSG 643 593 593 ;IN HL. THE MESSAGE IS TERMINATED 644 594 594 ;AFTER PRINTING A CHARACTER WHOSE 645 595 595 ;PARITY BIT WAS SET. 646 596 596 ;PRESERVES FLAGS, INCREMENTS HL. 647 597 597 ; 648e20f f5 598 598 PMSG: PUSH AF ;SAVE 649e210 7e 599 599 PS1: LD A,(HL) 650e211 23 600 600 INC HL 651Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 11 652Source file: z1mon-1.4.asm 653Title: 654 655LOC OBJECT CODE LINE STMT SOURCE CODE 656e212 cd 12 e1 601 601 CALL PCHR 657e215 17 602 602 RLA ;LAST CHARACTER? 658e216 30 f8 603 603 JR NC,PS1 ;IF NOT, LOOP 659e218 f1 604 604 POP AF 660e219 c9 605 605 RET 661 606 606 ; 662 607 607 ; 663 608 608 ;MOVE FROM ONE LOCATION TO ANOTHER. ENTER 664 609 609 ;WITH SOURCE ADDR IN HL, DEST IN DE, BYTE 665 610 610 ;COUNT IN BC. PRESERVES ALL REGISTERS. 666 611 611 ; 667e21a e5 612 612 MVE: PUSH HL ;SOURCE 668e21b d5 613 613 PUSH DE ;DEST 669e21c c5 614 614 PUSH BC ;BYTE COUNT 670e21d ed b0 615 615 LDIR 671e21f c1 616 616 POP BC 672e220 d1 617 617 POP DE 673e221 e1 618 618 POP HL 674e222 c9 619 619 RET 675 620 620 ; 676 621 621 ; 677 622 622 ; COMMAND 678 623 623 ; 679 624 624 ; GO <CR> EXECUTION BEGINS AT USER PC. 680 625 625 ; 681 626 626 ; COMMAND 682 627 627 ; 683 628 628 ; GO (ADDR1>/(ADDR2> ... <ADDRN> 684 629 629 ; EXECUTION BEGINS AT ADDR1 WITH BREAKPOINTS SET 685 630 630 ; AT ADDR2,... ,ADDRN. 686 631 631 687 632 632 GO: 688 633 633 ; B GETS NBRKPT+1 (MAX. NUMBER OF BP + 1) 689 634 634 ; C, THE BREAKPOINT FLAG, GETS 0 (NO HP SET) 690e223 01 00 06 635 635 LD BC,((NBRKPT+1) < 8)+0 691e226 cd de e1 636 636 GO1: CALL SKSG ;WAIT FOR NON-SPACE 692e229 28 3a 637 637 JR Z,RETN ;RETN IF CR 693e22b fe 2f 638 638 CP '/' ;BP? 694e22d 20 0d 639 639 JR NZ,GO3 695e22f 4f 640 640 LD C,A ;SET BRKPT FLAG (2FH) 696e230 21 30 00 641 641 LD HL,RSTLC ;TRANSFER 697e233 36 c3 642 642 LD (HL),0C3H ;'JP SVMS' TO 698e235 21 45 e0 643 643 LD HL,SVMS 699e238 22 31 00 644 644 LD (RSTLC+1),HL ;RST LOC 700e23b 97 645 645 SUB A 701e23c cd ae e1 646 646 GO3: CALL GNHL ;GET ADDR 702e23f cb 69 647 647 BIT 5,C ; FLAG SET? 703e241 eb 648 648 EX DE,HL 704e242 dd e5 649 649 PUSH IX 705e244 e1 650 650 POP HL 706e245 28 18 651 651 JR Z,GO5 ;JUMP IF NO BP 707 652 652 ; 708e247 05 653 653 DEC B ;IF TOO MANY BP, 709e248 ca e5 e0 654 654 JP Z,ERROR ;ERROR. 710e24b 6e 655 655 LD L,(HL) ;HL = BPSP 711 656 656 ; 712e24c 23 657 657 INC HL ;BUMP BPSP 713e24d eb 658 658 EX DE,HL ;DE = BPSP, HL= BP ADDR 714e24e ed a0 659 659 LDI 715e250 2b 660 660 DEC HL 716Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 12 717Source file: z1mon-1.4.asm 718Title: 719 720LOC OBJECT CODE LINE STMT SOURCE CODE 721e251 36 f7 661 661 LD (HL),0C7H+RSTLC ;RST INSTRUCTION 722e253 eb 662 662 EX DE,HL ;HL = BPSP 723e254 73 663 663 LD (HL),E ;BP ADDR TO STACK 724e255 23 664 664 INC HL 725e256 72 665 665 LD (HL),D 726e257 23 666 666 INC HL 727e258 36 0b 667 667 LD (HL),BPMRK ;PUNCTUATION (BP SET) 728e25a dd 75 00 668 668 LD (IX+0),L 729e25d 18 c7 669 669 JR GO1 730 670 670 ; CHANGE USER PC 731e25f 2b 671 671 GO5: DEC HL 732e260 72 672 672 LD (HL),D 733e261 2b 673 673 DEC HL 734e262 73 674 674 LD (HL),E 735e263 18 c1 675 675 JR GO1 ;BACK FOR MORE 736 676 676 ; 737e265 e1 677 677 RETN: POP HL ;STRIP ADDR FROM STK 738e266 e1 678 678 POP HL ;UHL' 739e267 d1 679 679 POP DE ;UDE' 740e268 c1 680 680 POP BC ;UBC' 741e269 f1 681 681 POP AF ;UAF' 742e26a d9 682 682 EXX 743e26b 08 683 683 EX AF,AF' 744 684 684 ; 745e26c f1 685 685 POP AF ;UIN 746e26d ed 47 686 686 LD I,A ; UI 747e26f f3 687 687 DI 748e270 30 01 688 688 JR NC,RT1 749e272 fb 689 689 EI 750 690 690 ;IFF NOW RESTORED 751e273 fd e1 691 691 RT1: POP IY ;UIY 752e275 dd e1 692 692 POP IX ;UIX 753e277 d1 693 693 POP DE ;USP 754 694 694 ; 755 695 695 ;COPY THE REMAINDER OF THE SYS STACK 756 696 696 ;TO THE USER STACK. IF THIS TRANSFER 757 697 697 ;IS MADE WITHOUT ERROR, SWITCH TO THE 758 698 698 ;USER STACK. OTHERWISE, RETAIN THE 759 699 699 ;SYSTEM STACK. 760 700 700 ; 761e278 21 0a 00 701 701 LD HL,10 762e27b 45 702 702 LD B,L 763e27c 39 703 703 ADD HL,SP 764e27d eb 704 704 EX DE,HL 765e27e 1b 705 705 RT2: DEC DE 766e27f 2b 706 706 DEC HL 767e280 1a 707 707 LD A,(DE) 768e281 77 708 708 LD (HL),A 769e282 be 709 709 CP (HL) 770e283 20 03 710 710 JR NZ,RT3 771e285 10 f7 711 711 DJNZ RT2 772e287 f9 712 712 LD SP,HL 773 713 713 ; 774e288 e1 714 714 RT3: POP HL 775e289 d1 715 715 POP DE 776e28a c1 716 716 POP BC 777e28b f1 717 717 POP AF 778e28c c9 718 718 RET 779 719 719 780 720 720 781Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 13 782Source file: z1mon-1.4.asm 783Title: 784 785LOC OBJECT CODE LINE STMT SOURCE CODE 786 721 721 ; COMMAND. DISPLAY REGISTERS. 787 722 722 ; 788 723 723 ; DR 789 724 724 ; 790 725 725 ; COMMAND. DISPLAY MEMORY. 791 726 726 ; 792 727 727 ; DM <STARTING ADDR> <ENDING ADDR OR SWATH> 793 728 728 ; 794e28d 01 80 41 729 729 DISPL: LD BC,(('A'+CASE) < 8)+80H ;[FOR DR] 795e290 20 3f 730 730 JR NZ,SUBR2 ;IF NOT 'M', DR 796 731 731 ; 797 732 732 ; 798e292 cd 51 e1 733 733 DSPM: CALL L2NCR0 ;GET OPERANDS 799e295 16 10 734 734 DSPM1: LD D,16 ;BYTE COUNT 800e297 cd 5c e1 735 735 CALL PCADDR ;ADDRESS 801e29a cd e9 e1 736 736 DM2: CALL PSNM ;MEM CONTENTS 802e29d ed a1 737 737 CPI ;INC HL & DEC BC 803e29f e2 4d e1 738 738 JP PO,CRLF 804e2a2 15 739 739 DEC D 805e2a3 28 f0 740 740 JR Z,DSPM1 806e2a5 7a 741 741 LD A,D 807e2a6 e6 03 742 742 AND 3 808e2a8 cc 10 e1 743 743 CALL Z,SPACE 809e2ab cc 10 e1 744 744 CALL Z,SPACE 810e2ae 18 ea 745 745 JR DM2 811 746 746 ; 812 747 747 ; 813 748 748 ; COMMAND. SUBSTITUTE MEMORY LOCATION. 814 749 749 ; 815 750 750 ; SM <ADDR> 816 751 751 ; 817 752 752 ; COMMAND. SUBSTITUTE USER-REGISTER. 818 753 753 ; 819 754 754 ; S<REGISTER NAME> 820 755 755 ; 821 756 756 ; REGISTER NAMES: P [PC] , S [SP] 822 757 757 ; A, F, B, C, D, E, H [HL] 823 758 758 ; I, N [1FF], X [IX], Y [IY] 824 759 759 ; A',F',B',C',D',E',H' [HL']. 825 760 760 ; 826e2b0 20 16 761 761 SUBST: JR NZ,SUBR ;IN NOT 'M', SR 827 762 762 828e2b2 97 763 763 SUBM: SUB A 829e2b3 47 764 764 LD B,A ;1-BYTE MASK 830e2b4 cd a8 e1 765 765 CALL L1NCR 831e2b7 eb 766 766 EX DE,HL ;HL GETS ADDR 832e2b8 cc 5c e1 767 767 SM1: CALL Z,PCADDR 833e2bb cc 10 e1 768 768 CALL Z,SPACE 834 769 769 ; PRINT CURRENT VALUE, REQUEST NEW VALUE & 835 770 770 ; PRINT IT IF GIVEN 836e2be cd 32 e3 771 771 CALL GSUBV 837e2c1 c8 772 772 RET Z ;IF CR, DONE. 838e2c2 23 773 773 INC HL 839e2c3 3e 07 774 774 LD A,7 ;PRINT ADDRESS IF IT 840e2c5 a5 775 775 AND L ;IS A MULTIPLE OF 8 841e2c6 18 f0 776 776 JR SM1 842 777 777 ; 843 778 778 ; 844e2c8 47 779 779 SUBR: LD B,A 845e2c9 cd 44 e1 780 780 CALL GCHR 846Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 14 847Source file: z1mon-1.4.asm 848Title: 849 850LOC OBJECT CODE LINE STMT SOURCE CODE 851e2cc fe 00 781 781 CP '''' 852e2ce 20 02 782 782 JR NZ,SR2 853e2d0 0c 783 783 INC C ;TURN ON THE PRIME-FLAG 854e2d1 97 784 784 SUBR2: SUB A 855e2d2 cd 55 e1 785 785 SR2: CALL SKSGCR ;WAIT FOR CR 856e2d5 78 786 786 SR3: LD A,B 857e2d6 d6 41 787 787 SUB 'A'+CASE ;CHECK THE RANGE 858e2d8 da e5 e0 788 788 JP C,ERROR 859e2db fe 19 789 789 CP 'Y'-'A'+1 860e2dd d2 e5 e0 790 790 JP NC,ERROR 861e2e0 5f 791 791 LD E,A 862e2e1 16 00 792 792 LD D,0 863e2e3 21 d7 e3 793 793 LD HL,RGTBL 864e2e6 19 794 794 ADD HL,DE 865e2e7 7e 795 795 LD A,(HL) 866e2e8 b7 796 796 OR A 867e2e9 28 33 797 797 JR Z,SR6 ;IF ENTRY = 0, SKIP 868e2eb 1e 00 798 798 LD E,0 869e2ed cb 41 799 799 BIT 0,C ;PRIME? 870e2ef 28 06 800 800 JR Z,SR4 871e2f1 cb 76 801 801 BIT PF,(HL) ;YES. PRIMEABLE REG? 872e2f3 28 29 802 802 JR Z,SR6 ;IF NOT, SKIP. 873e2f5 1e 10 803 803 LD E,DUAF-DUAF2 874e2f7 e6 1f 804 804 SR4: AND 1FH ;STRIP FLAGS FROM ENTRY 875e2f9 83 805 805 ADD A,E 876e2fa 5f 806 806 LD E,A 877e2fb c5 807 807 PUSH BC ;SAVE 878e2fc 78 808 808 LD A,B ;PRINT REG NAME 879e2fd cd 12 e1 809 809 CALL PCHR 880e300 fe 48 810 810 CP 'H'+CASE 881e302 3e 4c 811 811 LD A,'L'+CASE 882e304 cc 12 e1 812 812 CALL Z,PCHR 883e307 ee 71 813 813 XOR 'L'+CASE ^ '=' ;CLEAR CY, A = '='. 884e309 cb 41 814 814 BIT 0,C ; PRIME? 885e30b 28 02 815 815 JR Z,SR5 886e30d 3e 00 816 816 LD A,'''' 887e30f cd 12 e1 817 817 SR5: CALL PCHR 888e312 46 818 818 LD B,(HL) ;SAVE ORIGINAL ENTRY 889e313 dd e5 819 819 PUSH IX 890e315 e1 820 820 POP HL ;STACK FRAME 891e316 ed 52 821 821 SBC HL,DE ;HL -> USER REG 892e318 cd 32 e3 822 822 CALL GSUBV ;PRINT VALUE, REQUEST NEW 893e31b 78 823 823 LD A,B ;SAVE 894e31c c1 824 824 POP BC 895e31d c8 825 825 RET Z ;DONE IF CR 896 826 826 ; 897e31e 04 827 827 SR6: INC B ;NEXT REG 898e31f 07 828 828 RLCA ;Y OR H? 899e320 30 b3 829 829 JR NC,SR3 ;IF NEITHER, LOOP 900e322 07 830 830 RLCA ;YES, IS IT Y? 901e323 cd 4d e1 831 831 SUBR3: CALL CRLF ; [ENTRY FOR DISPLAYING PC 902e326 38 05 832 832 JR C,SR8 903e328 06 41 833 833 LD B,'A'+CASE ;YES, IT IS Y. 904e32a 0c 834 834 INC C ;TURN ON PRIME-FLAG 905e32b 18 a8 835 835 JR SR3 906e32d cb 41 836 836 SR8: BIT 0,C ;NO. H OR H'? 907e32f 28 a4 837 837 JR Z,SR3 ;IF H, LOOP. 908e331 c9 838 838 RET ;IT IS H'. DONE. 909 839 839 910 840 840 911Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 15 912Source file: z1mon-1.4.asm 913Title: 914 915LOC OBJECT CODE LINE STMT SOURCE CODE 916 841 841 ; ENTER WITH HL POINTING TO MEMORY & 917 842 842 ; B CONTAINING THE 1-BYTE OR 2-BYTE FLAG. 918 843 843 ; PRINTS SPACE, CONTENTS OF (HL), & ALSO (HL-1) FOR 919 844 844 ; 2-BYTE REGS, GETS SUBSTITUTION VALUE & LOADS IT. 920 845 845 ; RETURNS WITH Z-FLAG SET 1FF THE DELIMITER IS 921 846 846 ; A CARRIAGE-RETURN. 922 847 847 ; PRESERVES BC & HL. 923 848 848 ; 924e332 cd ec e1 849 849 GSUBV: CALL PNM ;PRINT (HL) 925e335 cb 68 850 850 BIT B2F,B ;2-BYTE REG? 926e337 28 04 851 851 JR Z,GS1 927e339 2b 852 852 DEC HL 928e33a cd ec e1 853 853 CALL PNM ;LO BYTE 929e33d 79 854 854 GS1: LD A,C ;SUBST-OR-DISPLAY FLAG 930e33e 07 855 855 RLCA 931e33f 38 0a 856 856 JR C,GS2 ;IF DISPLAY, EXIT. 932e341 3e 2e 857 857 LD A,'.' 933e343 cd 12 e1 858 858 CALL PCHR 934e346 cd 44 e1 859 859 CALL GCHR 935e349 fe 2f 860 860 CP '.'+1 ;SUBSTITUTION? 936e34b dc 12 e1 861 861 GS2: CALL C,PCHR ;IF NOT, PRINT ANOTHER. 937e34e 38 0c 862 862 JR C,GS3 938e350 eb 863 863 EX DE,HL 939e351 cd ae e1 864 864 CALL GNHL ;NEW VALUE 940e354 eb 865 865 EX DE,HL 941e355 73 866 866 LD (HL),E 942e356 cb 68 867 867 BIT B2F,B 943e358 28 02 868 868 JR Z,GS3 944e35a 23 869 869 INC HL 945e35b 72 870 870 LD (HL),D 946e35c fe 0d 871 871 GS3: CP CR 947e35e c4 10 e1 872 872 CALL NZ,SPACE 948e361 c9 873 873 RET 949 874 874 ; 950 875 875 ; 951 876 876 ;...SUBDM 00 7E 5 585 BY 5 100 DBE++ 952 877 877 ; 953 878 878 ; 954 879 879 ; COMMAND 955 880 880 ; SELECT UART-A OR UART-B. 956 881 881 ; 957 882 882 ; UA 958 883 883 ; UB 959 884 884 ; 960e362 cd a8 e1 885 885 UART: CALL L1NCR ;A OR B? 961e365 7b 886 886 LD A,E 962e366 fe 0b 887 887 CP 0BH 963e368 20 05 888 888 JR NZ,UARTA 964e36a 3e 80 889 889 LD A,80H 965e36c d3 04 890 890 OUT (APARLP),A 966e36e c9 891 891 RET 967 892 892 ; 968e36f 97 893 893 UARTA: SUB A 969e370 d3 54 894 894 OUT (BPARLP),A 970e372 c9 895 895 RET 971 896 896 ; 972 897 897 ; 973 898 898 ; COMMAND 974 899 899 ; READ BINARY INPUT FROM DATA PORT 975 900 900 ; 976Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 16 977Source file: z1mon-1.4.asm 978Title: 979 980LOC OBJECT CODE LINE STMT SOURCE CODE 981e373 cd 52 e1 901 901 READB: CALL L2NCR ;GET MEM ADDRS 982e376 cd 0e e0 902 902 RB1: CALL CHKIN ;GET INPUT 983e379 28 fb 903 903 JR Z,RB1 984e37b 77 904 904 LD (HL),A ;TO MEM 985e37c ed a1 905 905 CPI 986e37e e0 906 906 RET PO 987e37f 18 f5 907 907 JR RB1 988 908 908 ; 989 909 909 ; 990 910 910 ; COMMAND 991 911 911 ; WRITE BINARY OUTPUT TO DATA PORT 992 912 912 993e381 cd 52 e1 913 913 WRITB: CALL L2NCR ;GET MEM ADDRS 994e384 7e 914 914 WB1: LD A,(HL) 995e385 cd 1e e0 915 915 CALL PBYTE 996e388 ed a1 916 916 CPI 997e38a e0 917 917 RET PO 998e38b 18 f7 918 918 JR WB1 999 919 919 ; 1000 920 920 ; 1001 921 921 ; COMMAND 1002 922 922 ; PRINT NULLS ON THE CURRENT DEVICE. 1003 923 923 ; 1004 924 924 ; N <NUMBER-OF-NULLS> 1005 925 925 ; 1006e38d cd a8 e1 926 926 NULLS: CALL L1NCR 1007e390 43 927 927 LD B,E 1008e391 97 928 928 SUB A 1009e392 cd 12 e1 929 929 N2: CALL PCHR 1010e395 10 fb 930 930 DJNZ N2 1011e397 c9 931 931 RET 1012 932 932 ; 1013 933 933 ; 1014 934 934 ; COMMAND 1015 935 935 ; OUT <DATA-BYTE> <PORT NUMBER> 1016 936 936 ; 1017e398 cd ae e1 937 937 OUTP: CALL GNHL 1018e39b eb 938 938 EX DE,HL ;E GETS DATA 1019e39c cd a8 e1 939 939 CALL L1NCR ;GET PORT NUMBER 1020 940 940 ; 1021e39f 4b 941 941 LD C,E ; TO C 1022e3a0 ed 69 942 942 OUT (C),L 1023e3a2 c9 943 943 RET 1024 944 944 ; 1025 945 945 1026 946 946 ; BAUD RATES. 1027 947 947 ; WITH THE CROMEMCO TUART: 19200, 9600, 4800, 1028 948 948 ; 2400, 1200, 300, 150, 110. 1029 949 949 ; 1030 950 950 ; WITH THE 3P+S: 2400, 300, 110. 1031 951 951 ; 1032 952 952 ; 1033e3a3 94 ce a2 92 953 953 BAUDRS: DEFB 94H,0CEH,0A2H,92H,88H,84H,82H,1 1034e3a7 88 84 82 01 953 954 1035 954 955 ; 1036 955 956 ; 1037e3ab 0a 00 80 956 957 LFNN: DEFB LF,0,0 | 80H 1038 957 958 ; 1039 958 959 ; 1040e3ae ba 959 960 PRMPT: DEFB (':' | 80H) 1041Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 17 1042Source file: z1mon-1.4.asm 1043Title: 1044 1045LOC OBJECT CODE LINE STMT SOURCE CODE 1046 960 961 ; THE COMMAND TBL MUST IMMEDIATELY FOLLOW 1047 961 962 ; 1048 962 963 ; THE PROMPT MESSAGE 1049e3af 8d e2 963 964 DEFW DISPL ;DISPLAY: DM, DR 1050e3b1 e5 e0 964 965 DEFW ERROR ;E 1051e3b3 e5 e0 965 966 DEFW ERROR 1052e3b5 23 e2 966 967 DEFW GO ;GO; GO/WITH BREAKPOINTS 1053e3b7 e5 e0 967 968 DEFW ERROR 1054e3b9 2d e0 968 969 DEFW INITBAUD ;INITIALIZE BAUD RATE 1055e3bb e5 e0 969 970 DEFW ERROR ;J 1056e3bd e5 e0 970 971 DEFW ERROR ;K 1057e3bf e5 e0 971 972 DEFW ERROR ;L 1058e3c1 83 e1 972 973 DEFW MOVE ;MOVE A BLOCK OF MEMORY 1059e3c3 8d e3 973 974 DEFW NULLS ;NULLS 1060e3c5 98 e3 974 975 DEFW OUTP ;OUTPUT 1061e3c7 ec e0 975 976 DEFW PROG ;PROGRAM 1062e3c9 e5 e0 976 977 DEFW ERROR ;Q 1063e3cb 73 e3 977 978 DEFW READB ;READ BINARY OR ASCII 1064e3cd b0 e2 978 979 DEFW SUBST ;SUBSTITUTE: SM, SA, SB. 1065e3cf e5 e0 979 980 DEFW ERROR ;T 1066e3d1 62 e3 980 981 DEFW UART ;UART: UA, UB 1067e3d3 66 e1 981 982 DEFW VERIF ;VERIFY BLOCKS OF MEMORY 1068e3d5 81 e3 982 983 DEFW WRITB ;WRITE BINARY OR ASCII 1069 983 984 ; 10700040 984 985 PM EQU 1 < PF ;PRIMEABLE-REG MASK 10710000 985 986 B1M EQU 0 ;1-BYTE REG MASK 10720020 986 987 B2M EQU 1 < B2F ;2-BYTE REG MASK 10730080 987 988 CRM EQU 1 < CRF ;CARRIAGE-RETURN MASK 1074 988 989 1075e3d7 43 989 990 RGTBL: DEFB -DUAF | PM ;A 1076e3d8 45 990 991 DEFB -DUBC | PM ;B 1077e3d9 46 991 992 DEFB -DUBC+1 | PM ;C 1078e3da 47 992 993 DEFB -DUDE | PM ;D 1079e3db 48 993 994 DEFB -DUDE+1 | PM ;E 1080e3dc 44 994 995 DEFB -DUAF+1 | PM ;F 1081e3dd 00 995 996 DEFB 0 1082e3de e9 996 997 DEFB -DUHL | PM | B2M | CRM ;H [HL] 1083e3df 11 997 998 DEFB -DUIN | B1M ;I 1084e3e0 00 998 999 DEFB 0 1085e3e1 00 999 1000 DEFB 0 1086e3e2 00 1000 1001 DEFB 0 1087e3e3 00 1001 1002 DEFB 0 1088e3e4 12 1002 1003 DEFB -DUIN+1 | B1M ;N [INTERRUPT FF] 1089e3e5 00 1003 1004 DEFB 0 1090e3e6 21 1004 1005 DEFB -DUPC | B2M ;PC 1091e3e7 00 1005 1006 DEFB 0 1092e3e8 00 1006 1007 DEFB 0 1093e3e9 2b 1007 1008 DEFB -DUSP | B2M ;SP 1094e3ea 00 1008 1009 DEFB 0 1095e3eb 00 1009 1010 DEFB 0 1096e3ec 00 1010 1011 DEFB 0 1097e3ed 00 1011 1012 DEFB 0 1098e3ee 2d 1012 1013 DEFB -DUIX | B2M ;X [IX] 1099e3ef af 1013 1014 DEFB -DUIY | B2M | CRM ;Y [IY] 1100 1014 1015 ; 1101 1015 1016 ; 1102e3f0 0d 0d 43 52 1016 1017 HEAD: DEFB CR,CR, 'CROMEMCO ZM1.',('4' | 80H) 1103e3f4 4f 4d 45 4d 1016 1018 1104e3f8 43 4f 20 5a 1016 1019 1105e3fc 4d 31 2e b4 1016 1020 1106Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 18 1107Source file: z1mon-1.4.asm 1108Title: 1109 1110LOC OBJECT CODE LINE STMT SOURCE CODE 1111e400 1017 1021 END CSTART 1112Z80-Assembler Release 1.9 Wed May 16 20:15:34 2018 Page 19 1113Source file: z1mon-1.4.asm 1114Title: Symboltable 1115 1116ABAUDP 0000 ACMNDP 0002 ALT 007d APARLP 0004 1117B1M 0000 B2F 0005 B2M 0020 BAUDRS e3a3 1118BCMNDP 0052 BPARLP 0054 BPMRK 000b BPSTOR 0016 1119CASE 0000 CHKIN e00e CL1 e0a4 CL2 e0b3 1120CLBP e0a0 CMND e0be CMND1 e0c2 COM1 e051 1121COM3 e082 COM4 e08b COMMON e04a CR 000d 1122CRF 0007 CRLF e14d CRM 0080 CSTART e000* 1123DATA 0001 DAV 0040 DISPL e28d DM2 e29a 1124DSPM e292* DSPM1 e295 DUAF fffd DUAF2 ffed 1125DUBC fffb DUBC2 ffeb* DUDE fff9 DUDE2 ffe9* 1126DUHL fff7 DUHL2 ffe7 DUIN ffef DUIX fff3 1127DUIY fff1 DUPC ffff DUSP fff5 ERROR e0e5 1128ERRV1 e0f5 ESC 001b ESCPE e0ea GBYTE e016 1129GCHR e144 GN1 e1bb GNHL e1ae GNHL0 e1ad 1130GO e223 GO1 e226 GO3 e23c GO5 e25f 1131GS1 e33d GS2 e34b GS3 e35c GSUBV e332 1132HEAD e3f0 HEXSH e1c6 HX1 e1d4 HXSH4 e1d6* 1133INIT e029 INITBAUD e02d IT1 e034 L1NCR e1a8 1134L2N1 e19b L2N2 e1a2 L2NCR e152 L2NCR0 e151 1135L3NCR e1a5 LD2N e18b LENRGS 001a LF 000a 1136LFNN e3ab MOVE e183 MVE e21a N2 e392 1137NBRKPT 0005 NULLS e38d OUTP e398 P1HEX e1fb 1138P2HEX e1f7 P2NMS e108* PADDR e15f* PBY1 e01f 1139PBYTE e01e PC1 e113 PC2 e122* PC3 e141 1140PCADDR e15c PCHR e112 PF 0006 PH1 e208 1141PM 0040 PMSG e20f PNHL e1f2 PNM e1ec 1142PR1 e0fb PRMPT e3ae PROG e0ec PS1 e210 1143PSNHL e1ef PSNM e1e9 RB1 e376 READB e373 1144RETN e265 RGTBL e3d7 RSTLC 0030 RT1 e273 1145RT2 e27e RT3 e288 SK1 e1df SKSG e1de 1146SKSG0 e1dd SKSGCR e155 SM1 e2b8 SPACE e110 1147SR2 e2d2 SR3 e2d5 SR4 e2f7 SR5 e30f 1148SR6 e31e SR8 e32d STAT 0000 SUBM e2b2* 1149SUBR e2c8 SUBR2 e2d1 SUBR3 e323 SUBST e2b0 1150SVMS e045 TBE 0080 TEMPS 0016 UART e362 1151UARTA e36f VERIF e166 VRFY e169 WB1 e384 1152WRITB e381 WSTART e008*