mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
268 lines
4.5 KiB
268 lines
4.5 KiB
;
|
|
|
|
TITLE ZMAP.Z80 - 09/29/88 - ZMD System MAP Utility
|
|
; Copyrighted (c) 1988
|
|
; Robert W. Kramer III
|
|
|
|
PAGE
|
|
;- -;
|
|
; Update History ;
|
|
; ;
|
|
; Date Release Comments ;
|
|
; -------- ------- ---------------------------------------------- ;
|
|
; ;
|
|
; 09/29/88 v1.50 - Initial release ;
|
|
;- -;
|
|
|
|
;-------------------------------------------------------------------------;
|
|
; EXTERNAL Declarations: |
|
|
;-------------------------------------------------------------------------;
|
|
|
|
|
|
EXTRN EXIT,ILPRTB,OLDDRV,OLDUSR,PRINTV,RECAR1,STACK,TYPE
|
|
EXTRN KIND,CATADR,SHONM4,WHLCHK,DECOUT
|
|
|
|
;
|
|
;-------------------------------------------------------------------------;
|
|
; Program Starts Here |
|
|
;-------------------------------------------------------------------------;
|
|
|
|
|
|
.Z80
|
|
ASEG
|
|
ORG 100H ; Program starts
|
|
JP BEGIN ; Jump around configuration table
|
|
INCLUDE ZMDHDR.Z80 ; Include the ZMD header overlay
|
|
.REQUEST ZMDSUBS ; Include the ZMD subroutines
|
|
|
|
;
|
|
;
|
|
; Save CP/M stack, initialize new one for this program
|
|
;
|
|
BEGIN: LD (STACK),SP ; Save return address to CCP
|
|
LD SP,STACK ; Initialize new one for this program
|
|
|
|
;
|
|
; Save current drive/user
|
|
;
|
|
LD A,255 ; Get current user
|
|
CALL RECAR1
|
|
LD (OLDUSR),A ; Store it
|
|
LD C,CURDRV ; Get current drive
|
|
CALL BDOS
|
|
LD (OLDDRV),A ; Store it
|
|
|
|
;
|
|
;
|
|
; Display program name and version
|
|
;
|
|
BEGIN1: LD HL,MAPNAM ; Point to name of this program
|
|
CALL PRINTV ; Display it
|
|
|
|
LD A,(ASKAREA)
|
|
OR A
|
|
JP Z,NOTDEF ; Upload areas not enabled, Abort
|
|
|
|
CALL WHLCHK
|
|
JP Z,BEGIN2
|
|
LD A,1
|
|
LD (SPECIAL),A
|
|
|
|
BEGIN2: CALL HBORD
|
|
|
|
LD A,'A'
|
|
LD (KIND),A
|
|
|
|
LD A,(MAXTYP)
|
|
RRA
|
|
PUSH AF
|
|
|
|
LD A,(MAXTYP)
|
|
SUB A,'A'
|
|
RRA
|
|
LD C,A
|
|
|
|
POP AF
|
|
JP NC,NOTODD
|
|
LD A,1
|
|
LD (ISODD),A
|
|
|
|
NOTODD: INC C
|
|
LD A,'A'
|
|
ADD A,C
|
|
LD C,A ; C contains letter of 2nd column descriptors
|
|
|
|
LD A,(MAXTYP)
|
|
SUB A,'@'
|
|
LD B,A ; B contains binary number of descriptors
|
|
|
|
LD DE,DESTBL ; DE contains address to 26 byte table
|
|
LD A,C
|
|
EX AF,AF'
|
|
LD A,'A' ; Initialize first entry
|
|
|
|
SETLP: LD (DE),A
|
|
INC DE
|
|
INC A
|
|
EX AF,AF'
|
|
DJNZ SETLP
|
|
LD A,0
|
|
LD (DE),A ; Stuff terminator for display routines
|
|
|
|
;
|
|
; Main program loop
|
|
;
|
|
LOOP: LD A,(COLM)
|
|
OR A
|
|
JP NZ,DOCOL2
|
|
|
|
CALL ILPRTB
|
|
DB ' | ',0
|
|
JP ATEND
|
|
|
|
DOCOL2: CALL ILPRTB
|
|
DB ' || ',0
|
|
|
|
ATEND: CALL SHOWFD
|
|
CALL SHOWDU
|
|
LD A,(COLM)
|
|
OR A
|
|
JP Z,ATEND1
|
|
CALL ILPRTB
|
|
DB ' |'
|
|
DB CR,LF,0
|
|
XOR A
|
|
JP ATEND2
|
|
|
|
ATEND1: LD A,1
|
|
|
|
ATEND2: LD (COLM),A
|
|
|
|
LD HL,(TBLSAV)
|
|
INC HL
|
|
LD (TBLSAV),HL
|
|
LD A,(HL)
|
|
LD (KIND),A
|
|
OR A
|
|
JP NZ,LOOP
|
|
|
|
LD A,(ISODD)
|
|
OR A
|
|
JP Z,ISDN1
|
|
|
|
ISDONE: CALL ILPRTB
|
|
DB ' || ',0
|
|
LD A,(SPECIAL)
|
|
OR A
|
|
JP Z,IS1
|
|
CALL ILPRTB
|
|
DB ' ',0
|
|
|
|
IS1: CALL ILPRTB
|
|
DB ' |',CR,LF,0
|
|
|
|
ISDN1: CALL HBORD
|
|
CALL ILPRTB
|
|
DB CR,LF
|
|
DB ' Use FOR/NEW to view recent upload description/log listings.'
|
|
DB 0
|
|
JP EXIT
|
|
;
|
|
;
|
|
SHOWDU: LD A,(KIND)
|
|
SUB 'A'
|
|
RLA
|
|
RLA
|
|
LD D,0
|
|
LD E,A
|
|
LD IY,TYPTBL
|
|
ADD IY,DE
|
|
LD A,(IY)
|
|
CALL TYPE
|
|
|
|
LD A,(IY+1)
|
|
CALL SHODU1
|
|
|
|
CALL ILPRTB
|
|
DB ' ',0
|
|
|
|
LD A,(SPECIAL)
|
|
OR A
|
|
RET Z
|
|
|
|
LD A,(IY+2)
|
|
CALL TYPE
|
|
|
|
LD A,(IY+3)
|
|
|
|
SHODU1: CP 10
|
|
PUSH AF
|
|
|
|
LD H,0
|
|
LD L,A
|
|
CALL DECOUT
|
|
CALL ILPRTB
|
|
DB ':',0
|
|
|
|
POP AF
|
|
RET C
|
|
|
|
CALL ILPRTB
|
|
DB ' ',0
|
|
RET
|
|
|
|
;
|
|
;
|
|
SHOWFD: CALL CATADR
|
|
INC DE
|
|
INC DE
|
|
LD B,23
|
|
|
|
SHOFD1: LD A,(DE)
|
|
CALL TYPE
|
|
INC DE
|
|
DJNZ SHOFD1
|
|
CALL ILPRTB
|
|
DB ' ',0
|
|
RET
|
|
|
|
;
|
|
; Show horizontal border for top and bottom
|
|
;
|
|
HBORD: CALL ILPRTB
|
|
DB ' ================================================================',0
|
|
LD A,(SPECIAL)
|
|
OR A
|
|
JP Z,HBORD1
|
|
CALL ILPRTB
|
|
DB '==========',0
|
|
|
|
HBORD1: CALL ILPRTB
|
|
DB CR,LF,0
|
|
RET
|
|
|
|
NOTDEF: CALL ILPRTB
|
|
DB CR,LF
|
|
DB 'ZMD Upload Routing feature not enabled, ',0
|
|
LD HL,MAPNAM
|
|
CALL SHONM4
|
|
CALL ILPRTB
|
|
DB 'aborting...',0
|
|
JP EXIT
|
|
;
|
|
; These next are dummy routines to satisfy ZMDSUBS external requests.
|
|
; They do nothing, but leave them alone.
|
|
;
|
|
DONE:: JP EXIT ; Exit routine can take care of us
|
|
TIME:: RET
|
|
|
|
TBLSAV: DW DESTBL
|
|
DESTBL: DB 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
|
|
ISODD: DB 0
|
|
COUNT: DB 0
|
|
COLM: DB 0
|
|
SPECIAL:DB 0
|
|
|
|
|
|
END
|
|
|