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

⟦7c95206e5⟧

    Length: 3040 (0xbe0)
    Notes: Mikados TextFile, Mikados_K
    Names: »PSCIU«

Derivation

└─⟦89d8689a3⟧ Bits:30003591 MIKADOS Pascal compiler (01.02.1982 E)
    └─ ⟦this⟧ »PSCIU« 

Text

;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