|
|
DataMuseum.dkPresents historical artifacts from the history of: MIKADOS |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about MIKADOS Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 3552 (0xde0)
Types: TextFile
Notes: Mikados_K
Names: »WAITNG.K«
└─⟦33b8385fd⟧ Bits:30009009 PSAP1
└─⟦this⟧ »WAITNG.K«
;*************************************************************
;* PASCAL STANDARD ASSEMBLER PACKAGE. *
;* *
;* (C) 1980 DANSK DATA ELEKTRONIK APS. *
;*************************************************************
;
;*************************************************************
;* FUNCTION NAME: WAITNG *
;*************************************************************
;
; CT 07-MAY-1980
;
;=============================================================
; DESCRIPTION:
; THIS FUNCTIONS TESTS IF THERE ARE ANY MESSAGES WAITING ON
; THE MAIN SEMAPHORE OF THE CALLING PROCESS.
; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL
; SECTION 4.3 FOR DETAILS.
;
;-------------------------------------------------------------
; STACK CONTENTS ON ENTRY: I I
; I---------------I
; I RETURN ADR. I
; I---------------I
; I DUMMY ELEMENT I
; I---------------I
; I DUMMY ELEMENT I
; I---------------I
; I DUMMY ELEMENT I
; I---------------I
; I DUMMY ELEMENT I
; I---------------I
; I I
;-------------------------------------------------------------
; STACK CONTENTS ON EXIT: I I
; I---------------I
; I TRUE / FALSE I
; I---------------I
; I I
;=============================================================
SKIP
SYMB
WAITNG::
;
;CLEAN UP ON STACK
;
POP B ;BC:=RETURN ADDRESS
POP D ;REMOVE
POP D ; DUMMY
POP D ; ELEMENT
POP D ; FROM STACK
;
;GET VALUE FIELD OF MAIN SEMAPHORE
;
LHLD RUNN ;HL->PCB OF CALLING PROCESS
LXI D,KOSEM
DAD D ;HL->ADDRESS OF MAIN SEMAPHORE
MOV E,M ;DE->
INX H ; MAIN
MOV D,M ; SEMAPHORE
LDAX D ;A:=VALUE FIELD OF SEMAPHORE
CPI 1 ;ANY MESSAGE WAITING
JZ OK ;YES
;
;NO MESSAGE WAITING, RETURN VALUE:=FALSE
;
LXI D,0 ;DE:=FALSE
PUSH D ;STACK RETURN VALUE
PUSH B ;RESTORE RETURN ADDRESS
RET
;
;MESSAGE WAITING, RETURN VALUE:=TRUE
;
OK: LXI D,1 ;DE:=TRUE
PUSH D ;STACK RETURN VALUE
PUSH B ;RESTORE RETURN ADDRESS
RET
END
>;*************************************************************>>;* PASCAL STANDARD ASSEMBLER PACKAGE. *>>;* *>>;* (C) 1980 DANSK DATA ELEKTRONIK APS. *>>;*************************************************************>▶01◀;▶01◀>;*************************************************************>>;* FUNCTION NAME: WAITNG *>>;*************************************************************>▶01◀;▶01◀▶10◀; CT 07-MAY-1980▶10◀▶01◀;▶01◀>;=============================================================>▶0e◀; DESCRIPTION:▶0e◀;; THIS FUNCTIONS TESTS IF THERE ARE ANY MESSAGES WAITING ON;,; THE MAIN SEMAPHORE OF THE CALLING PROCESS.,>; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL>▶1a◀; SECTION 4.3 FOR DETAILS.▶1a◀▶01◀;▶01◀>;------------------------------------------------------------->0; STACK CONTENTS ON ENTRY: I I00; I---------------I00; I RETURN ADR. I00; I---------------I00; I DUMMY ELEMENT I00; I---------------I00; I DUMMY ELEMENT I00; I---------------I00; I DUMMY ELEMENT I00; I---------------I00; I DUMMY ELEMENT I00; I---------------I00; I I0>;------------------------------------------------------------->0; STACK CONTENTS ON EXIT: I I00; I---------------I00; I TRUE / FALSE I00; I---------------I00; I I0>;=============================================================>▶01◀ ▶01◀▶0b◀ SKIP▶0b◀▶0b◀ SYMB▶0b◀▶01◀ ▶01◀▶08◀WAITNG::▶08◀▶01◀ ▶01◀▶01◀;▶01◀▶12◀;CLEAN UP ON STACK▶12◀▶01◀;▶01◀* POP B ;BC:=RETURN ADDRESS*▶1e◀ POP D ;REMOVE▶1e◀▶1f◀ POP D ; DUMMY▶1f◀# POP D ; ELEMENT#( POP D ; FROM STACK(▶01◀ ▶01◀▶01◀;▶01◀";GET VALUE FIELD OF MAIN SEMAPHORE"▶01◀;▶01◀2 LHLD RUNN ;HL->PCB OF CALLING PROCESS2▶16◀ LXI D,KOSEM▶16◀5 DAD D ;HL->ADDRESS OF MAIN SEMAPHORE5▶1c◀ MOV E,M ;DE->▶1c◀ INX H ; MAIN ( MOV D,M ; SEMAPHORE(3 LDAX D ;A:=VALUE FIELD OF SEMAPHORE3+ CPI 1 ;ANY MESSAGE WAITING+▶1b◀ JZ OK ;YES▶1b◀▶01◀ ▶01◀▶01◀;▶01◀(;NO MESSAGE WAITING, RETURN VALUE:=FALSE(▶01◀;▶01◀! LXI D,0 ;DE:=FALSE!* PUSH D ;STACK RETURN VALUE*. PUSH B ;RESTORE RETURN ADDRESS.
RET
▶01◀ ▶01◀▶01◀;▶01◀$;MESSAGE WAITING, RETURN VALUE:=TRUE$▶01◀;▶01◀ OK: LXI D,1 ;DE:=TRUE * PUSH D ;STACK RETURN VALUE*. PUSH B ;RESTORE RETURN ADDRESS.
RET
▶01◀ ▶01◀
END
▶00◀▶00◀ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc