PACKET basic transput DEFINES
out ,
outsubtext ,
outtext ,
TIMESOUT ,
cout ,
display ,
inchar ,
incharety ,
cat input ,
pause ,
cursor ,
get cursor ,
channel ,
online ,
control ,
blockout ,
blockin :
LET channel field = 4 ,
blank times 64 =
" " ;
LET BLOCKIO = STRUCT (ALIGN page align, ROW 256 INT buffer) ,
buffer page = 2 ;
BOUND BLOCKIO VAR block io ;
DATASPACE VAR block io ds ;
INITFLAG VAR this packet := FALSE ;
PROC out (TEXT CONST text ) :
EXTERNAL 60
ENDPROC out ;
PROC outsubtext ( TEXT CONST source, INT CONST from ) :
EXTERNAL 62
END PROC outsubtext;
PROC outsubtext (TEXT CONST source, INT CONST from, to) :
EXTERNAL 63
END PROC outsubtext;
PROC outtext ( TEXT CONST source, INT CONST from, to ) :
out subtext (source, from, to) ;
INT VAR trailing ;
IF from <= LENGTH source
THEN trailing := to - LENGTH source
ELSE trailing := to + 1 - from
FI ;
IF trailing > 0
THEN trailing TIMESOUT " "
FI
ENDPROC outtext ;
OP TIMESOUT (INT CONST times, TEXT CONST text) :
IF text = " "
THEN fast timesout blank
ELSE timesout
FI .
fast timesout blank :
INT VAR i := 0 ;
WHILE i + 64 < times REP
out (blank times 64) ;
i INCR 64
PER ;
outsubtext (blank times 64, 1, times - i) .
timesout :
FOR i FROM 1 UPTO times REP
out(text)
ENDREP .
ENDOP TIMESOUT ;
PROC display (TEXT CONST text) :
IF online
THEN out (text)
FI
ENDPROC display ;
PROC inchar (TEXT VAR character ) :
EXTERNAL 64
ENDPROC inchar ;
TEXT PROC incharety :
EXTERNAL 65
END PROC incharety ;
TEXT PROC incharety (INT CONST time limit) :
internal pause (time limit) ;
incharety
ENDPROC incharety ;
PROC pause (INT CONST time limit) :
internal pause (time limit) ;
TEXT CONST dummy := incharety
ENDPROC pause ;
PROC pause :
TEXT VAR dummy; inchar (dummy)
ENDPROC pause ;
PROC internal pause (INT CONST time limit) :
EXTERNAL 66
ENDPROC internal pause ;
PROC cat input (TEXT VAR t, esc char) :
EXTERNAL 68
ENDPROC cat input ;
PROC cursor (INT CONST x, y) :
out (""6"") ;
out (code(y-1)) ;
out (code(x-1)) ;
ENDPROC cursor ;
PROC get cursor (INT VAR x, y) :
EXTERNAL 67
ENDPROC get cursor ;
PROC cout (INT CONST number) :
EXTERNAL 61
ENDPROC cout ;
INT PROC channel :
pcb (channel field)
ENDPROC channel ;
BOOL PROC online :
pcb (channel field) <> 0
ENDPROC online ;
PROC control (INT CONST code1, code2, code3, INT VAR return code) :
EXTERNAL 84
ENDPROC control ;
PROC blockout (ROW 256 INT CONST block, INT CONST code1, code2,
INT VAR return code) :
access block io ds ;
block io.buffer := block ;
blockout (block io ds, buffer page, code1, code2, return code) .
access block io ds :
IF NOT initialized (this packet)
THEN block io ds := nilspace
FI ;
block io := block io ds .
ENDPROC blockout ;
PROC blockin (ROW 256 INT VAR block, INT CONST code1, code2,
INT VAR return code) :
access block io ds ;
blockin (block io ds, buffer page, code1, code2, return code) ;
block := block io.buffer .
access block io ds :
IF NOT initialized (this packet)
THEN block io ds := nilspace
FI ;
block io := block io ds .
ENDPROC blockin ;
ENDPACKET basic transput ;