|
|
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: 4064 (0xfe0)
Types: TextFile
Notes: Mikados_K
Names: »DEALLO.K«
└─⟦38ff28550⟧ Bits:30004682 Pascal Standard Assembler til MIKADOS
└─⟦this⟧ »DEALLO.K«
;*************************************************************
;* 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
0x000…040 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x040…080 Line {l1=0x3e, l2=»;* PASCAL STANDARD ASSEMBLER PACKAGE. *«, l3=0x3e}
0x080…0c0 Line {l1=0x3e, l2=»;* *«, l3=0x3e}
0x0c0…100 Line {l1=0x3e, l2=»;* (C) 1980 DANSK DATA ELEKTRONIK APS. *«, l3=0x3e}
0x100…140 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x140…143 Line {l1=0x01, l2=»;«, l3=0x01}
0x143…183 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x183…1c3 Line {l1=0x3e, l2=»;* PROCEDURE NAME: DEALLO *«, l3=0x3e}
0x1c3…203 Line {l1=0x3e, l2=»;*************************************************************«, l3=0x3e}
0x203…206 Line {l1=0x01, l2=»;«, l3=0x01}
0x206…218 Line {l1=0x10, l2=»; CT 05-MAY-1980«, l3=0x10}
0x218…21b Line {l1=0x01, l2=»;«, l3=0x01}
0x21b…25b Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x25b…26b Line {l1=0x0e, l2=»; DESCRIPTION:«, l3=0x0e}
0x26b…2a8 Line {l1=0x3b, l2=»; THIS PROCEDURE DEALLOCATES A MEMORY AREA PREVIOUSLY ALLO-«, l3=0x3b}
0x2a8…2ca Line {l1=0x20, l2=»; CATED BY THE ALLOCA PROCEDURE.«, l3=0x20}
0x2ca…30a Line {l1=0x3e, l2=»; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL«, l3=0x3e}
0x30a…326 Line {l1=0x1a, l2=»; SECTION 6.2 FOR DETAILS.«, l3=0x1a}
0x326…329 Line {l1=0x01, l2=»;«, l3=0x01}
0x329…369 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x369…39b Line {l1=0x30, l2=»; STACK CONTENTS ON ENTRY: I I«, l3=0x30}
0x39b…3cd Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x3cd…3ff Line {l1=0x30, l2=»; I RETURN ADR. I«, l3=0x30}
0x3ff…431 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x431…463 Line {l1=0x30, l2=»; I -> STATUS I«, l3=0x30}
0x463…495 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x495…4c7 Line {l1=0x30, l2=»; I ADDRESS I«, l3=0x30}
0x4c7…4f9 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x4f9…52b Line {l1=0x30, l2=»; I I«, l3=0x30}
0x52b…56b Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x56b…591 Line {l1=0x24, l2=»; STACK CONTENTS ON EXIT: EMPTY«, l3=0x24}
0x591…5d1 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x5d1…60d Line {l1=0x3a, l2=»; THE STACK CONTENTS NAMED 'ADDRESS' POINTS TO A DATA AREA«, l3=0x3a}
0x60d…649 Line {l1=0x3a, l2=»; TO BE RELEASED. THE BYTE IMMEDIATELY PRECEDING THIS AREA«, l3=0x3a}
0x649…689 Line {l1=0x3e, l2=»; CONTAINS THE VALUE EE (HEX) IF THE AREA WAS INDEED ALLOCATED«, l3=0x3e}
0x689…6c9 Line {l1=0x3e, l2=»; USING THE ALLOCA PROCEDURE. THIS IS THE SO-CALLED FLAG BYTE.«, l3=0x3e}
0x6c9…708 Line {l1=0x3d, l2=»; THE TWO BYTES PRECEDING THE FLAG BYTE CONTAIN THE LENGTH OF«, l3=0x3d}
0x708…742 Line {l1=0x38, l2=»; THE AREA. IT IS THE ADDRESS OF THESE TWO BYTES THAT IS«, l3=0x38}
0x742…765 Line {l1=0x21, l2=»; PASSED TO THE DELOC SUBROUTINE.«, l3=0x21}
0x765…7a5 Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x7a5…7a8 Line {l1=0x01, l2=» «, l3=0x01}
0x7a8…7b5 Line {l1=0x0b, l2=» SKIP«, l3=0x0b}
0x7b5…7bf Line {l1=0x08, l2=»DEALLO::«, l3=0x08}
0x7bf…7c2 Line {l1=0x01, l2=» «, l3=0x01}
0x7c2…7c5 Line {l1=0x01, l2=»;«, l3=0x01}
0x7c5…7d3 Line {l1=0x0c, l2=»;GET ADDRESS«, l3=0x0c}
0x7d3…7d6 Line {l1=0x01, l2=»;«, l3=0x01}
0x7d6…801 Line {l1=0x29, l2=» POP B ;BC=RETURN ADDRESS«, l3=0x29}
0x801…825 Line {l1=0x22, l2=» POP D ;DE->STATUS«, l3=0x22}
0x825…849 Line {l1=0x22, l2=» POP H ;HL=ADDRESS«, l3=0x22}
0x849…85b Line {l1=0x10, l2=» PUSH B«, l3=0x10}
0x85b…86d Line {l1=0x10, l2=» PUSH D«, l3=0x10}
0x86d…8a5 Line {l1=0x36, l2=» ;THE STACK NOW LOOKS LIKE THIS:«, l3=0x36}
0x8a5…8df Line {l1=0x38, l2=» ; I I«, l3=0x38}
0x8df…919 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x919…953 Line {l1=0x38, l2=» ; I -> STATUS I«, l3=0x38}
0x953…98d Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x98d…9c7 Line {l1=0x38, l2=» ; I RET. ADR. I«, l3=0x38}
0x9c7…a01 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0xa01…a3b Line {l1=0x38, l2=» ; I I«, l3=0x38}
0xa3b…a3e Line {l1=0x01, l2=» «, l3=0x01}
0xa3e…a41 Line {l1=0x01, l2=»;«, l3=0x01}
0xa41…a52 Line {l1=0x0f, l2=»;TEST FLAG BYTE«, l3=0x0f}
0xa52…a55 Line {l1=0x01, l2=»;«, l3=0x01}
0xa55…a67 Line {l1=0x10, l2=» DCX H«, l3=0x10}
0xa67…a8d Line {l1=0x24, l2=» MOV A,M ;A:=FLAG BYTE«, l3=0x24}
0xa8d…ac4 Line {l1=0x35, l2=» CPI 0EE ;WAS AREA ALLOCATED BY ALLOCA?«, l3=0x35}
0xac4…ae1 Line {l1=0x1b, l2=» JZ NOERR ;YES«, l3=0x1b}
0xae1…b13 Line {l1=0x30, l2=» LXI H,1 ;NO, SET ERROR CODE IN HL«, l3=0x30}
0xb13…b27 Line {l1=0x12, l2=» JMP FIN«, l3=0x12}
0xb27…b50 Line {l1=0x27, l2=»NOERR: MVI M,0 ;FLAG BYTE:=ZERO«, l3=0x27}
0xb50…b53 Line {l1=0x01, l2=» «, l3=0x01}
0xb53…b56 Line {l1=0x01, l2=»;«, l3=0x01}
0xb56…b6b Line {l1=0x13, l2=»;GET LENGTH OF AREA«, l3=0x13}
0xb6b…b6e Line {l1=0x01, l2=»;«, l3=0x01}
0xb6e…b80 Line {l1=0x10, l2=» DCX H«, l3=0x10}
0xb80…b94 Line {l1=0x12, l2=» MOV D,M«, l3=0x12}
0xb94…ba6 Line {l1=0x10, l2=» DCX H«, l3=0x10}
0xba6…bba Line {l1=0x12, l2=» MOV E,M«, l3=0x12}
0xbba…beb Line {l1=0x2f, l2=» XCHG ;DE->AREA TO BE RELEASED«, l3=0x2f}
0xbeb…c16 Line {l1=0x29, l2=» ;HL=LENGTH OF AREA«, l3=0x29}
0xc16…c19 Line {l1=0x01, l2=» «, l3=0x01}
0xc19…c1c Line {l1=0x01, l2=»;«, l3=0x01}
0xc1c…c2a Line {l1=0x0c, l2=»;DEALLOCATE!«, l3=0x0c}
0xc2a…c2d Line {l1=0x01, l2=»;«, l3=0x01}
0xc2d…c43 Line {l1=0x14, l2=» CALL DELOC«, l3=0x14}
0xc43…c46 Line {l1=0x01, l2=» «, l3=0x01}
0xc46…c49 Line {l1=0x01, l2=»;«, l3=0x01}
0xc49…c68 Line {l1=0x1d, l2=»;HL NOW CONTAINS STATUS VALUE«, l3=0x1d}
0xc68…c6b Line {l1=0x01, l2=»;«, l3=0x01}
0xc6b…c7d Line {l1=0x10, l2=»FIN: POP D«, l3=0x10}
0xc7d…ca1 Line {l1=0x22, l2=» XCHG ;HL->STATUS«, l3=0x22}
0xca1…cca Line {l1=0x27, l2=» ;DE=STATUS VALUE«, l3=0x27}
0xcca…ce9 Line {l1=0x1d, l2=» MOV M,E ;STORE«, l3=0x1d}
0xce9…d0b Line {l1=0x20, l2=» INX H ; STATUS«, l3=0x20}
0xd0b…d2e Line {l1=0x21, l2=» MOV M,D ; VALUE«, l3=0x21}
0xd2e…d31 Line {l1=0x01, l2=» «, l3=0x01}
0xd31…d3d Line {l1=0x0a, l2=» RET«, l3=0x0a}
0xd3d…d40 Line {l1=0x01, l2=» «, l3=0x01}
0xd40…d4c Line {l1=0x0a, l2=» END«, l3=0x0a}
0xd4c…d60 00 00 00 05 09 08 01 0b 00 09 73 23 72 c3 09 04 0a 02 46 02 ┆ s#r F ┆
0xd60…d80 04 04 08 3e 20 32 04 05 0b 32 00 00 00 05 02 08 3a 02 05 0b 34 00 00 00 05 02 08 21 02 05 0b 35 ┆ > 2 2 : 4 ! 5┆
0xd80…da0 00 00 00 05 04 08 fe 2a cc 04 05 0b 1b 00 00 00 05 02 08 3a 02 05 0b 2e 00 0f 00 05 03 08 a7 ca ┆ * : . ┆
0xda0…dc0 03 04 0a 02 72 02 04 02 08 2a 02 05 0b 0a 00 00 00 05 05 08 23 7c b5 ca 05 04 0a 02 5c 02 04 02 ┆ r * #ø Ø ┆
0xdc0…de0 08 21 02 05 0b 36 00 00 00 05 02 08 cd 02 05 0b 1b 00 00 00 05 02 08 11 02 05 0b 2e 00 10 00 05 ┆ ! 6 . ┆
0xde0…e00 08 08 eb 7e 23 5e 23 56 cd 08 05 0b 37 00 00 00 05 02 08 22 02 05 0b 0a 00 00 00 05 03 08 eb 21 ┆ ü#^#V 7 " !┆
0xe00…e20 03 05 0b 38 00 00 00 05 02 08 cd 02 05 0b 39 00 00 00 05 02 08 21 02 05 0b 2e 00 00 00 05 03 08 ┆ 8 9 ! . ┆
0xe20…e40 e5 21 03 05 0b 2a 00 00 00 05 03 08 e5 cd 03 05 0b 2f 00 00 00 05 03 08 a7 c4 03 05 0b 22 00 00 ┆ ! * / " ┆
0xe40…e60 00 05 02 08 11 02 05 0b 2e 00 00 00 05 05 08 1a fe 05 ca 05 04 0a 02 8f 02 04 04 08 fe 04 c2 04 ┆ . ┆
0xe60…e80 04 0a 02 06 03 04 03 08 13 cd 03 05 0b 3a 00 00 00 05 03 08 a7 ca 03 04 0a 02 bc 02 04 03 08 3d ┆ : =┆
0xe80…ea0 ca 03 04 0a 02 a1 02 04 02 08 21 02 05 0b 3b 00 00 00 05 02 08 cd 02 05 0b 1b 00 00 00 05 05 08 ┆ ! ; ┆
0xea0…ec0 e5 06 08 cd 05 05 0b 16 00 00 00 05 06 08 11 05 00 19 11 06 05 0b 2b 00 00 00 05 04 08 06 02 cd ┆ + ┆
0xec0…ee0 04 05 0b 16 00 00 00 05 07 08 d1 21 12 00 19 22 07 05 0b 0e 00 00 00 05 03 08 eb 3a 03 05 0b 2e ┆ ! " : .┆
0xee0…f00 00 00 00 05 04 08 fe 05 ca 04 04 0a 02 72 02 04 0a 08 e5 01 08 00 09 7e e6 01 ca 0a 04 0a 02 e1 ┆ r ü ┆
0xf00…f20 02 04 03 08 d1 21 03 05 0b 3c 00 00 00 05 04 08 06 08 cd 04 05 0b 16 00 00 00 05 02 08 21 02 05 ┆ ! < ! ┆
0xf20…f40 0b 3d 00 00 00 05 02 08 cd 02 05 0b 29 00 00 00 05 02 08 c3 02 04 0a 02 72 02 04 02 08 3a 02 05 ┆ = ) r : ┆
0xf40…f60 0b 2e 00 0c 00 05 06 08 fe 10 3e 05 c2 06 04 0a 02 ed 02 04 06 08 3e 09 86 77 21 06 05 0b 2e 00 ┆ . > > w! . ┆
0xf60…f80 09 00 05 07 08 7e 23 5e 23 56 cd 07 05 0b 37 00 00 00 05 0b 08 eb e1 01 0d 00 09 73 23 72 c3 0b ┆ ü#^#V 7 s#r ┆
0xf80…fa0 04 0a 02 72 02 04 02 08 21 02 05 0b 2a 00 00 00 05 03 08 e5 cd 03 05 0b 3e 00 00 00 05 02 08 3a ┆ r ! * > :┆
0xfa0…fc0 02 05 0b 31 00 00 00 05 02 08 2a 02 05 0b 2c 00 00 00 05 03 08 eb 2a 03 05 0b 31 00 01 00 05 02 ┆ 1 * , * 1 ┆
0xfc0…fe0 08 cd 02 05 0b 3f 00 00 00 05 02 08 22 02 05 0b 2c 00 00 00 05 02 08 3a 02 05 0b 32 00 00 00 63 ┆ ? " , : 2 c┆