;*************************************************************;*         PASCAL STANDARD ASSEMBLER PACKAGE.                *;*                                                           *;* (C) 1980 DANSK DATA ELEKTRONIK APS.                       *;*************************************************************;;*************************************************************;* PROCEDURE NAME:      RESERV                               *;*************************************************************;; CT 07-MAY-1980;;=============================================================; DESCRIPTION:; THIS PROCEDURE IS USED TO RESERVE A SYMBOLIC RESOURCE.; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL; SECTION 7.1 FOR DETAILS.;;-------------------------------------------------------------; STACK CONTENTS ON ENTRY:     I               I;                              I---------------I;                              I RETURN ADR.   I;                              I---------------I;                              I -> STATUS     I;                              I---------------I;                              I     WAIT      I;                              I---------------I;                              I   EXCLUSIVE   I;                              I---------------I;                              I -> RESOURCE   I;                              I---------------I;                              I               I;-------------------------------------------------------------; STACK CONTENTS ON EXIT:      EMPTY;=============================================================        SKIPRESERV:: ;;GET PARAMETERS FROM PASCAL AND BUILD PARAMETERS FOR RESRV;       POP     H       ;HL=RETURN ADDRESS       SHLD    RETADR  ;SAVE RETURN ADDRESS       POP     H       ;HL->STATUS       SHLD    STADR   ;SAVE ADDRESS OF STATUS       POP     H       ;HL (BIT 0) = WAIT       MOV     A,L     ;A  (BIT 0) = WAIT       RLC             ;A  (BIT 1) = WAIT       POP     H       ;HL (BIT 0) = EXCLUSIVE       ORA     L       ;A  (BIT 1,0) = WAIT,EXCLUSIVE       MOV     L,A     ;HL (BIT 1,0) = WAIT,EXCLUSIVE       XTHL            ;PUSH SUBPARAMETERS ;HL->RESOURCE(0)       PUSH    H       ;SAVE ADDRESS OF RESOURCE PARAMETER ;;BLANK RESOUR;       MVI     A,#10    ;A:=LENGTH OF FIELD TO BE BLANKED       LXI     H,RESOUR ;HL->FIELD TO BE BLANKED       CALL    E0LIN    ;BLANK IT! ;;MOVE RESOURCE PARAMETER TO RESOUR;       POP     H        ;HL->RESOURCE(0) I.E. THE LENGTH OF                        ;                  THE RESOURCE STRING       MOV     B,M      ;B=LENGTH OF STRING TO BE MOVED       INX     H        ;HL->RESOURCE(1)       XCHG             ;DE->RESOURCE PARAMETER       LXI     H,RESOUR ;HL->DESTINATION STRING       CALL    MOVE     ;MOVE IT! ;;GET THE LAST TWO CHARACTERS OF THE RESOURCE NAME;       LHLD    RESOUR+8 ;HL:=LAST TWO CHARACTERS OF RESOURCE       PUSH    H        ;PUSH LAST TWO CHARACTERS OF RESOURCE       LXI     H,RESOUR ;HL->RESOUR       PUSH    H        ;PUSH ADDRESS OF RESOURCE       CALL    RESRV ;;UPON RETURN FROM RESRV REG. A CONTAINS STATUS VALUE;       LHLD    STADR   ;HL->STATUS       MOV     M,A       INX     H       MVI     M,0     ;STORE STATUS VALUE ;;RETURN;       LHLD    RETADR  ;HL=RETURN ADDRESS       PCHL        SKIP;******* LOCAL DATA ********RETADR:DS      2       ;RETURN ADDRESSSTADR: DS      2       ;ADDRESS OF STATUSRESOUR:DS      #10     ;RESOURCE NAME              END