home *** CD-ROM | disk | FTP | other *** search
- ;***********************************************************************
- ; MICROCOSM I/O MAP DISPLAY PROGRAM VERSION 1.1 (C) 1979
- ;***********************************************************************
- ORG 00100H
- ;
- ;
- ;
- TRUE EQU 0FFFFH ;DEFINE TRUE
- FALSE EQU NOT TRUE ;DEFINE FALSE
- TARBEL EQU FALSE ;DEFINE TARBELL DISK CONTROLLER
-
- BDOS EQU 5 ;BDOS ENTRY
- CHRF EQU 2 ;CP/M PRINT CHARACTER FUNCTION
- PRNF EQU 9 ;CP/M PRINT CHARCTER STRING FUNCTION
- CR EQU 00DH ;CARRIAGE-RETURN CHARACTER
- LF EQU 00AH ;LINE-FEED CHARACTER
- ;
- ;
- ;
- MAP: LXI H,0 ;SET-UP STACK
- DAD SP ;ENTRY STACK POINTER FROM CP/M CCP
- SHLD OLDSP ;SAVE IT
- LXI SP,STACK ;SET STACK TO LOCAL STACK AREA
- CALL CRLF ;KEEP IT NEAT
- MVI C,PRNF ;OUTPUT "PORT LOCATION"
- LXI D,PRTMSG
- CALL BDOS
- MVI B,1 ;"ITEMS TO A LINE" COUNTER
- MVI L,0 ;POINT TO PORT 00
- JMP PRINT
- PORT: IN 000H ;GET IT
- MOV C,A ;SAVE IN C REG.
- CPI 0FFH ;INACTIVE PORT?
- JZ INACT ;PRINT ".", IF INACTIVE
- CALL HEXO1 ;PRINT PORT CONTENT
- JMP NEXT ;TRY NEXT PORT
- INACT: MVI A,' ' ;OUTPUT A SPACE CHARACTER
- CALL PCHAR
- MVI A,'.' ;OUTPUT A "." CHARACTER
- CALL PCHAR
- NEXT: INR L ;BUMP FOR NEXT PORT
- JZ QUIT ;CONTINUE UNTIL LAST PORT
- PRINT: DCR B ;COUNT ITEMS TO A LINE
- JNZ NLINE ;SKIP IF NOT A NEW LINE
- MVI B,16 ;16 ITEMS TO A LINE
- CALL CRLF
- CALL HEXO ;OUTPUT NEXT PORT ADDRESS
- NLINE: MVI A,' ' ;OUTPUT A SPACE CHARACTER
- CALL PCHAR
- MOV A,L ;GET PORT NUMBER
-
- IF TARBEL
- CPI 0FCH ;TARBELL DISK "WAIT" PORT?
- JZ INACT ;SKIP IF SO
- ENDIF
-
- STA PORT+1 ;MODIFY PORT NUMBER
- JMP PORT ;DO NEXT PORT
- QUIT: CALL CRLF ;KEEP IT NEAT FOR RETURN TO CP/M
- LHLD OLDSP ;GET OLD STACK POINTER
- SPHL ;RESTORE IT
- RET ;STACK POINTER CONTAINS CCP'S STACK LOCATION
- ;
- ;
- ;
- HEXO: MOV C,L ;GET PORT ADDRESS
- HEXO1: MOV A,C ;GET BYTE TO BE CONVERTED
- RAR ! RAR ! RAR ! RAR ;ROTATE UPPER NIBBLE
- CALL HEXO2 ;OUTPUT UPPER NIBBLE
- MOV A,C
- HEXO2: ANI 00FH ;MASK UPPER NIBBLE
- CPI 10 ;TEST IF >10
- JC HEXO3 ;SKIP IF <10
- ADI 7 ;ADJUST ASCII
- HEXO3: ADI 030H ;ADD ASCII BIAS
- PCHAR: PUSH H ! PUSH D ! PUSH B ! PUSH PSW
- MVI C,CHRF ;DO CP/M PRINT CHARACTER FUNCTION
- MOV E,A ;CHARACTER TO E REG.
- CALL BDOS ;LET CP/M DO THE WORK
- POP PSW ! POP B ! POP D ! POP H
- RET
- ;
- ;
- ;
- CRLF: MVI A,CR ;PRINT "CARRIAGE-RETURN"
- CALL PCHAR
- MVI A,LF ;PRINT "LINE-FEED"
- CALL PCHAR
- RET
- ;
- ;
- ;
- PRTMSG DB ' 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F$'
- ;
- ;
- ;
- OLDSP DS 2 ;ENTRY STACK POINTER VALUE FROM CP/M CCP
- DS 16 ;RESERVE 8 LEVEL STACK
- STACK EQU $
- ;
- ;
- ;
- END
- LF