|
|
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 - metrics - download
Length: 3008 (0xbc0)
Notes: Mikados TextFile, Mikados_K
Names: »PSCIU«
└─⟦f1b095e24⟧ Bits:30005320 Katalogisering af disketter
└─⟦this⟧ »PSCIU«
;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