// DDTapeServerDispUtil.bcpl -- Dual Density Tape Server Display utilities
// last modified by Tim Diebert, March 16, 1981 7:49 PM
//
get "Pup.decl"
get "DDTapes.d"
get "AltoDefs.d"
get "DDTapeServer.decl"
//---------------------------------------------------------------
external
//---------------------------------------------------------------
[
//From Timer
SetTimer; TimerHasExpired; Dismiss
//From 'System'
Gets; Resets; LoadRam; CallSwat; lvUserFinishProc; lvSwatContextProc
FixedLeft; Usc; AddToZone; sysZone; GetFixed; SetBLV; StartIO
Allocate; InitializeZone; Enqueue; InitializeContext; CallContextList
Block; Unqueue; Dequeue; MoveBlock; Free; Ws; InitBcplRuntime; SetEndCode
Zero
// To Tapes
TapeWaitQuiet
// To DDTapeServer and DDTapeServerDOs
InitDisplay; DWs; DWo; MonitorKeys
//From Pup
InitPupLevel1; OpenLevel1Socket; OpenRTPSocket; CreateBSPStream
BSPReadBlock; BSPWriteBlock; BSPForceOutput; ExchangePorts
ReleasePBI; CompletePup; AppendStringToPup; BSPGetMark; PupChecksum
//From Streams
Wo; Endofs; Closes; keys
//Exported Globals
rwBlock; kbdKey; rwKey; usedidnos; useddrives; ctxQ; currentVersionString
numConnections
]
static
[
TimerValue
tempDCB
savedDCB
DispOnFlag
]
//---------------------------------------------------------------
let InitDisplay() be
//---------------------------------------------------------------
[
// set up cursor
cursorBitMap!0 = #177000
cursorBitMap!1 = #111000
cursorBitMap!2 = #010000
cursorBitMap!3 = #010000
cursorBitMap!4 = #011700
cursorBitMap!5 = #012100
cursorBitMap!6 = #012000
cursorBitMap!7 = #011600
cursorBitMap!8 = #000176
cursorBitMap!9 = #002121
cursorBitMap!10 = #002121
cursorBitMap!11 = #001621
cursorBitMap!12 = #000036
cursorBitMap!13 = #000020
cursorBitMap!14 = #000020
cursorBitMap!15 = #000020
savedDCB = @displayListHead
tempDCB = Allocate(sysZone, lDCB, true, true)
unless tempDCB then CallSwat(" Help")
Zero(tempDCB, lDCB)
tempDCB>>DCB.next = 0
tempDCB>>DCB.background = 1
tempDCB>>DCB.height = 500
@displayListHead = tempDCB
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
@displayListHead = 0
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
DispOnFlag = false
]
//---------------------------------------------------------------
and DWs(foo) be
//---------------------------------------------------------------
[
while TapeActive do Dismiss(1)
SetTimer(lv TimerValue, 3000)
unless DispOnFlag then @displayListHead = savedDCB
Ws(foo)
DispOnFlag = true
]
//---------------------------------------------------------------
and DWo(foo) be
//---------------------------------------------------------------
[
while TapeActive do Dismiss(1)
SetTimer(lv TimerValue, 3000)
unless DispOnFlag then @displayListHead = savedDCB
Wo(foo)
DispOnFlag = true
]
//---------------------------------------------------------------
and MonitorKeys() be
//---------------------------------------------------------------
[
test DispOnFlag
ifso
[
test TimerHasExpired(lv TimerValue)
ifso
[
until @displayListHead ne 0 do Dismiss(1)
while TapeActive do Dismiss(1)
savedDCB = @displayListHead
@displayListHead = tempDCB
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
while TapeActive do Dismiss(1)
@displayListHead = 0
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
DDTapeVertIntFlag = false
until DDTapeVertIntFlag do Block()
DispOnFlag = false
]
ifnot
[
]
]
ifnot
[
]
if kbdKey eq -1 do
[
if @kbdAd ne #177777 do OnWithIT()
if @(kbdAd + 1) ne #177777 do OnWithIT()
if @(kbdAd + 2) ne #177777 do OnWithIT()
if @(kbdAd + 3) ne #177777 do OnWithIT()
if ( @(kbdAd + 1) eq #167767) & (numConnections eq 0) do
[
Resets(keys)
finish
]
Resets(keys)
]
Dismiss(10)
] repeat
//---------------------------------------------------------------
and OnWithIT() be
//---------------------------------------------------------------
[
while TapeActive do Dismiss(1)
SetTimer(lv TimerValue, 1500)
if @displayListHead eq 0 do
[
@displayListHead = savedDCB
DispOnFlag = true
]
]