mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-26 18:04:07 +00:00
Upload
Digital Research
This commit is contained in:
80
MPM OPERATING SYSTEMS/MPM II/MPM II SOURCE/CONTROL/INTER.LIB
Normal file
80
MPM OPERATING SYSTEMS/MPM II/MPM II SOURCE/CONTROL/INTER.LIB
Normal file
@@ -0,0 +1,80 @@
|
||||
; MACRO LIBRARY FOR BASIC INTERSECTION
|
||||
;
|
||||
; GLOBAL DEFINITIONS FOR DEBUG PROCESSING
|
||||
TRUE EQU 0FFFFH ;VALUE OF TRUE
|
||||
FALSE EQU NOT TRUE;VALUE OF FALSE
|
||||
DEBUG SET FALSE ;INITIALLY FALSE
|
||||
BDOS EQU 5 ;ENTRY TO CP/M BDOS
|
||||
RCHAR EQU 1 ;READ CHARACTER FUNCTION
|
||||
WBUFF EQU 9 ;WRITE BUFFER FUNCTION
|
||||
CR EQU 0DH ;CARRIAGE RETURN
|
||||
LF EQU 0AH ;LINE FEED
|
||||
;
|
||||
; INPUT/OUTPUT PORTS FOR LIGHT AND CLOCK
|
||||
LIGHT EQU 00H ;TRAFFIC LIGHT CONTROL
|
||||
CLOCK EQU 03H ;24 HOUR CLOCK (0,1,...,23)
|
||||
;
|
||||
; BIT POSITIONS FOR TRAFFIC LIGHT CONTROL
|
||||
NSBITS EQU 4 ;NORTH SOUUTH BITS
|
||||
EWBITS EQU 0 ;EAST WEST BITS
|
||||
;
|
||||
; CONSTANT VALUES FOR THE LIGHT CONTROL
|
||||
OFF EQU 0 ;TURN LIGHT OFF
|
||||
RED EQU 1 ;VALUE FOR RED LIGHT
|
||||
YELLOW EQU 2 ;VALUE FOR YELLOW LIGHT
|
||||
GREEN EQU 3 ;GREEN LIGHT
|
||||
;
|
||||
SETLITE MACRO DIR,COLOR
|
||||
;; SET LIGHT GIVEN BY "DIR" TO COLOR GIVEN BY "COLOR"
|
||||
IF DEBUG ;;PRINT INFO AT CONSOLE
|
||||
LOCAL SETMSG,PASTMSG
|
||||
MVI C,WBUFF ;;WRITE BUFFER FUNCTION
|
||||
LXI D,SETMSG
|
||||
CALL BDOS ;;WRITE THE TRACE INFO
|
||||
JMP PASTMSG
|
||||
SETMSG: DB CR,LF
|
||||
DB '&DIR CHANGING TO &COLOR$'
|
||||
PASTMSG:
|
||||
EXITM
|
||||
ENDIF
|
||||
MVI A,COLOR SHL DIR&BITS ;;READIED
|
||||
OUT LIGHT ;;SENT IN PROPER BIT POSITION
|
||||
ENDM
|
||||
;
|
||||
TIMER MACRO SECONDS
|
||||
;; CONSTRUCT INLINE TIME-OUT LOOP
|
||||
LOCAL T1,T2,T3 ;;LOOP ENTRIES
|
||||
MVI D,4*SECONDS ;;BASIC LOOP CONTROL
|
||||
T1: MVI B,250 ;;250MSEC *4 = 1 SEC
|
||||
T2: MVI C,182 ;;182*5.5USEC = 1MSEC
|
||||
T3: DCR C ;;1 CY = .5 USEC
|
||||
JNZ T3 ;;+10 CY = 5.5 USEC
|
||||
DCR B ;;COUNT 250,249...
|
||||
JNZ T2 ;;LOOP ON B REGISTER
|
||||
DCR D ;;BASIC LOOP CONTROL
|
||||
JNZ T1 ;;LOOP ON D REGISTER
|
||||
;; ARRIVE HERE WITH APPROXIMATELY "SECONDS"
|
||||
;; TIMEOUT, CONTINUE PROCESSING.
|
||||
ENDM
|
||||
;
|
||||
CLOCK? MACRO LOW,HIGH,IFTRUE
|
||||
;; CHECK FOR REAL-TIME CLOCK GREATER THAN OR
|
||||
;; EQUAL TO "LOW." AND LESS THAN "HIGH."
|
||||
;; CONTINUE AT "IFTRUE" WHEN BETWEEN THESE
|
||||
;; TIMES.
|
||||
LOCAL IFFALSE ;;ALTERNATE TO TRUE CASE
|
||||
IN CLOCK ;;READ REAL-TIME CLOCK
|
||||
IF NOT NUL HIGH ;;CHECK HIGH CLOCK
|
||||
CPI HIGH ;;EQUAL OR GREATER?
|
||||
JNC IFFALSE ;;SKIP TO END IF SO
|
||||
ENDIF
|
||||
CPI LOW ;;LESS THAN LOW VALUE?
|
||||
JNC IFTRUE ;;SKIP TO LABEL IF NOT
|
||||
IFFALSE:
|
||||
ENDM
|
||||
;
|
||||
RETRY MACRO GOLABEL
|
||||
;; CONTINUE EXECUTION AT "GOLABEL"
|
||||
JMP GOLABEL
|
||||
ENDM
|
||||
|
||||
Reference in New Issue
Block a user