monitor for use with Prossor Technology Self contained Assembly Language Operating System fcbc f5 365 Push AF (CATCH) fcbd db 333 in 002 ** fcbf e6 346 ani 40 (100) fcc1 c2 302 jnz bd fc fcc4 f1 361 pop AF fcc5 c9 311 return fcc6 db 333 in 006 ** (try) (INTP) ;input word from tape fcc8 1f 037 rar fcc9 da 332 jc try c6 fc fccc db 333 in 007 fcce c9 311 return fccf e5 345 push H (OUTNC) fcd0 c5 305 push B fcd1 f5 365 push AF ** (OUTNC1) fcd2 3a 072 lda ff da fcd5 fe 376 cpi 00 fcd7 ca 312 jz e4 fc fcda db 333 in 82 (202) ** fcdc 17 027 ral fcdd d2 322 jnc da fc fce0 f1 361 pop AF fce1 d3 323 out 83 fce3 f5 365 push AF fce4 db 333 in 000 ** fce6 17 027 ral fce7 d2 322 jnc e4 fc fcea f1 361 pop AF fceb d3 323 out 001 fced c9 311 ret fcee 21 041 lxi H qfrom 0b fd ** (MCHRC) (load from ;move characters command fcf1 cd 315 call e5 ff (HXANS) fcf4 d5 325 push D fcf5 21 041 lxi H qto 13 fd (load to fcf8 cd 315 call e5 ff (HXANS) fcfb d5 325 push D fcfc 21 041 lxi H qcnt 19 fd (load count fcff cd 315 call e5 ff (HXANS) fd02 7b 173 mov A,E ; the count fd03 d1 321 pop D ; the to fd04 e1 341 pop H ; the from fd05 cd 315 call mvchr d3 ff fd08 c9 311 return fd09 00 000 nop fd0a 00 000 nop fd0b 46 106 F *** (QFROM) fd0c 52 122 R fd0d 4f 117 O fd0e 4d 115 M fd0f 3f 077 ? fd10 20 040 (sp) fd11 03 003 inx B fd12 03 003 inx B fd13 20 040 (sp) ** fd14 54 124 T (QTO) fd15 4f 117 O fd16 3f 077 ? fd17 20 040 (sp) fd18 03 003 inx B fd19 20 040 (sp) ** fd1a 43 103 C (QCNT) fd1b 4f 117 O fd1c 55 125 U fd1d 4e 116 N fd1e 54 124 T fd1f 3f 077 ? fd20 20 040 (sp) fd21 03 003 inx B fd22 03 003 inx B fd23 c5 305 push B ** (WSYNC) ;write synchronizing sequence on tape fd24 06 006 mvi B 1e (30) fd26 3e 076 mvi A 55 ** (AGAIN) fd28 cd 315 call outtp 7e fd fd2b 3e 076 mvi A aa fd2d cd 315 call outtp 7e fd fd30 05 005 dcr B fd31 c2 302 jnz again 26 fd fd34 c1 301 pop B fd35 c9 311 return fd36 cd 315 call intp c6 fc ** (RSYNC) ;lets tape go by till it finds a good sync fd39 fe 376 cpi 55 fd3b c2 302 jnz rsyn 36 fd fd3e cd 315 call intp c6 fc ** (FINDA) fd41 fe 376 cpi aa fd43 c2 302 jnz rsync 36 fd fd46 cd 315 call intp c6 fc fd49 fe 376 cpi ff fd4b c2 302 jnz finda 3e fd fd4e c9 311 return fd4f db 333 in 00 ** (INNC) fd51 e6 346 ani 40 (100) fd53 ca 312 jz innc 4f fd fd56 db 333 in 01 fd58 e6 346 ani 7f (127) fd5a c9 311 return fd5b db 333 in 02 ** (FREE) fd5d e6 346 ani 40 (100) | fd5f c2 302 jnz 5b fd | fd62 c9 311 return | fd63 c9 311 return (FREE) fd64 e5 345 push H ** (RDNC) fd65 d5 325 push D fd66 c5 305 push B fd67 cd 315 call read 25 f0 (from P.T. program READ) fd6a c1 301 pop B fd6b d1 321 pop D fd6c e1 341 pop H fd6d c9 311 return fd6e e5 345 push H ** (QANDA) fd6f 7e 176 mov A,M ** (WR) fd70 cd 315 call outnc1 ee ff fd73 23 043 inx H fd74 fe 376 cpi 03 fd76 c2 302 jnz wr 6f fd fd79 cd 315 call rdnc 64 fd fd7c e1 341 pop H fd7d c9 311 return fd7e f5 365 push AF ** (OUTTP) ;outputs word to tape fd7f db 333 in 006 ** try1 fd81 17 027 ral fd82 da 332 jc try1 7f fd fd85 f1 361 pop AF fd86 d3 323 out 007 fd88 c9 311 return fd89 f5 365 push AF ** fd8a db 333 in 000 ** (L1) fd8c 17 027 ral fd8d d2 322 jnc l1 8a fd fd90 f1 361 pop AF fd91 d3 323 out 001 fd93 c9 311 return fd94 cd 315 call intp c6 fc ** (TPDMP) fd97 d3 323 out 003 fd99 cd 315 call outnc 89 fd fd9c c3 303 jmp tpdmp 94 fd fd9f e5 345 push H ** (MVCHR) HL-from ;move characters fda0 d5 325 push D DE-to fda1 c5 305 push B A-length fda2 47 107 mov B,A fda3 04 004 inr B ;now length +1 fda4 05 005 dcr B (LOOP) fda5 ca 312 jz done b1 fd fda8 7e 176 mov A,M fda9 eb 353 xchg fdaa 77 167 mov M,A fdab eb 353 xchg fdac 13 023 inx D fdad 23 043 inx H fdae c3 303 jmp loop a4 fd fdb1 c1 301 pop B ** (DONE) fdb2 d1 321 pop D fdb3 e1 341 pop H fdb4 c9 311 return fdb5 e5 345 push H ** (TELL) ;HL points to string to print fdb6 7e 176 mov A,M ** (AGAIN1) fdb7 cd 315 call outnc ee ff fdba 23 043 inx H fdbb fe 376 cpi 003 fdbd c2 302 jnz again1 b6 fd fdc0 e1 341 pop H fdc1 c9 311 return fdc2 e5 345 push H ** (RHEX) four ascii characters;HL points to fdc3 c5 305 push B fdc4 11 021 lxi D 00 00 fdc7 06 006 mvi B 04 fdc9 0e 016 mvi C 04 ** (LOOP4) fdcb 37 067 stc ** (SHFT4) fdcc 7b 173 mov A,E fdcd 17 027 ral ;now has 1 in right most position fdce 5f 137 mov E,A fdcf 7a 172 mov A,D fdd0 17 027 ral ;carry is from E fdd1 57 127 mov D,A fdd2 da 332 jc con d6 fd fdd5 1d 035 dcr E ;set right most back to zero fdd6 0d 015 dcr c ** (CON) fdd7 c2 302 jnz shft4 cb fd fdda 7e 176 mov A,M ;convert char to bin crudely fddb d6 326 sui 37 fddd fe 376 cpi 08 fddf f2 362 jp con2 e4 fd fde2 c6 306 adi 27 fde4 83 203 add E ** (CON2) fde5 5f 137 mov E,A fde6 23 043 inx H fde7 05 005 dcr B fde8 c2 302 jnz loop4 c9 fd fdeb c1 301 pop B fdec e1 341 pop H fded c9 311 return fdee 21 041 lxi H 00 f0 ** (NEWOS) (INITA) fdf1 db 333 in 006 ** fdf3 e6 346 ani 80 (200) fdf5 c2 302 jnz f1 fd fdf8 7e 176 mov A,M fdf9 d3 323 out 007 fdfb 7d 175 mov A,L fdfc 23 043 inx H fdfd fe 376 cpi 00 fdff c2 302 jnz f1 fd fe02 7c 174 mov A,H fe03 fe 376 cpi 00 fe05 d3 323 out 02 fe07 c2 302 jnz f1 fd fe0a fb 373 ei fe0b c3 303 jmp ee fd fe0e cd 315 call a6 f0 (NLAB) (from P.T. program CRLF) fe11 c9 311 return fe12 00 000 nop fe13 00 000 nop fe14 e5 345 push H ** (HXANS) fe15 cd 315 call qanda e2 ff fe18 21 041 lxi H ibuff ac d0 fe1b cd 315 call rhex b8 ff fe1e e1 341 pop H fe1f c9 311 return fe20 21 041 lxi H qstrt88 fe ** (WRFIL) (load start ;not really necessary when used as a command fe23 cd 315 call hxans e5 ff fe26 d5 325 push D fe27 21 041 lxi H qend 90 fe (load end fe2a cd 315 call hxans e5 ff fe2d e1 341 pop H ;starting addr in H fe2e e5 345 push H ;save for complementing fe2f 06 006 mvi B ff fe31 7c 174 mov A,H ;multiply HL by -1 fe32 a8 250 xra B fe33 67 147 mov H,A fe34 7d 175 mov A,L fe35 a8 250 xra B fe36 6f 157 mov L,A fe37 23 043 inx H fe38 23 043 inx H fe39 19 031 dad D ; length is now in HL fe3a d1 321 pop D ; start is in D fe3b eb 353 xchg ; but exchange these fe3c e5 345 push H ; save H fe3d 21 041 lxi H name 98 fe fe40 cd 315 call qanda e2 ff fe43 cd 315 call wsync f7 ff fe46 78 170 mov A,B fe47 cd 315 call outtp dc ff fe4a 21 041 lxi H ibuf ac d0 fe4d 7e 176 mov A,M ** (AGN) fe4e fe 376 cpi 0d ;cr fe50 ca 312 jz con 5a fe fe53 cd 315 call outtp dc ff fe56 23 043 inx H fe57 c3 303 jmp agn 4d fe fe5a 3e 076 mvi A 03 ** (CON) fe5c cd 315 call outtp dc ff fe5f e1 341 pop H ;H is now start of file fe60 7e 176 mov A,M ** (AGN2) fe61 fe 376 cpi 003 fe63 c2 302 jnz con2 69 fe fe66 cd 315 call outtp dc ff ;goes out twicw if its an 003 fe69 cd 315 call outtp dc ff ** (CON2) fe6c 1b 033 dcx D fe6d 23 043 inx H fe6e af 257 xra A fe6f bb 273 cmp E fe70 c2 302 jnz agn2 60 fe fe73 ba 272 cmp D fe74 c2 302 jnz agn2 60 fe fe77 3e 076 mvi A 003 ;must be done , put out trailer fe79 cd 315 call outtp dc ff fe7c 78 170 mov A,B ;get FF fe7d cd 315 call outtp dc ff fe80 3e 076 mvi A, 21 ;! fe82 cd 315 call outnc1 ee ff fe85 c9 311 return fe86 00 000 nop fe87 00 000 nop fe88 53 123 S ** (QSTRT) fe89 54 124 T fe8a 41 101 A fe8b 52 122 R fe8c 54 124 T fe8d 3f 077 ? fe8e 20 040 (sp) fe8f 03 003 inx B fe90 20 040 (sp) fe91 7f 177 mov A,A ** (QEND) fe92 45 105 E fe93 4e 116 N fe94 44 104 D fe95 3f 077 ? fe96 20 040 (sp) fe97 03 003 inx B fe98 0a 012 ldax B ** fe99 0d 015 dcr C fe9a 7f 177 mov A,A fe9b 4e 116 N fe9c 41 101 A fe9d 4d 115 M fe9e 45 105 E fe9f 3f 077 ? fea0 20 040 (sp) fea1 03 003 inx B fea2 21 041 lxi H qaddr c4 fe ** (FNXT) (load ADDR fea5 cd 315 call hxans e5 ff fea8 d5 325 push D fea9 21 041 lxi H qptrn cc fe (load PTRN feac cd 315 call hxans e5 ff feaf 7b 173 mov A,E feb0 e1 341 pop H feb1 2b 053 dcx H feb2 23 043 inx H ** (LOOP) feb3 be 276 cmp M feb4 c2 302 jnz loop b2 fe feb7 e5 345 push H feb8 7c 174 mov A,H feb9 cd 315 call hout d3 f1 (from P.T. program HOUT) febc e1 341 pop H febd 7d 175 mov A,L febe cd 315 call hotb e3 f1 (from P.T. program HOTB) fec1 c9 311 return fec2 00 000 nop fec3 00 000 nop fec4 41 101 A ** (QADDR) fec5 44 104 D fec6 44 104 D fec7 52 122 R fec8 3f 077 ? fec9 20 040 (sp) feca 03 003 inx B fecb 03 003 inx B fecc 20 040 (sp) ** fecd 50 120 P (QPTRN) fece 54 124 T fecf 52 122 R fed0 4e 116 N fed1 3f 077 ? fed2 20 040 (sp) fed3 03 003 inx B fed4 21 041 lxi H 08 ff ** (CHGF) (load ADDR ;make the operating system fed7 cd 315 call e5 ff ;change the location of a file feda 62 142 mov H,D fedb 6b 153 mov L,E fedc 22 042 shld 05 d0 fedf 3e 076 mvi A 01 fee1 be 276 cmp M ** fee2 23 043 inx H fee3 c2 302 jnz e1 fe fee6 2b 053 dcx H fee7 22 042 shld 07 d0 feea 3e 076 mvi A 0d feac 2b 053 dcx H ** fead be 276 cmp M feae c2 302 jnz ec fe fef1 2b 053 dcx H ** fef2 be 276 cmp M fef3 c2 302 jnz f1 fe fef6 23 043 inx H fef7 23 043 inx H fef8 06 006 mvi B 04 fefa 11 021 lxi D 09 d0 fefd 7e 176 mov A,M ** fefe 12 022 stax D feff 05 005 dcr B ff00 c8 310 rz ff01 00 000 nop ff02 00 000 nop ff03 23 043 inx H ff04 13 023 inx D ff05 c3 303 jmp fd fe ff08 41 101 A ff09 44 104 D ff0a 44 104 D ff0b 52 122 R ff0c 3f 077 ? ff0d 20 040 (sp) ff0e 03 003 inx B ff0f f5 365 push AF ** (DUMPR) ;dump registers ff10 78 170 mov A,B ff11 cd 315 call hotnc be ff ff14 79 171 mov A,C ff15 cd 315 call hotnc be ff ff18 7a 172 mov A,D ff19 cd 315 call hotnc be ff ff1c 7b 173 mov A,E ff1d cd 315 call hotnc be ff ff20 7c 174 mov A,H ff21 cd 315 call hotnc be ff ff24 7d 175 mov A,L ff25 cd 315 call hotnc be ff ff28 7e 176 mov A,M ff29 cd 315 call hotnc be ff ff2c f1 361 pop AF ff2d f5 365 push AF ff2e cd 315 call hotnc be ff ff31 c5 305 push B ff32 cd 315 call a6 f0 (CRLF) ff35 c1 301 pop B ff36 f1 361 pop AF ff37 c9 311 return ff38 ac 254 xra H (FREE) ff39 d0 320 rnc | ff3a cd 315 call c2 fd | ff3d e1 341 pop H | ff3e c9 311 return (FREE) ff3f 21 041 lxi H qaddr 94 ff ** (RDFIL) (load ADDR ;find out where to put it ff42 cd 315 call e5 ff (HXANS) ff45 21 041 lxi H qname 9c ff (load NAME ff48 cd 315 call qanda e2 ff ff4b 3e 076 mvi A 53 ** (LOOK) ;S for scan ff4d cd 315 call outnc b2 ff ff50 cd 315 call rsync f4 ff ff53 3e 076 mvi A 46 ;F for file ff55 cd 315 call outnc b2 ff ff58 21 041 lxi H ibuff ac d0 ff5b cd 315 call intp d9 ff ** ff5e fe 376 cpi 003 ff60 ca 312 jz bufod 6b ff ff63 be 276 cmp M ff64 c2 302 jnz look 4b ff ff67 23 043 inx H ff68 c3 303 jmp cmpr 5b ff ff6b 3e 076 mvi A 0d ** (buffod ff6d be 276 cmp M ff6e c2 302 jnz look 4b ff ff71 3e 076 mvi A 4c ;L found it Load ff73 cd 315 call outnc b2 ff ff76 eb 353 xchg ff77 cd 315 call intp d9 ff ** (LDTP) ff7a fe 376 cpi 003 ff7c ca 312 jz lgc3 84 ff ff7f 77 167 mov M,A ** (MOVM) ff80 23 043 inx H ff81 c3 303 jmp ldtp 77 ff ff84 cd 315 call intp d9 ff ** (LGC3) ff87 fe 376 cpi 003 ff89 ca 312 jz movm 7f ff ff8c 3e 076 mvi A 21 ;! ff8e cd 315 call outnc1 ee ff ff91 c9 311 return ff92 00 000 nop ff93 00 000 nop ff94 41 101 A (QADDR) ff95 44 104 D ff96 44 104 D ff97 52 122 R ff98 3f 077 ? ff99 20 040 (sp) ff9a 03 003 inx B ff9b 03 003 inx B ff9c 20 040 (sp) ff9d 4e 116 N (QNAME) ff9e 41 101 A ff9f 4d 115 M ffa0 45 105 E ffa1 3f 077 ? ffa2 20 040 (sp) ffa3 03 003 inx B ffa4 f5 365 push AF ** (HOTNC) ffa5 d5 325 push D ffa6 e5 345 push H ffa7 c5 305 push B ffa8 cd 315 call hot8 e3 f1 (from P.T. program) ffab c1 301 pop B ffac e1 341 pop H ffad d1 321 pop D ffae f1 361 pop AF ffaf c9 311 return ffb0 fb 373 ei (EI) ffb1 c3 303 jmp c9 e3 ffb4 fc 374 cm c3 93 (FREE) ffb7 f0 360 rp (FREE) ffb8 c3 303 jmp c2 fd ** JMP to (RHEX) ffbb c3 303 jmp a2 fe JMP to (FNXT) ffbe c3 303 jmp a4 ff ** JMP to (HOTNC) ffc1 c3 303 jmp d4 fe JMP to (CHGF) ffc4 c3 303 jmp bc c9 ffc7 c9 311 return ffc8 00 000 nop ffc9 00 000 nop (OSTJ) ffca c3 303 jmp 0f ff JMP to (DUMPR) ffcd c3 303 jmp ee fd JMP to (NEWOS) ffd0 c3 303 jmp ee fc JMP to (MCHRC) ffd3 c3 303 jmp 9f fd ** JMP to (MVCHR) ffd6 c3 303 jmp 94 fd JMP to (TPDMP) ffd9 c3 303 jmp c6 fc ** JMP to (INTP) ffdc c3 303 jmp 7e fd ** JMP to (OUTTP) ffdf c3 303 jmp b5 fd jmp to (TELL) ffe2 c3 303 jmp 6e fd ** jmp to (QANDA) ffe5 c3 303 jmp 14 fe ** jmp to (HXANS) ffe8 c3 303 jmp 64 fd JMP to (RDNC) ffeb c3 303 jmp 4f fd JMP to (INNC) ffee c3 303 jmp d1 fc ** JMP to (OUTNC1) fff1 c3 303 jmp a0 f0 JMP to P.T. (wrong ADDR) fff4 c3 303 jmp 36 fd ** JMP to (RSYNC) fff7 c3 303 jmp 23 fd ** JMP to (WSYNC) fffa c3 303 jmp 3f ff JMP to (NMLEN) fffd c3 303 jmp 20 fe JMP to (WRFIL)