;PROGRAM SURVEY.ASM ;ASSEMBLE WITH DRI 'MAC' MACRO ASSEMBLER ;PROGRAM PRINTS SYSTEM SURVEY ON CRT/PRINTER ;DISASSEMBLED AND CONVERTED 21 NOV 84 RHP 0100 ORG 00100H 0005 = BDOS EQU 00005H ;LOCATION OF BDOS POINTER 0006 = BDOSH EQU BDOS+1 ;HI BYTE OF BDOS ADDRESS 0007 = BDOSA EQU BDOS+2 ;BDOS ADDRESS ;BDOS CALLS 0002 = CONOUT EQU 002H ;BDOS CALLS 000C = VERSION EQU 00CH ;RETURN VERSION NUMBER 000E = SELDSK EQU 00EH ;SELECT DISK 0011 = FRSTFL EQU 011H ;RETURN FIRST FILE 0012 = NEXTFL EQU 012H ;NEXT FILE 0018 = LOGIN EQU 018H ;DISKS LOGGED IN 0019 = CDISK EQU 019H ;GET CURRENT DISK IN HL 001B = ALLOC EQU 01BH ;DISK ALLOCATION ADDRESS 001D = ROBITS EQU 01DH ;GET DISK READ ONLY BITS IN HL 001F = DPBADR EQU 01FH ;DISK PARAMETER BLOCK ADDRESS 0020 = USRCOD EQU 020H ;GET USER CODE IN A 0000 = ZERO EQU 0000H 000D = CR EQU 00DH ;CARRIAGE RETURN 008D = CRHI EQU 08DH ;CR WITH HI BIT SET 000A = LF EQU 00AH ;LINE FEED 008A = LFHI EQU 08AH ;LINE FEED WITH HI BIT SET 0009 = TAB EQU 009H ;TAB 003A = COLON EQU 03AH ;COLON 007C = BAR EQU 07CH ;VERTICAL BAR 0089 = TABHI EQU 089H ;TAB WITH HI BIT SET 00A0 = SPACHI EQU 0A0H ;SPACE WITH HI BIT SET 00AE = DOTHI: EQU 0AEH ;. WITH HI BIT SET 00C3 = CHI EQU 0C3H ;C WITH HI BIT SET 00CD = MHI EQU 0CDH ;M WITH HI BIT SET 00D2 = RHI EQU 0D2H ;R WITH HI BIT SET 00D4 = THI EQU 0D4H ;T WITH HI BIT SET MACLIB Z80 0100 210000 ENTRY: LXI H,ZERO ;CLEAR HL 0103 39 DAD SP ;MOVE OLD STACK TO HL 0104 22A806 SHLD OSTACK ;SAVE OLD STACK 0107 31F306 LXI SP,STACK ;START NEW STACK 010A CD1C06 CALL PRINT ;CLEAN SCREEN 010D 0D0A0A0A0A DB CR, LF,LF,LF,LF,LF,LF,LF,LF,LF 0117 0A0A0A0A0A DB LF,LF,LF,LF,LF,LF,LF,LFHI 011F CD1C06 CALL PRINT ;PRINT BANNER 0122 090909 DB TAB, TAB, TAB 0125 2A2A2A2053 DB '*** SYSTEM SURVEY ***' 013A 0D0A0D8A DB CR, LF, CR, LFHI 013E 210800 LXI H,00008H 0141 0E18 MVI C,LOGIN 0143 E5 PUSH H 0144 CD0500 CALL BDOS ;RETURN LOGIN BITS IN HL,BA 0147 E1 POP H 0148 1F LOGIN1: RAR 0149 D25C02 JNC DSKSP1 014C F5 PUSH PSW 014D E5 PUSH H 014E CD1C06 CALL PRINT 0151 4472697665 DB 'Drive', SPACHI 0157 3E41 MVI A,'A' ;CONV DISK FROM BIN TO ASCII 0159 84 ADD H 015A 5F MOV E,A 015B CD3406 CALL PCONS ;PRINT LOGGED ON DISK 015E CD1C06 CALL PRINT 0161 3AA0 DB COLON, SPACHI ;CALCULATE SIZE OF DISK AND PRINT SIZE IN DECIMAL 0163 E1 DSKSZ: POP H 0164 E5 PUSH H 0165 5C MOV E,H 0166 0E0E MVI C,SELDSK 0168 CD0500 CALL BDOS ;SELECT INDICATED DISK 016B 0E1B MVI C,ALLOC 016D CD0500 CALL BDOS ;RETURN ALLOC VECT ADDR IN HL 0170 6F MOV L,A 0171 60 MOV H,B 0172 E5 PUSH H ;SAVE ALLOC VECT ADDR 0173 0E0C MVI C,VERSION 0175 CD0500 CALL BDOS ;RET VERS NO. IN HL,BA 0178 7D MOV A,L 0179 B7 ORA A 017A C29301 JNZ VNOT0 017D 2A0600 LHLD BDOSH ;IF VERSION 0 0180 2E3C MVI L,03CH 0182 7E MOV A,M 0183 32B006 STA STOR4 0186 23 INX H 0187 23 INX H 0188 6E MOV L,M 0189 2600 MVI H,ZERO 018B 22B106 SHLD STOR5 018E 0620 MVI B,020H 0190 C3C501 JMP JOINV0 0193 3E3F VNOT0: MVI A,03FH ;VERSION NOT 0 0195 328806 STA STOR1 0198 0E1F MVI C,DPBADR 019A CD0500 CALL BDOS ;GET DBP ADDR IN HL 019D 23 INX H 019E 23 INX H 019F 7E MOV A,M 01A0 32B006 STA STOR4 01A3 23 INX H 01A4 23 INX H 01A5 23 INX H 01A6 7E MOV A,M 01A7 23 INX H 01A8 66 MOV H,M 01A9 6F MOV L,A 01AA 22B106 SHLD STOR5 01AD 23 INX H 01AE 0603 MVI B,003H 01B0 7C RRHLN: MOV A,H 01B1 B7 ORA A 01B2 1F RAR 01B3 67 MOV H,A 01B4 7D MOV A,L 01B5 1F RAR 01B6 6F MOV L,A 01B7 05 DCR B 01B8 C2B001 JNZ RRHLN 01BB 45 MOV B,L 01BC 3AB106 LDA STOR5 01BF E603 ANI 003H 01C1 CAC501 JZ JOINV0 01C4 04 INR B 01C5 E1 JOINV0: POP H 01C6 110000 LXI D,ZERO 01C9 0E08 JOINV1: MVI C,008H 01CB 7E MOV A,M 01CC 1F JOINV2: RAR 01CD D2D101 JNC JOINV3 01D0 13 INX D 01D1 0D JOINV3: DCR C 01D2 C2CC01 JNZ JOINV2 01D5 23 INX H 01D6 05 DCR B 01D7 C2C901 JNZ JOINV1 01DA CD3906 CALL WHAT 01DD E5 PUSH H 01DE CDF605 CALL BINDEC ;PRINT SIZE OF DISK 01E1 CD1C06 CALL PRINT 01E4 4B20627974 DB 'K bytes in', SPACHI ;CALCULATE THE NUMBER OF FILES AND PRINT IN DECIMAL 01EF 118806 LXI D,STOR1 01F2 0E11 MVI C,FRSTFL 01F4 CD0500 CALL BDOS ;GET FCB OF FIRST FILE ;IN HL AND DIR CODE IN A 01F7 210000 LXI H,ZERO 01FA FEFF NXFILE: CPI 0FFH ;LAST FILE? 01FC CA1D02 JZ LSFILE 01FF 87 ADD A 0200 87 ADD A 0201 87 ADD A 0202 87 ADD A 0203 87 ADD A 0204 C680 ADI 080H 0206 5F MOV E,A 0207 1600 MVI D,ZERO 0209 1A LDAX D 020A FEE5 CPI 0E5H 020C CA1002 JZ NXFIL1 020F 23 INX H 0210 118806 NXFIL1: LXI D,STOR1 0213 0E12 MVI C,NEXTFL 0215 E5 PUSH H 0216 CD0500 CALL BDOS ;GET FCB ADDR OF NEXT FILE ;IN HL AND DIR CODE IN A 0219 E1 POP H 021A C3FA01 JMP NXFILE 021D CDF605 LSFILE: CALL BINDEC ;PRINT NUMBER OF FILES 0220 CD1C06 CALL PRINT 0223 2066696C65 DB ' files with', SPACHI ;CALCULATE REMAINING DISK SPACE AND PRINT IN DECIMAL 022F 2AB106 LHLD STOR5 0232 EB XCHG 0233 13 INX D 0234 CD3906 CALL WHAT 0237 EB XCHG 0238 E1 POP H 0239 7C MOV A,H 023A 2F CMA 023B 67 MOV H,A 023C 7D MOV A,L 023D 2F CMA 023E 6F MOV L,A 023F 23 INX H 0240 19 DAD D 0241 CDF605 CALL BINDEC ;PRINT DISK SPACE LEFT 0244 CD1C06 CALL PRINT 0247 4B20627974 DB 'K bytes remaining', CR, LFHI 025A E1 POP H 025B F1 POP PSW 025C 24 DSKSP1: INR H 025D 2D DCR L 025E C24801 JNZ LOGIN1 0261 CD1C06 CALL PRINT ;PRINT MEMORY SCALE 0264 0D0A4D454D DB CR, LF, 'MEMORY MAP:', CR, LF 0273 3009380931 DB '0',TAB,'8',TAB,'16',TAB,'24',TAB,'32' 027F 0934300934 DB TAB,'40',TAB,'48',TAB,'56',TAB,'64' 028B 0D0A7C097C DB CR,LF,BAR,TAB,BAR,TAB,BAR,TAB,BAR,TAB 0295 7C097C097C DB BAR,TAB,BAR,TAB,BAR,TAB,BAR,TAB,BAR 029E 0D0AD4 DB CR, LF, THI ; EVALUATE THE MEMORY IN 1K BLOCKS AND PRINT T,C,M,OR NONE 02A1 21AA06 LXI H,RAMSZ 02A4 36FF MVI M,0FFH 02A6 23 INX H 02A7 3603 MVI M,003H 02A9 0604 MVI B,004H 02AB 23 MEMT1: INX H 02AC 3600 MVI M,ZERO 02AE 05 DCR B 02AF C2AB02 JNZ MEMT1 02B2 211504 LXI H,TEST1 02B5 0E3F MVI C,03FH 02B7 111504 MEMT2: LXI D,TEST1 02BA AF XRA A 02BB 32AE06 STA STOR2 02BE 32AF06 STA STOR3 02C1 7E MEMT3: MOV A,M 02C2 47 MOV B,A 02C3 2F CMA 02C4 77 MOV M,A 02C5 96 SUB M 02C6 70 MOV M,B 02C7 C2D802 JNZ MEMT5 02CA E5 PUSH H 02CB 21AA06 LXI H,RAMSZ 02CE 34 INR M 02CF C2D402 JNZ MEMT4 02D2 23 INX H 02D3 34 INR M 02D4 E1 MEMT4: POP H 02D5 C3F902 JMP TPAM3 02D8 32AE06 MEMT5: STA STOR2 02DB 3EFF MVI A,0FFH 02DD 90 SUB B 02DE C2EB02 JNZ TPAMEM 02E1 3AAF06 LDA STOR3 02E4 A7 ANA A 02E5 CAF902 JZ TPAM3 02E8 C3EE02 JMP TPAM1 02EB 32AF06 TPAMEM: STA STOR3 02EE E5 TPAM1: PUSH H 02EF 21AC06 LXI H,ROMSZ 02F2 34 INR M 02F3 C2F802 JNZ TPAM2 02F6 23 INX H 02F7 34 INR M 02F8 E1 TPAM2: POP H 02F9 23 TPAM3: INX H 02FA 1B DCX D 02FB AF XRA A 02FC B2 ORA D 02FD B3 ORA E 02FE C2C102 JNZ MEMT3 0301 C5 PUSH B 0302 E5 PUSH H 0303 3AAE06 LDA STOR2 0306 A7 ANA A 0307 C23203 JNZ ROMEM 030A 3A0700 LDA BDOSA 030D 25 DCR H 030E BC CMP H 030F DA1903 JC CPMEM 0312 CD1C06 CALL PRINT ;T FOR TPA (RAM) AREA 0315 D4 DB THI 0316 C34403 JMP MORMEM 0319 C614 CPMEM: ADI 014H 031B D22003 JNC CPMTS 031E 3EFF MVI A,0FFH 0320 BC CPMTS: CMP H 0321 DA2B03 JC RAMEM 0324 CD1C06 CALL PRINT ;PRINT C FOR CPM AREA 0327 C3 DB CHI 0328 C34403 JMP MORMEM 032B CD1C06 RAMEM: CALL PRINT ;PRINT M FOR UNASSIGNED MEMORY 032E CD DB MHI 032F C34403 JMP MORMEM 0332 3AAF06 ROMEM: LDA STOR3 0335 A7 ANA A 0336 CA4003 JZ NOMEM 0339 CD1C06 CALL PRINT ;PRINT R FOR ROM MEMORY 033C D2 DB RHI 033D C34403 JMP MORMEM 0340 CD1C06 NOMEM: CALL PRINT ;PRINT DOT FOR MISSING 0343 AE DB DOTHI 0344 E1 MORMEM: POP H 0345 C1 POP B 0346 0D DCR C 0347 C2B702 JNZ MEMT2 034A CD1C06 CALL PRINT ;PRINT EXPLAINATION 034D 0D0A0D0A54 DB CR, LF, CR, LF, 'T=TPA', TAB, 'C=CPM' 035C 094D3D556E DB TAB, 'M=Unassigned Memory', TAB 0371 523D524F4D DB 'R=ROM or Bad Memory', CR, LF, CR, LFHI ;GET SIZE OF RAM AND PRINT IN DECIMAL 0388 2AAA06 LHLD RAMSZ ;GET RAM SIZE 038B E5 PUSH H ;SAVE RAM SIZE 038C CDF605 CALL BINDEC ;PRINT RAM SIZE 038F CD1C06 CALL PRINT 0392 2042797465 DB ' Bytes RAM', TAB, TABHI ;GET SIZE OF ROM AND PRINT IN DECIMAL 039E 2AAC06 LHLD ROMSZ ;GET ROM SIZE 03A1 E5 PUSH H ;SAVE ROM SIZE 03A2 CDF605 CALL BINDEC ;PRINT SIZE OF ROM 03A5 CD1C06 CALL PRINT 03A8 2042797465 DB ' Bytes ROM', TAB, TABHI ;GET SIZE OF TPA AND PRINT IN DECIMAL 03B4 2A0600 LHLD BDOSH ;POINT TO BDOS IN K 03B7 CDF605 CALL BINDEC ;PRINT TPA SIZE 03BA CD1C06 CALL PRINT 03BD 2042797465 DB ' Bytes in TPA', CR, LFHI ;CALCULATE SIZE OF UNIMPLEMENTED MEMORY AND PRINT IN DECIMAL 03CC D1 POP D ;GET ROM SIZE 03CD E1 POP H ;GET RAM SIZE 03CE 19 DAD D ;ADD FOR TOTAL MEMORY SIZE 03CF E5 PUSH H ;SAVE TOTAL MEMORY SIZE 03D0 110000 LXI D,ZERO 03D3 7C MOV A,H ;COMPLEMENT MEMORY SIZE 03D4 2F CMA 03D5 67 MOV H,A 03D6 7D MOV A,L 03D7 2F CMA 03D8 6F MOV L,A 03D9 19 DAD D ;SUBTRACT USED SIZE FROM MEM SPACE 03DA CDF605 CALL BINDEC ;PRINT EMPTY BYTES 03DD CD1C06 CALL PRINT 03E0 2042797465 DB ' Bytes Empty ', TABHI ;GET TOTAL MEMORY SIZE AND PRINT IN DECIMAL 03F0 E1 POP H ;REGAIN TOTAL MEMORY SIZE 03F1 CDF605 CALL BINDEC ;PRINT MEMORY SIZE 03F4 CD1C06 CALL PRINT 03F7 20546F7461 DB ' Total Active Bytes', CR, LF, CR, LF 040E 4143544956 DB 'ACTIVE ' 0415 492F4F2050TEST1: DB 'I/O PORTS', CR, LFHI ;DETERMINE ACTIVE I/O PORTS AND PRINT THEM OUT IN HEX 0420 210010 LXI H,01000H 0423 2B IODLY: DCX HL 0424 7C MOV A,H 0425 B5 ORA L 0426 C22304 JNZ IODLY 0429 210000 LXI H,ZERO ;H SUMS THE NO OF IO PORTS 042C 110900 LXI D,00009H 042F 7A IOLOOP: MOV A,D 0430 FE9F CPI 09FH 0432 CA4404 JZ SKIP 0435 FEFC CPI 0FCH ;SKIP OVER WAIT PORT 0437 CA4404 JZ SKIP 043A 323E04 STA PORT+1 043D DB00 PORT: IN 0 043F FEFF CPI 0FFH ;ALL DONE? 0441 CA7904 JZ NXTIO 0444 7A SKIP: MOV A,D 0445 D5 PUSH D 0446 E5 PUSH H 0447 C36104 JMP ENDLN ;CONVERT BINARY PORT NO TO HEX AND PRINT 044A F5 BINHEX: PUSH PSW 044B 0F RRC 044C 0F RRC 044D 0F RRC 044E 0F RRC 044F CD5304 CALL BNHX1 0452 F1 POP PSW 0453 E60F BNHX1: ANI 00FH 0455 C690 ADI 090H 0457 27 DAA 0458 CE40 ACI 040H 045A 27 DAA 045B 5F MOV E,A 045C 0E02 MVI C,CONOUT 045E C30500 JMP BDOS ;PRINT PORT NO IN HEX 0461 CD4A04 ENDLN: CALL BINHEX 0464 E1 POP H 0465 D1 POP D 0466 23 INX H 0467 1D DCR E 0468 C27504 JNZ TABIO 046B 1E09 MVI E,TAB ;PRINT TAB, CRLF 046D CD1C06 CALL PRINT 0470 0D8A DB CR,LFHI 0472 C37904 JMP NXTIO 0475 CD1C06 TABIO: CALL PRINT ;PRINT TAB 0478 89 DB TABHI 0479 14 NXTIO: INR D 047A C22F04 JNZ IOLOOP 047D CD1C06 CALL PRINT 0480 0D8A DB CR, LFHI 0482 CDF605 CALL BINDEC ;PRINT NO OF ACTIVE PORTS 0485 CD1C06 CALL PRINT 0488 20506F7274 DB ' Ports active', CR, LFHI 0497 CD1C06 CALL PRINT ;PRINT CCP MSG 049A 4343502073 DB 'CCP starts at',SPACHI 04A8 2A0600 LHLD BDOSH ;GET BDOS ADDRESS 04AB 7D MOV A,L 04AC DE06 SBI 006H ;SUBTRACT BDOS ENTRY OFFSET 04AE 6F MOV L,A 04AF 22F706 SHLD SBDOS ;SAVE BDOS ADDR 04B2 1100F7 LXI D,0F700H ;- CCP SIZE & BASE PAGE 04B5 19 DAD D ;SUBTRACT CCP & BASE PAGE 04B6 22F506 SHLD STPA ;SAVE THE TPA SIZE 04B9 110001 LXI D,ENTRY ;BASE PAGE SIZE 04BC 19 DAD D ;ADD BP TO TPA TO GET CCP ADDR 04BD CD5C06 CALL HLHEX ;PRINT CCP ADDR IN HEX 04C0 CD1C06 CALL PRINT ;PRINT BDOS MSG 04C3 2020202042 DB ' BDOS starts at',SPACHI 04D6 2AF706 LHLD SBDOS ;RECOVER BDOS ADDR 04D9 CD5C06 CALL HLHEX ;PRINT BDOS ADDR IN HEX 04DC CD1C06 CALL PRINT ;PRINT BIOS MSG 04DF 2020202042 DB ' BIOS starts at',SPACHI 04F2 11000E LXI D,00E00H ;LENGTH OF BDOS 04F5 2AF706 LHLD SBDOS ;GET BDOS START ADDR 04F8 19 DAD D ;FIGURE BDOS END ADDR 04F9 CD5C06 CALL HLHEX ;PRINT BIOS ADDR IN HEX 04FC CD8006 CALL CRLFD ;PRINT CR/LF 04FF CD1C06 CALL PRINT ;PRINT TPA MSG 0502 417661696C DB 'Available TPA without killing the CCP is',SPACHI 052B 2AF506 LHLD STPA ;RECOVER TPA SIZE 052E CD5C06 CALL HLHEX ;PRINT TPA SIZE IN HEX 0531 CD1C06 CALL PRINT ;PRINT 'BYTES' 0534 2062797465 DB ' bytes ',CR,LFHI 053D CD1C06 CALL PRINT ;PRINT ALLOC VECTOR MSG 0540 5468652041 DB 'The Allocation address of drive ',SPACHI 0561 0E19 MVI C,CDISK 0563 CD0500 CALL BDOS 0566 C641 ADI 'A' 0568 CD7506 CALL HXPRT ;PRINT CURRENT DISK 056B CD1C06 CALL PRINT 056E 3A206973A0 DB ': is',SPACHI 0573 0E1B MVI C,ALLOC ;GET THE DISK ALLOC BLOCK ADDR 0575 CD0500 CALL BDOS 0578 CD5C06 CALL HLHEX ;PRINT ALLOC ADDR 057B 3E48 MVI A,'H' 057D CD7506 CALL HXPRT ;PRINT H 0580 CD8006 CALL CRLFD 0583 CD1C06 CALL PRINT ;PRINT DPB MSG 0586 5468652061 DB 'The address of the disk parameter block is',SPACHI 05B1 0E1F MVI C,DPBADR 05B3 CD0500 CALL BDOS ;GET DPB ADDR 05B6 CD5C06 CALL HLHEX ;PRINT DPB ADDR IN HEX 05B9 3E48 MVI A,'H' 05BB CD7506 CALL HXPRT ;PRINT H 05BE CD8006 CALL CRLFD 05C1 CD1C06 CALL PRINT ;PRINT USER MSG 05C4 5468652070 DB 'The present USER number is',SPACHI 05DF 1EFF MVI E,0FFH 05E1 0E20 MVI C,USRCOD 05E3 CD0500 CALL BDOS ;GET USER # 05E6 CD6106 CALL HYNIB ;PRINT USER # 05E9 3E48 MVI A,'H' 05EB CD7506 CALL HXPRT ;PRINT H 05EE CD8006 CALL CRLFD 05F1 2AA806 LHLD OSTACK ;RESTORE OLD STACK 05F4 F9 SPHL 05F5 C9 RET ; SUBROUTINES 05F6 C5 BINDEC: PUSH B ;SAVE REGISTERS 05F7 D5 PUSH D 05F8 E5 PUSH H 05F9 01F6FF LXI B,0FFF6H 05FC 11FFFF LXI D,0FFFFH 05FF 09 BINDC1: DAD B 0600 13 INX D 0601 DAFF05 JC BINDC1 0604 010A00 LXI B,0000AH 0607 09 DAD B 0608 EB XCHG 0609 7C MOV A,H 060A B5 ORA L 060B C4F605 CNZ BINDEC 060E 7B MOV A,E 060F C630 ADI 030H 0611 5F MOV E,A 0612 0E02 MVI C,CONOUT 0614 5F MOV E,A 0615 CD0500 CALL BDOS ;PRINT VALUE IN DECIMAL 0618 E1 POP H ;RESTORE REGISTERS 0619 D1 POP D 061A C1 POP B 061B C9 RET 061C E3 PRINT: XTHL 061D D5 PUSH D 061E 7E PRIN1: MOV A,M 061F 57 MOV D,A 0620 E67F ANI 07FH 0622 5F MOV E,A 0623 E5 PUSH H 0624 D5 PUSH D 0625 CD3406 CALL PCONS 0628 D1 POP D 0629 E1 POP H 062A 23 INX H 062B 3E80 MVI A,080H 062D A2 ANA D 062E F21E06 JP PRIN1 0631 D1 POP D 0632 E3 XTHL 0633 C9 RET 0634 0E02 PCONS: MVI C,CONOUT 0636 C30500 JMP BDOS 0639 3AB006 WHAT: LDA STOR4 063C FE03 CPI 003H 063E C24506 JNZ WHAT2 0641 6B MOV L,E 0642 2600 WHAT1: MVI H,ZERO 0644 C9 RET 0645 FE02 WHAT2: CPI 002H 0647 C25206 JNZ WHAT3 064A 7B MOV A,E 064B 0F RRC 064C E67F ANI 07FH 064E 6F MOV L,A 064F C34206 JMP WHAT1 0652 D603 WHAT3: SUI 003H 0654 47 MOV B,A 0655 EB XCHG 0656 29 WHAT4: DAD H 0657 05 DCR B 0658 C25606 JNZ WHAT4 065B C9 RET 065C 7C HLHEX: MOV A,H 065D CD6106 CALL HYNIB 0660 7D MOV A,L 0661 4F HYNIB: MOV C,A 0662 0F RRC 0663 0F RRC 0664 0F RRC 0665 0F RRC 0666 CD6A06 CALL LONIB 0669 79 MOV A,C 066A E60F LONIB: ANI 00FH 066C C630 ADI 030H 066E FE3A CPI 03AH 0670 DA7506 JC HXPRT 0673 C607 ADI 007H 0675 C5 HXPRT: PUSH B 0676 D5 PUSH D 0677 E5 PUSH H 0678 5F MOV E,A 0679 CD3406 CALL PCONS 067C E1 POP H 067D D1 POP D 067E C1 POP B 067F C9 RET 0680 CD1C06 CRLFD: CALL PRINT 0683 0D8A DB CR,LFHI 0685 C9 RET ;STORAGE AND STACK LOCATIONS 0686 DS 2 0688 STOR1 DS 2 068A DS 1EH 06A8 OSTACK DS 2 ;OLD STACK 06AA RAMSZ DS 2 06AC ROMSZ DS 2 06AE STOR2 DS 1 06AF STOR3 DS 1 06B0 STOR4 DS 1 06B1 STOR5 DS 1 06B2 DS 41H 06F3 STACK DS 2 ;STACK LOCATION 06F5 STPA DS 2 ;TPA ADDRESS STORAGE 06F7 SBDOS DS 2 ;BDOS ADDRESS STORAGE 06F9 END