DataMuseum.dk

Presents historical artifacts from the history of:

MIKADOS

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about MIKADOS

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦9829c6c04⟧ TextFile

    Length: 4064 (0xfe0)
    Types: TextFile
    Notes: Mikados_K
    Names: »DEALLO.K«

Derivation

└─⟦33b8385fd⟧ Bits:30009009 PSAP1
    └─⟦this⟧ »DEALLO.K« 

Mikados K File

;*************************************************************
;*         PASCAL STANDARD ASSEMBLER PACKAGE.                *
;*                                                           *
;* (C) 1980 DANSK DATA ELEKTRONIK APS.                       *
;*************************************************************
;
;*************************************************************
;* PROCEDURE NAME:      DEALLO                               *
;*************************************************************
;
; CT 05-MAY-1980
;
;=============================================================
; DESCRIPTION:
; THIS PROCEDURE DEALLOCATES A MEMORY AREA PREVIOUSLY ALLO-
; CATED BY THE ALLOCA PROCEDURE.
; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL
; SECTION 6.2 FOR DETAILS.
;
;-------------------------------------------------------------
; STACK CONTENTS ON ENTRY:     I               I
;                              I---------------I
;                              I RETURN ADR.   I
;                              I---------------I
;                              I  -> STATUS    I
;                              I---------------I
;                              I   ADDRESS     I
;                              I---------------I
;                              I               I
;-------------------------------------------------------------
; STACK CONTENTS ON EXIT:      EMPTY
;-------------------------------------------------------------
; THE STACK CONTENTS NAMED 'ADDRESS' POINTS TO A DATA AREA
; TO BE RELEASED. THE BYTE IMMEDIATELY PRECEDING THIS AREA
; CONTAINS THE VALUE EE (HEX) IF THE AREA WAS INDEED ALLOCATED
; USING THE ALLOCA PROCEDURE. THIS IS THE SO-CALLED FLAG BYTE.
; THE TWO BYTES PRECEDING THE FLAG BYTE CONTAIN THE LENGTH OF
; THE AREA. IT IS THE ADDRESS OF THESE TWO BYTES THAT IS
; PASSED TO THE DELOC SUBROUTINE.
;=============================================================
 
       SKIP
DEALLO::
 
;
;GET ADDRESS
;
       POP     B       ;BC=RETURN ADDRESS
       POP     D       ;DE->STATUS
       POP     H       ;HL=ADDRESS
       PUSH    B
       PUSH    D
                       ;THE STACK NOW LOOKS LIKE THIS:
                       ;               I               I
                       ;               I---------------I
                       ;               I  -> STATUS    I
                       ;               I---------------I
                       ;               I  RET. ADR.    I
                       ;               I---------------I
                       ;               I               I
 
;
;TEST FLAG BYTE
;
       DCX     H
       MOV     A,M     ;A:=FLAG BYTE
       CPI     0EE     ;WAS AREA ALLOCATED BY ALLOCA?
       JZ      NOERR   ;YES
       LXI     H,1     ;NO, SET ERROR CODE IN HL
       JMP     FIN
NOERR: MVI     M,0     ;FLAG BYTE:=ZERO
 
;
;GET LENGTH OF AREA
;
       DCX     H
       MOV     D,M
       DCX     H
       MOV     E,M
       XCHG            ;DE->AREA TO BE RELEASED
                       ;HL=LENGTH OF AREA
 
;
;DEALLOCATE!
;
       CALL    DELOC
 
;
;HL NOW CONTAINS STATUS VALUE
;
FIN:   POP     D
       XCHG            ;HL->STATUS
                       ;DE=STATUS VALUE
       MOV     M,E     ;STORE
       INX     H       ;  STATUS
       MOV     M,D     ;    VALUE
 
       RET
 
       END

TextFile

>;*************************************************************>>;*         PASCAL STANDARD ASSEMBLER PACKAGE.                *>>;*                                                           *>>;* (C) 1980 DANSK DATA ELEKTRONIK APS.                       *>>;*************************************************************>▶01◀;▶01◀>;*************************************************************>>;* PROCEDURE NAME:      DEALLO                               *>>;*************************************************************>▶01◀;▶01◀▶10◀; CT 05-MAY-1980▶10◀▶01◀;▶01◀>;=============================================================>▶0e◀; DESCRIPTION:▶0e◀;; THIS PROCEDURE DEALLOCATES A MEMORY AREA PREVIOUSLY ALLO-; ; CATED BY THE ALLOCA PROCEDURE. >; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL>▶1a◀; SECTION 6.2 FOR DETAILS.▶1a◀▶01◀;▶01◀>;------------------------------------------------------------->0; STACK CONTENTS ON ENTRY:     I               I00;                              I---------------I00;                              I RETURN ADR.   I00;                              I---------------I00;                              I  -> STATUS    I00;                              I---------------I00;                              I   ADDRESS     I00;                              I---------------I00;                              I               I0>;------------------------------------------------------------->$; STACK CONTENTS ON EXIT:      EMPTY$>;------------------------------------------------------------->:; THE STACK CONTENTS NAMED 'ADDRESS' POINTS TO A DATA AREA::; TO BE RELEASED. THE BYTE IMMEDIATELY PRECEDING THIS AREA:>; CONTAINS THE VALUE EE (HEX) IF THE AREA WAS INDEED ALLOCATED>>; USING THE ALLOCA PROCEDURE. THIS IS THE SO-CALLED FLAG BYTE.>=; THE TWO BYTES PRECEDING THE FLAG BYTE CONTAIN THE LENGTH OF=8; THE AREA. IT IS THE ADDRESS OF THESE TWO BYTES THAT IS8!; PASSED TO THE DELOC SUBROUTINE.!>;=============================================================>▶01◀ ▶01◀▶0b◀       SKIP▶0b◀▶08◀DEALLO::▶08◀▶01◀ ▶01◀▶01◀;▶01◀\f

;GET ADDRESS\f

▶01◀;▶01◀)       POP     B       ;BC=RETURN ADDRESS)"       POP     D       ;DE->STATUS""       POP     H       ;HL=ADDRESS"▶10◀       PUSH    B▶10◀▶10◀       PUSH    D▶10◀6                       ;THE STACK NOW LOOKS LIKE THIS:68                       ;               I               I88                       ;               I---------------I88                       ;               I  -> STATUS    I88                       ;               I---------------I88                       ;               I  RET. ADR.    I88                       ;               I---------------I88                       ;               I               I8▶01◀ ▶01◀▶01◀;▶01◀▶0f◀;TEST FLAG BYTE▶0f◀▶01◀;▶01◀▶10◀       DCX     H▶10◀$       MOV     A,M     ;A:=FLAG BYTE$5       CPI     0EE     ;WAS AREA ALLOCATED BY ALLOCA?5▶1b◀       JZ      NOERR   ;YES▶1b◀0       LXI     H,1     ;NO, SET ERROR CODE IN HL0▶12◀       JMP     FIN▶12◀'NOERR: MVI     M,0     ;FLAG BYTE:=ZERO'▶01◀ ▶01◀▶01◀;▶01◀▶13◀;GET LENGTH OF AREA▶13◀▶01◀;▶01◀▶10◀       DCX     H▶10◀▶12◀       MOV     D,M▶12◀▶10◀       DCX     H▶10◀▶12◀       MOV     E,M▶12◀/       XCHG            ;DE->AREA TO BE RELEASED/)                       ;HL=LENGTH OF AREA)▶01◀ ▶01◀▶01◀;▶01◀\f

;DEALLOCATE!\f

▶01◀;▶01◀▶14◀       CALL    DELOC▶14◀▶01◀ ▶01◀▶01◀;▶01◀▶1d◀;HL NOW CONTAINS STATUS VALUE▶1d◀▶01◀;▶01◀▶10◀FIN:   POP     D▶10◀"       XCHG            ;HL->STATUS"'                       ;DE=STATUS VALUE'▶1d◀       MOV     M,E     ;STORE▶1d◀        INX     H       ;  STATUS !       MOV     M,D     ;    VALUE!▶01◀ ▶01◀
       RET
▶01◀ ▶01◀
       END
▶00◀▶00◀cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

Full view