|
|
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: »WRIBAK.K«
└─⟦33b8385fd⟧ Bits:30009009 PSAP1
└─⟦this⟧ »WRIBAK.K«
└─⟦38ff28550⟧ Bits:30004682 Pascal Standard Assembler til MIKADOS
└─⟦this⟧ »WRIBAK.K«
;*************************************************************
;* PASCAL STANDARD ASSEMBLER PACKAGE. *
;* *
;* (C) 1980 DANSK DATA ELEKTRONIK APS. *
;*************************************************************
;
;*************************************************************
;* PROCEDURE NAME: WRIBAK *
;*************************************************************
;
; CT 07-MAY-1980
;
;=============================================================
; DESCRIPTION:
; THIS PURCEDURE IS USED TO WRITE A SEQUENTIAL MIKADOS FILE
; BACKWARDS.
; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL
; SECTION 8.3 FOR DETAILS.
;
;-------------------------------------------------------------
; STACK CONTENTS ON ENTRY: I I
; I---------------I
; I RETURN ADR. I
; I---------------I
; I -> CONTENTS I
; I---------------I
; I -> FILEID I
; I---------------I
; I I
;-------------------------------------------------------------
; STACK CONTENTS ON EXIT: EMPTY
;=============================================================
SKIP
SYMB
OFFSET:EQU 8C ;THIS IS THE OFFSET FROM FILEID TO
; THE DATA CONTROL BLOCK
WRIBAK::
;
;'SHUFFLE' THE STACK SO THAT IT MEETS THE NEED OF THE WRITB
;SUBROUTINE
;
POP B ;BC=RETURN ADDRESS
POP D ;DE->CONTENTS
POP H ;HL->FILEID
PUSH B
PUSH D
LXI B,OFFSET;COMPUTE THE ADDRESS OF THE
DAD B ; DATA CONTROL BLOCK
PUSH H ;HL->DCB
;THE STACK NOW LOOKS LIKE THIS:
; I I
; I---------------I
; I -> DCB I
; I---------------I
; I -> CONTENTS I
; I---------------I
; I RETURN ADR. I
; I---------------I
; I I
;
;CLEAR THE END-OF-FILE FLAG (BIT 2 OF THE DFLAG FIELD OF THE
;DCB). IT MAY OF COURSE NOT HAVE BEEN SET, BUT NEVER MIND
;THAT!
;
LXI B,DFLAG
DAD B ;HL->DCB.DFLAG
MOV A,M ;A:=DCB.DFLAG
ANI 0FB ;CLEAR BIT 2
MOV M,A
;
;WRITE THE RECORD!
;
CALL WRITB
;
;REG. A NOW CONTAINS A POSSIBLE ERROR CODE
;
STA IORSLT ;SET IORESULT
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: WRIBAK *«, 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 07-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 PURCEDURE IS USED TO WRITE A SEQUENTIAL MIKADOS FILE«, l3=0x3b}
0x2a8…2b6 Line {l1=0x0c, l2=»; BACKWARDS.«, l3=0x0c}
0x2b6…2f6 Line {l1=0x3e, l2=»; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL«, l3=0x3e}
0x2f6…312 Line {l1=0x1a, l2=»; SECTION 8.3 FOR DETAILS.«, l3=0x1a}
0x312…315 Line {l1=0x01, l2=»;«, l3=0x01}
0x315…355 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x355…387 Line {l1=0x30, l2=»; STACK CONTENTS ON ENTRY: I I«, l3=0x30}
0x387…3b9 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x3b9…3eb Line {l1=0x30, l2=»; I RETURN ADR. I«, l3=0x30}
0x3eb…41d Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x41d…44f Line {l1=0x30, l2=»; I -> CONTENTS I«, l3=0x30}
0x44f…481 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x481…4b3 Line {l1=0x30, l2=»; I -> FILEID I«, l3=0x30}
0x4b3…4e5 Line {l1=0x30, l2=»; I---------------I«, l3=0x30}
0x4e5…517 Line {l1=0x30, l2=»; I I«, l3=0x30}
0x517…557 Line {l1=0x3e, l2=»;-------------------------------------------------------------«, l3=0x3e}
0x557…57d Line {l1=0x24, l2=»; STACK CONTENTS ON EXIT: EMPTY«, l3=0x24}
0x57d…5bd Line {l1=0x3e, l2=»;=============================================================«, l3=0x3e}
0x5bd…5c0 Line {l1=0x01, l2=» «, l3=0x01}
0x5c0…5cd Line {l1=0x0b, l2=» SKIP«, l3=0x0b}
0x5cd…5da Line {l1=0x0b, l2=» SYMB«, l3=0x0b}
0x5da…5dd Line {l1=0x01, l2=» «, l3=0x01}
0x5dd…618 Line {l1=0x39, l2=»OFFSET:EQU 8C ;THIS IS THE OFFSET FROM FILEID TO«, l3=0x39}
0x618…64b Line {l1=0x31, l2=» ; THE DATA CONTROL BLOCK«, l3=0x31}
0x64b…64e Line {l1=0x01, l2=» «, l3=0x01}
0x64e…658 Line {l1=0x08, l2=»WRIBAK::«, l3=0x08}
0x658…65b Line {l1=0x01, l2=» «, l3=0x01}
0x65b…65e Line {l1=0x01, l2=»;«, l3=0x01}
0x65e…69b Line {l1=0x3b, l2=»;'SHUFFLE' THE STACK SO THAT IT MEETS THE NEED OF THE WRITB«, l3=0x3b}
0x69b…6a8 Line {l1=0x0b, l2=»;SUBROUTINE«, l3=0x0b}
0x6a8…6ab Line {l1=0x01, l2=»;«, l3=0x01}
0x6ab…6d6 Line {l1=0x29, l2=» POP B ;BC=RETURN ADDRESS«, l3=0x29}
0x6d6…6fc Line {l1=0x24, l2=» POP D ;DE->CONTENTS«, l3=0x24}
0x6fc…720 Line {l1=0x22, l2=» POP H ;HL->FILEID«, l3=0x22}
0x720…732 Line {l1=0x10, l2=» PUSH B«, l3=0x10}
0x732…744 Line {l1=0x10, l2=» PUSH D«, l3=0x10}
0x744…778 Line {l1=0x32, l2=» LXI B,OFFSET;COMPUTE THE ADDRESS OF THE«, l3=0x32}
0x778…7a7 Line {l1=0x2d, l2=» DAD B ; DATA CONTROL BLOCK«, l3=0x2d}
0x7a7…7c8 Line {l1=0x1f, l2=» PUSH H ;HL->DCB«, l3=0x1f}
0x7c8…800 Line {l1=0x36, l2=» ;THE STACK NOW LOOKS LIKE THIS:«, l3=0x36}
0x800…83a Line {l1=0x38, l2=» ; I I«, l3=0x38}
0x83a…874 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x874…8ae Line {l1=0x38, l2=» ; I -> DCB I«, l3=0x38}
0x8ae…8e8 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x8e8…922 Line {l1=0x38, l2=» ; I -> CONTENTS I«, l3=0x38}
0x922…95c Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x95c…996 Line {l1=0x38, l2=» ; I RETURN ADR. I«, l3=0x38}
0x996…9d0 Line {l1=0x38, l2=» ; I---------------I«, l3=0x38}
0x9d0…a0a Line {l1=0x38, l2=» ; I I«, l3=0x38}
0xa0a…a0d Line {l1=0x01, l2=» «, l3=0x01}
0xa0d…a10 Line {l1=0x01, l2=»;«, l3=0x01}
0xa10…a4e Line {l1=0x3c, l2=»;CLEAR THE END-OF-FILE FLAG (BIT 2 OF THE DFLAG FIELD OF THE«, l3=0x3c}
0xa4e…a89 Line {l1=0x39, l2=»;DCB). IT MAY OF COURSE NOT HAVE BEEN SET, BUT NEVER MIND«, l3=0x39}
0xa89…a91 Line {l1=0x06, l2=»;THAT!«, l3=0x06}
0xa91…a94 Line {l1=0x01, l2=»;«, l3=0x01}
0xa94…aac Line {l1=0x16, l2=» LXI B,DFLAG«, l3=0x16}
0xaac…ad3 Line {l1=0x25, l2=» DAD B ;HL->DCB.DFLAG«, l3=0x25}
0xad3…af9 Line {l1=0x24, l2=» MOV A,M ;A:=DCB.DFLAG«, l3=0x24}
0xaf9…b1e Line {l1=0x23, l2=» ANI 0FB ;CLEAR BIT 2«, l3=0x23}
0xb1e…b32 Line {l1=0x12, l2=» MOV M,A«, l3=0x12}
0xb32…b3b Line {l1=0x07, l2=» «, l3=0x07}
0xb3b…b3e Line {l1=0x01, l2=»;«, l3=0x01}
0xb3e…b52 Line {l1=0x12, l2=»;WRITE THE RECORD!«, l3=0x12}
0xb52…b55 Line {l1=0x01, l2=»;«, l3=0x01}
0xb55…b6b Line {l1=0x14, l2=» CALL WRITB«, l3=0x14}
0xb6b…b6e Line {l1=0x01, l2=» «, l3=0x01}
0xb6e…b71 Line {l1=0x01, l2=»;«, l3=0x01}
0xb71…b9d Line {l1=0x2a, l2=»;REG. A NOW CONTAINS A POSSIBLE ERROR CODE«, l3=0x2a}
0xb9d…ba0 Line {l1=0x01, l2=»;«, l3=0x01}
0xba0…bc6 Line {l1=0x24, l2=» STA IORSLT ;SET IORESULT«, l3=0x24}
0xbc6…bc9 Line {l1=0x01, l2=» «, l3=0x01}
0xbc9…bd5 Line {l1=0x0a, l2=» RET«, l3=0x0a}
0xbd5…bd8 Line {l1=0x01, l2=» «, l3=0x01}
0xbd8…be4 Line {l1=0x0a, l2=» END«, l3=0x0a}
0xbe4…c00 00 00 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆ cccccccccccccccccccccccccc┆
0xc00…c20 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 ┆cccccccccccccccccccccccccccccccc┆
[…0xe…]
>;*************************************************************>>;* PASCAL STANDARD ASSEMBLER PACKAGE. *>>;* *>>;* (C) 1980 DANSK DATA ELEKTRONIK APS. *>>;*************************************************************>▶01◀;▶01◀>;*************************************************************>>;* PROCEDURE NAME: WRIBAK *>>;*************************************************************>▶01◀;▶01◀▶10◀; CT 07-MAY-1980▶10◀▶01◀;▶01◀>;=============================================================>▶0e◀; DESCRIPTION:▶0e◀;; THIS PURCEDURE IS USED TO WRITE A SEQUENTIAL MIKADOS FILE;\f
; BACKWARDS.\f
>; PLEASE REFER TO THE PASCAL STANDARD ASSEMBLER PACKAGE MANUAL>▶1a◀; SECTION 8.3 FOR DETAILS.▶1a◀▶01◀;▶01◀>;------------------------------------------------------------->0; STACK CONTENTS ON ENTRY: I I00; I---------------I00; I RETURN ADR. I00; I---------------I00; I -> CONTENTS I00; I---------------I00; I -> FILEID I00; I---------------I00; I I0>;------------------------------------------------------------->$; STACK CONTENTS ON EXIT: EMPTY$>;=============================================================>▶01◀ ▶01◀▶0b◀ SKIP▶0b◀▶0b◀ SYMB▶0b◀▶01◀ ▶01◀9OFFSET:EQU 8C ;THIS IS THE OFFSET FROM FILEID TO91 ; THE DATA CONTROL BLOCK1▶01◀ ▶01◀▶08◀WRIBAK::▶08◀▶01◀ ▶01◀▶01◀;▶01◀;;'SHUFFLE' THE STACK SO THAT IT MEETS THE NEED OF THE WRITB;▶0b◀;SUBROUTINE▶0b◀▶01◀;▶01◀) POP B ;BC=RETURN ADDRESS)$ POP D ;DE->CONTENTS$" POP H ;HL->FILEID"▶10◀ PUSH B▶10◀▶10◀ PUSH D▶10◀2 LXI B,OFFSET;COMPUTE THE ADDRESS OF THE2- DAD B ; DATA CONTROL BLOCK-▶1f◀ PUSH H ;HL->DCB▶1f◀6 ;THE STACK NOW LOOKS LIKE THIS:68 ; I I88 ; I---------------I88 ; I -> DCB I88 ; I---------------I88 ; I -> CONTENTS I88 ; I---------------I88 ; I RETURN ADR. I88 ; I---------------I88 ; I I8▶01◀ ▶01◀▶01◀;▶01◀<;CLEAR THE END-OF-FILE FLAG (BIT 2 OF THE DFLAG FIELD OF THE<9;DCB). IT MAY OF COURSE NOT HAVE BEEN SET, BUT NEVER MIND9▶06◀;THAT!▶06◀▶01◀;▶01◀▶16◀ LXI B,DFLAG▶16◀% DAD B ;HL->DCB.DFLAG%$ MOV A,M ;A:=DCB.DFLAG$# ANI 0FB ;CLEAR BIT 2#▶12◀ MOV M,A▶12◀▶07◀ ▶07◀▶01◀;▶01◀▶12◀;WRITE THE RECORD!▶12◀▶01◀;▶01◀▶14◀ CALL WRITB▶14◀▶01◀ ▶01◀▶01◀;▶01◀*;REG. A NOW CONTAINS A POSSIBLE ERROR CODE*▶01◀;▶01◀$ STA IORSLT ;SET IORESULT$▶01◀ ▶01◀
RET
▶01◀ ▶01◀
END
▶00◀▶00◀cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc