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

⟦616459b04⟧ TextFile

    Length: 3008 (0xbc0)
    Types: TextFile
    Notes: Mikados_K
    Names: »PSCIU.K«

Derivation

└─⟦f1b095e24⟧ Bits:30005320 Katalogisering af disketter
    └─⟦this⟧ »PSCIU.K« 

Mikados K File

;DISC SECTOR I/O FOR PASCAL - RM-800104
;
;TYPE BLOCK = PACKED ARRAY(0..255) OF CHAR;
;
;PROCEDURE PSCIU( VAR DISCBUFFER: BLOCK;
;                 DISC, TRACK, SECTOR, IOCODE: INTEGER;
;                 VAR ERRORCODE: INTEGER ); EXTERNAL;
;
;PURPOSE: READS (IOCODE=1) OR WRITES (IOCODE=2) THE SECTOR IDENTIFIED
;         BY THE DISC ADDRESS IN 'TRACK'/'SECTOR' ON THE DISC IDENTI-
;         FIED BY 'DISC' INTO/FROM 'DISCBUFFER'
;         THE RESULTING MIKADOS DISC DRIVER ERROR CODE IS RETURNED
;         IN 'ERRORCODE' (ZERO IMPLIES NO ERROR).
;
       SYMB
;
;
PSCIU::POP     B       ;RETURN ADDRESS TO PASCAL INTERPRETER
;
       POP     H       ;POINTER TO ERROR CODE (DEFINED AS 'VAR')
       SHLD    ERRPT
       POP     H       ;I/O CODE
       MOV     A,L
       STA     IOKOD
       POP     H       ;SECTOR NUMBER
       MOV     A,L
       STA     DKB+SEKT1+2  ;SAVE IN DKB
       POP     H       ;TRACK NUMBER
       SHLD    DKB+SEKT1
       POP     D       ;DISC NUMBER
       POP     H       ;BUFFER POINTER
       SHLD    DKB+NÆPST
;
       PUSH    B       ;RETURN ADDRESS TO PASCAL INTERPRETER
;
       MOV     A,E     ;COMPUTE DISC IDENTIFICATION POINTER
       ADI     '0'
       MOV     D,A
       MVI     E,'P'
       LXI     H,DKB   ; AND STORE IN THE DKB
       CALL    PFIND
       ANA     A
       JNZ     ERRUD   ;JUMP IF ILLEGAL DISC NUMBER
;
       MVI     A,1
       STA     DKB+SANT  ;ONE SECTOR TO BE READ/WRITTEN
       LDA     IOKOD   ;TURN ON BIT 7 IN THE I/O CODE TO INDICATE
       ORI     80      ; USER SPECIFIED BUFFER ADDRESS
       LXI     H,DKB
       CALL    UDIND   ;CALL MIKADOS TO DO DISC I/O
;
ERRUD: LHLD    ERRPT   ;STORE ERROR CODE FOR USER
       MOV     M,A
       INX     H
       MVI     M,0
;
       RET             ;DONE
;
;
; DATA AREA
;
       RAM
IOKOD: DS      1       ;I/O CODE (1=READ, 2=WRITE)
ERRPT: DS      2       ;POINTER TO USER ERROR VARIABLE
DKB:   DS      BUFF    ;DATA CONTROL BLOCK (HEADER ONLY)
;
       END

Mikados K File

0x000…029 Line {l1=0x27, l2=»;DISC SECTOR I/O FOR PASCAL - RM-800104«, l3=0x27}
0x029…02c Line {l1=0x01, l2=»;«, l3=0x01}
0x02c…059 Line {l1=0x2b, l2=»;TYPE BLOCK = PACKED ARRAY(0..255) OF CHAR;«, l3=0x2b}
0x059…05c Line {l1=0x01, l2=»;«, l3=0x01}
0x05c…086 Line {l1=0x28, l2=»;PROCEDURE PSCIU( VAR DISCBUFFER: BLOCK;«, l3=0x28}
0x086…0bf Line {l1=0x37, l2=»;                 DISC, TRACK, SECTOR, IOCODE: INTEGER;«, l3=0x37}
0x0bf…0f6 Line {l1=0x35, l2=»;                 VAR ERRORCODE: INTEGER ); EXTERNAL;«, l3=0x35}
0x0f6…0f9 Line {l1=0x01, l2=»;«, l3=0x01}
0x0f9…140 Line {l1=0x45, l2=»;PURPOSE: READS (IOCODE=1) OR WRITES (IOCODE=2) THE SECTOR IDENTIFIED«, l3=0x45}
0x140…187 Line {l1=0x45, l2=»;         BY THE DISC ADDRESS IN 'TRACK'/'SECTOR' ON THE DISC IDENTI-«, l3=0x45}
0x187…1b8 Line {l1=0x2f, l2=»;         FIED BY 'DISC' INTO/FROM 'DISCBUFFER'«, l3=0x2f}
0x1b8…1fc Line {l1=0x42, l2=»;         THE RESULTING MIKADOS DISC DRIVER ERROR CODE IS RETURNED«, l3=0x42}
0x1fc…22f Line {l1=0x31, l2=»;         IN 'ERRORCODE' (ZERO IMPLIES NO ERROR).«, l3=0x31}
0x22f…232 Line {l1=0x01, l2=»;«, l3=0x01}
0x232…23f Line {l1=0x0b, l2=»       SYMB«, l3=0x0b}
0x23f…242 Line {l1=0x01, l2=»;«, l3=0x01}
          […0x1…]
0x245…283 Line {l1=0x3c, l2=»PSCIU::POP     B       ;RETURN ADDRESS TO PASCAL INTERPRETER«, l3=0x3c}
0x283…286 Line {l1=0x01, l2=»;«, l3=0x01}
0x286…2c8 Line {l1=0x40, l2=»       POP     H       ;POINTER TO ERROR CODE (DEFINED AS 'VAR')«, l3=0x40}
0x2c8…2de Line {l1=0x14, l2=»       SHLD    ERRPT«, l3=0x14}
0x2de…300 Line {l1=0x20, l2=»       POP     H       ;I/O CODE«, l3=0x20}
0x300…314 Line {l1=0x12, l2=»       MOV     A,L«, l3=0x12}
0x314…32a Line {l1=0x14, l2=»       STA     IOKOD«, l3=0x14}
0x32a…351 Line {l1=0x25, l2=»       POP     H       ;SECTOR NUMBER«, l3=0x25}
0x351…365 Line {l1=0x12, l2=»       MOV     A,L«, l3=0x12}
0x365…38f Line {l1=0x28, l2=»       STA     DKB+SEKT1+2  ;SAVE IN DKB«, l3=0x28}
0x38f…3b5 Line {l1=0x24, l2=»       POP     H       ;TRACK NUMBER«, l3=0x24}
0x3b5…3cf Line {l1=0x18, l2=»       SHLD    DKB+SEKT1«, l3=0x18}
0x3cf…3f4 Line {l1=0x23, l2=»       POP     D       ;DISC NUMBER«, l3=0x23}
0x3f4…41c Line {l1=0x26, l2=»       POP     H       ;BUFFER POINTER«, l3=0x26}
0x41c…436 Line {l1=0x18, l2=»       SHLD    DKB+NÆPST«, l3=0x18}
0x436…439 Line {l1=0x01, l2=»;«, l3=0x01}
0x439…477 Line {l1=0x3c, l2=»       PUSH    B       ;RETURN ADDRESS TO PASCAL INTERPRETER«, l3=0x3c}
0x477…47a Line {l1=0x01, l2=»;«, l3=0x01}
0x47a…4b7 Line {l1=0x3b, l2=»       MOV     A,E     ;COMPUTE DISC IDENTIFICATION POINTER«, l3=0x3b}
0x4b7…4cb Line {l1=0x12, l2=»       ADI     '0'«, l3=0x12}
0x4cb…4df Line {l1=0x12, l2=»       MOV     D,A«, l3=0x12}
0x4df…4f5 Line {l1=0x14, l2=»       MVI     E,'P'«, l3=0x14}
0x4f5…524 Line {l1=0x2d, l2=»       LXI     H,DKB   ; AND STORE IN THE DKB«, l3=0x2d}
0x524…53a Line {l1=0x14, l2=»       CALL    PFIND«, l3=0x14}
0x53a…54c Line {l1=0x10, l2=»       ANA     A«, l3=0x10}
0x54c…581 Line {l1=0x33, l2=»       JNZ     ERRUD   ;JUMP IF ILLEGAL DISC NUMBER«, l3=0x33}
0x581…584 Line {l1=0x01, l2=»;«, l3=0x01}
0x584…598 Line {l1=0x12, l2=»       MVI     A,1«, l3=0x12}
0x598…5d1 Line {l1=0x37, l2=»       STA     DKB+SANT  ;ONE SECTOR TO BE READ/WRITTEN«, l3=0x37}
0x5d1…614 Line {l1=0x41, l2=»       LDA     IOKOD   ;TURN ON BIT 7 IN THE I/O CODE TO INDICATE«, l3=0x41}
0x614…64c Line {l1=0x36, l2=»       ORI     80      ; USER SPECIFIED BUFFER ADDRESS«, l3=0x36}
0x64c…662 Line {l1=0x14, l2=»       LXI     H,DKB«, l3=0x14}
0x662…697 Line {l1=0x33, l2=»       CALL    UDIND   ;CALL MIKADOS TO DO DISC I/O«, l3=0x33}
0x697…69a Line {l1=0x01, l2=»;«, l3=0x01}
0x69a…6cd Line {l1=0x31, l2=»ERRUD: LHLD    ERRPT   ;STORE ERROR CODE FOR USER«, l3=0x31}
0x6cd…6e1 Line {l1=0x12, l2=»       MOV     M,A«, l3=0x12}
0x6e1…6f3 Line {l1=0x10, l2=»       INX     H«, l3=0x10}
0x6f3…707 Line {l1=0x12, l2=»       MVI     M,0«, l3=0x12}
0x707…70a Line {l1=0x01, l2=»;«, l3=0x01}
0x70a…728 Line {l1=0x1c, l2=»       RET             ;DONE«, l3=0x1c}
0x728…72b Line {l1=0x01, l2=»;«, l3=0x01}
          […0x1…]
0x72e…73b Line {l1=0x0b, l2=»; DATA AREA«, l3=0x0b}
0x73b…73e Line {l1=0x01, l2=»;«, l3=0x01}
0x73e…74a Line {l1=0x0a, l2=»       RAM«, l3=0x0a}
0x74a…77e Line {l1=0x32, l2=»IOKOD: DS      1       ;I/O CODE (1=READ, 2=WRITE)«, l3=0x32}
0x77e…7b6 Line {l1=0x36, l2=»ERRPT: DS      2       ;POINTER TO USER ERROR VARIABLE«, l3=0x36}
0x7b6…7f0 Line {l1=0x38, l2=»DKB:   DS      BUFF    ;DATA CONTROL BLOCK (HEADER ONLY)«, l3=0x38}
0x7f0…7f3 Line {l1=0x01, l2=»;«, l3=0x01}
0x7f3…7ff Line {l1=0x0a, l2=»       END«, l3=0x0a}
0x7ff…800 00                                                                                                ┆ ┆
0x800…820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ┆                                ┆
          […0x1c…]
0xba0…bc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 67   ┆                               g┆

Reduced view