1
0
mirror of synced 2026-03-06 11:13:30 +00:00
Files
lisper.cpus-pdp8/tss8/system/ts8f.pal
brad 0e9bfd9d85
2010-04-02 12:36:00 +00:00

620 lines
14 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/ROUTINE TO SET A WAIT 2 CONDITION FOR THE CURRENT USER
/ (FOR DECTAPE, RK05, OR CARDREADER)
/ ENTER WITH DESIRED WAIT 2 STATUS IN THE AC
WAITS2, 0
DCA TEMP2
CDF
TAD I JOB /GET USER JOB NUMBER
JMS GETTBA
JOBWMK
DCA I TEMP0 /CLEAR WAIT MASK 1
ISZ TEMP0
TAD TEMP0 /GET WAIT NUMBER
DCA I TEMP0 /NOW [S]HE'S WAITING
JMP I WAITS2
/ROUTINE TO LOCK CURRENT USER IN HIS/HER CORE FIELD
/ RETURNS WITH CORTBL POINTER IN AC
USRLOK, 0
CDF
TAD I L2SFP /POINTER TO LEVEL 2 SAVE FIELD
AND K0007 /JUST THE FIELD
TAD CORTBA /DISPLACEMENT INTO THE CORE TABLE
DCA TEMP2
STL RTR /AC=2000
TAD I TEMP2
DCA I TEMP2 /LOCK IN CORE
DATFLD
TAD TEMP2 /NOW RETURN WITH POINTER INTO CORE TABLE
JMP I USRLOK
L2SFP, L2SF
FCB3= .+7&7770
CDCNT, 0
CDCORE, 0
CDTIMR, TIMCDR
CDL21, CLL CMA RTR /AC=5777
AND I CDCORE
DCA I CDCORE /UNLOCK THE CORE FIELD
TAD CDJOB
JMS GETTBA /FIND HIS/HER AC
JOBREG+2
TAD CDCNT
DCA I TEMP0 /PUT THE COLUMN COUNT IN HIS/HER AC
TAD CDJOB
JMS I AWAKEN /TAKE HIM/HER OUT OF WAIT STATUS
CDBUF, 0
EXITF1
CDL11, TAD I CDTIMR
SNA CLA /WERE WE EXPECTING AN INTERRUPT?
JMP CDIOT /NO
ISZ CDCNT /COUNT A COLUMN
ISZ CDBUF /BUMP THE USER'S POINTER
CDJOB, 0 /JOB OWNING THE CARD READER - (COVERS THE "ISZ SKIP")
CDREAD, .-. /THE PROPER READ IOT IS PLACED HERE
CDFLD, .-. /CDF TO THE USER'S FIELD
DCA I CDBUF /STASH A COLUMN IN THE USER'S BUFFER
INTRTN
CDIOT, RCRA /CLEAR UNWANTED INTERRUPT
CLA
INTRTN
UUCDR, CLL RAL /TIMES 2
TAD CDIOT /CONSTRUCT READ IOT
DCA CDREAD /EITHER ALPHA, BINARY, OR COMPRESSED (8E ONLY)
TAD I L2SAP
DCA CDBUF /SAVE THE USER'S BUFFER POINTER
DCA I L2SAP /CLEAR USER AC - IN CASE THE READER ISN'T READY
TAD I UDFP
DCA CDFLD /SAVE CDF TO USER'S FIELD
TAD I JOB
DCA CDJOB
DCA CDCNT /ZERO COLUMN COUNT
IOF
IFZERO CPU&7776 < JMP .+4 >
IFNZRO CPU&7776 < RCTF > /CLEAR 8E TRANSITION FLAG
IAC
RCNO /ENABLE CARD READER INTERRUPTS
CLA
RCSE /START CARD READER
JMP UUCDRB /NOT READY - PUT HIM/HER TO SLEEP BEFORE CONTINUING
JMS USRLOK /LOCK HIM/HER IN HIS/HER FIELD
DCA CDCORE /SAVE POINTER TO CORTBL
TAD K0004
JMS I WAIT2 /MAKE HIM/HER WAIT FOR THE CARD READER
CIF CDF
CLL CMA RAL /AC=-2
DCA I CDTIMR /SET CARD READER TIMER
JMP I WAIT1
UUCDRB, CIF CDF
JMP I SLEEPB /PUT HIM/HER TO SLEEP FOR A COUPLE OF SECONDS
*2000
FCE3= .&7770
FCB4= .+7&7770
RKL11, DRST /GET CONTROLLER STATUS
CLL RAL /IGNORE THE DONE BIT
SZA
JMP RKSR1 /ERROR!!!!!
ISZ RKBLKS /COUNT A SUCCESSFUL TRANSFER
TAD RKCMD
SNA /ARE WE FINISHED?
JMP RKSR2 /YES
DLDC /LOAD THE NEW COMMAND
TAD RKSECT
DLAG /LOAD THE NEW SECTOR - WE'RE OFF AND RUNNING AGAIN
JMS RKNXT /SET UP FOR THE NEXT BLOCK (IF ANY)
CLL STA RAL
DCA RKTIME /SET CONTROLLER TIMER FOR 2 MORE SECONDS
CLL STA RTL
DCA I RKERRA /THREE ERRORS
INTRTN
RKSR1, ISZ I RKERRA
JMP RKSR4 /STILL OK TO RETRY
DRST
RKSR2, DCA I RKERRA /FINAL STATUS FOR THE USER
DLDC /CLEAR CONTROLLER STATUS AND COMMAND REGISTERS
DCA RKTIME
TAD RKL2 /SCHEDULE LEVEL 2
INTRTN
RKSR4, AND K1012 /SAVE SPECIAL CASE ERROR BITS
SNA
RKSRE, JMP RKSR5+1 /DON'T RECAL. OR PUT CURRENT JOB TO SLEEP
AND K0010
SZA CLA
JMP RKSR5 /PUT CURRENT JOB TO SLEEP AND RE-TRY
IAC
DCLR /IN CASE WE HAVE SOMETHING REALLY IN TROUBLE
TAD RKCOM
AND K0006 /SAVE ONLY THE UNIT #
TAD K0600 /ENABLE INTERRUPT ON SEEK COMPLETION
DLDC
STL RTL
DCLR /RE-CALIBRATE
TAD RKSRE
DCA RKL11 /CHANGE LEVEL 1
CLL STA RTL /ALLOW 3 SECONDS FOR THE RE-CALIBRATE
DCA RKTIME
DCLR
INTRTN
RKSR5, TAD SLEEPB
DCA INTS2
CLL CMA RTL /AC=-3
TAD IX3 /POINTER TO DDB WORD 4 (-1)
JMS RKGO /RE-TRY
SNA /ANYTHING BAD?
TAD INTS2 /NO - HOW ABOUT PUTTING SOMEONE TO SLEEP?
INTRTN
K1012, 1012
RKL2, RKL20
RKFLD, -CORTBL+51
RKGO, 0
DCA IX3 /SAVE THE DDB POINTER
IAC
DCLR /CLEAR THE CONTROLLER
TAD I IX3 /USER WORD 1
CLL RTR
RAR
DCA RKCOM /SAVE COMMAND DIVIDED BY 10
TAD RKCOM
AND K0037 /PAGE COUNT
SNA
TAD K0040 /FOR 0 OR 40 GIVE HIM/HER 40
CMA
TAD RKBLKS
TAD RKBLKS /ADD NUMBER OF PAGES ALREADY TRANSFERRED
DCA RKCNT
TAD RKCOM
AND K7400 /SAVE FUNCTION, DRIVE, AND HI ORDER SECTOR BIT
TAD RKCORE /POINTER TO CORTBL ENTRY
TAD RKFLD /EXTRACT FIELD NUMBER AND INSERT INTERRUPT ENABLE AND HALF BLOCK BITS
CML RTL /"RKFLD" COMPLEMENTED THE LINK
RAL
DCA RKCOM /SAVE THE CONSTRUCTED COMMAND REGISTER
TAD RKBLKS /NUMBER OF SECTORS ALREADY TRANSFERRED
TAD I IX3
DCA RKSECT /STARTING SECTOR NUMBER FROM THE USER
SZL
ISZ RKCOM /BUMP HI ORDER BIT
TAD RKBLKS /NUMBER OF BLOCKS ALREADY TRANSFERRED
CLL RTR /TIMES 400
RTR
RAR
TAD I IX3
IAC /WE ADD ONE SINCE THE CONTROLLER WANTS THE REAL ADDRESS
DLCA /LOAD USER'S CA INTO THE CONTROLLER
JMS RKCMD /GENERATE FIRST COMMAND
IOF
DLDC /LOAD CONTROLLER COMMAND REGISTER
TAD RKSECT
DLAG /LOAD IN THE DESIRED SECTOR - WE ARE OFF AND RUNNING
JMS RKNXT /SET UP FOR THE NEXT SECTOR (IF ANY)
TAD RKDRST
DCA RKL11 /FIX FIRST WORD OF INTERRUPT SERVICE
DSKP /ARE WE TRYING TO DO SOMETHING BAD?
JMP I RKGO /NO - EVERYTHING IS PEACHY
RKDRST, DRST
DCA I RKERRA /SAVE ERROR STATUS - NO RE-TRIES WILL BE MADE
DLDC /CLEAR CONTROLLER STATUS AND COMMAND REGISTERS
TAD RKL2 /RETURN WITH L2 DISPATCH
JMP I RKGO
RKCMD, 0
ISZ RKCNT
TAD RKCNT
SMA CLA /ANY MORE BLOCKS TO GO?
JMP RKDONE /NO - CLOSE IT OUT
ISZ RKCNT /HALF BLOCK?
TAD K7700 /NO - REMOVE THE HALF BLOCK BIT FROM THE COMMAND
TAD RKCOM /GET THE COMMAND
JMP I RKCMD
RKNXT, 0
ISZ RKSECT /BUMP SECTOR
TAD RKSECT
SNA
ISZ RKCOM /BUMP HI-ORDER SECTOR BIT
AND K0037
SZA CLA /WILL WE SEEK ON THIS ONE?
TAD K1000 /NO - DO A READ ALL OR WRITE ALL
DCA INTS1
JMS RKCMD /CHECK FOR HALF BLOCK AND COMPLETION
TAD INTS1
RKDONE, DCA RKCMD /SAVE THE NEW COMMAND REGISTER
JMP I RKNXT
PAGE
FCE4= .&7770
IFNZRO DC08A <
T8ASSM, 0
AND T83770 /THE CHARACTER ONLY
SNA
JMP T8ASS1 /IGNORE NULL CHARACTERS
CLL RTR /BRING THE CHARACTER INTO POSITION
RAR
AND T80177
TAD K0200 /FORCE ON THE PARITY BIT
CIF 00 /STASH IT AWAY
JMS I T8IN1A /THAT'S DONE IN FIELD 0
ION
T8ASS1, CLL STA RTL /AC=-3
TAD T8ASSM
DCA T8T /POINTS TO THE LSW
TAD I T8T
AND T83770 /SAVE ONLY THE LINE NUMBER
DCA I T8T
ISZ T8T /POINTS TO THE CAW
STL RTR /AC=2000
DCA I T8T /RESET THE FLAG BIT
TTIR /BUMP THE "R" REGISTER
JMP I T8ASSM
T80177, 177
T83770, 3770
T8IN1A, T8IN1
T8T, 0
T8TTI, TTI
DC08LO^10+0 /LSW LINE # PT08+DC08LO+1
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+10 /LSW LINE # PT08+DC08LO+2
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+20 /LSW LINE # PT08+DC08LO+3
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+30 /LSW LINE # PT08+DC08LO+4
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+40 /LSW LINE # PT08+DC08LO+5
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+50 /LSW LINE # PT08+DC08LO+6
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+60 /LSW LINE # PT08+DC08LO+7
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+70 /LSW LINE # PT08+DC08LO+10
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+100 /LSW LINE # PT08+DC08LO+11
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+110 /LSW LINE # PT08+DC08LO+12
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+120 /LSW LINE # PT08+DC08LO+13
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+130 /LSW LINE # PT08+DC08LO+14
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+140 /LSW LINE # PT08+DC08LO+15
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+150 /LSW LINE # PT08+DC08LO+16
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+160 /LSW LINE # PT08+DC08LO+17
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+170 /LSW LINE # PT08+DC08LO+20
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+200 /LSW LINE # PT08+DC08LO+21
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+210 /LSW LINE # PT08+DC08LO+22
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+220 /LSW LINE # PT08+DC08LO+23
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
TTI
DC08LO^10+230 /LSW LINE # PT08+DC08LO+24
2000 /CAW
JMS T8ASSM /CHARACTER FULLY ASSEMBLED
*T8TTI+DC08A+DC08A+DC08A+DC08A
CIF 00
JMP I .+1 /BACK TO THE REST OF THE DC08A SERVICE
T8OUT1
FCB5= .+7&7770
*2360
FCE5= .&7770
DFCLS0, ZBLOCK 4
DFCNO0, ZBLOCK 4
DFL2S0, ZBLOCK 4
-1 /TO END TABLE
DFL2DL= .
1-DC08LO+PT08+KL8;11-DC08LO+PT08+KL8
21-DC08LO+PT08+KL8;31-DC08LO+PT08+KL8
DFRING, CTG /CLEAR THE GROUP COUNTER
TAD K7774
DCA TEMP0 /COUNTER FOR GROUP SEARCH
DFRNG1, RRS /READ RING STATUS
SZA
STR /ACKNOWLEDGE RING(S)
CLA
ITG /INCREMENT THE GROUP COUNTER
ISZ TEMP0 /LOOKED AT ALL LINES?
JMP DFRNG1 /NO, KEEP LOOKING
STA
IOF
DCA I .+2 /DATA FLD=0 HERE, I HOPE. RESET COUNTER
EXITF1
D6FLAG
DFCLSI, 0
DFCNWI, 0
DFCLST, DFCLS0
DFCNOW, DFCNO0
DFCNTR, 0
DFCSET, 0
TAD DFCLST
DCA DFCLSI /POINTER TO STATUS AT LAST INTERRUPT
TAD DFCNOW
DCA DFCNWI /POINTER TO STATUS AT THIS INTERRUPT
TAD K7774
DCA DFCNTR /COUNTER FOR COMPARISONNS
CTG /CLEAR GROUP COUNTER
JMP I DFCSET
DFCARR, JMS DFCSET /INITIALIZE STATUS
DFCAR1, RCS /READ CARRIER STATUS
DCA I DFCNWI /PLACE ON TABLE
ISZ DFCNWI
ITG /INCREMENT THE GROUP COUNTER
ISZ DFCNTR /READ ALL FOUR GROUPS?
JMP DFCAR1 /NO, READ NEXT
JMS DFCSET
TAD DFL2ST
DCA DFL2SI
DFCAR2, TAD I DFCNWI
CMA
AND I DFCLSI
SZA /ANY LINES CLEARED?
JMP DFCAR3 /YES, ACKNOWLEDGE
DFCAR5, TAD I DFCLSI
CMA
AND I DFCNWI
SZA
JMS DFCAR6
ISZ DFCLSI
ISZ DFCNWI
ISZ DFL2SI
ITG /INCREMENT THE GROUP COUNTER
ISZ DFCNTR /ALL LINES CHECKED?
JMP DFCAR2 /NO
JMS DFCSET
DFCAR4, TAD I DFCNWI /TRANSFER THIS STATUS TABLE TO LAST
DCA I DFCLSI
ISZ DFCNWI
ISZ DFCLSI
ISZ DFCNTR
JMP DFCAR4
JMP DFL200
DFCAR3, CTR /CLEAR TERMINAL READY
JMS DFCAR6
JMP DFCAR5 /LOOK AT OTHER GROUPS
DFCAR6, 0
DCA TEMP4 /BIT TO SET
TAD TEMP4
CMA
AND I DFL2SI
TAD TEMP4
DCA I DFL2SI
JMP IDFCAR6
DFL200, TAD DFL2ST /INITIALIZE PSEUDO GROUP CTR
DCA DFL2SG
DFL22, TAD K7770 /EIGHT PHONES
DCA TEMP0
IAC
DCA TEMP1 /SELECT EACH LINE IN GROUP
DFL21, TAD I DFL2SG
SNA
JMP DFL23
SPA
EXITF1
AND TEMP1
SZA CLA
JMP DFL25
DFL26, TAD TEMP1
CLL RAL
DCA TEMP1
ISZ TEMP0
JMP DFL21
DFL23, DCA I DFL2SG
ISZ DFL2SG
JMP DFL22
DFGBLK, GETB
DFL25, TAD DFL2SG
TAD DFL2C
DCA TEMP2
TAD I TEMP2
TAD TEMP0
TAD K0010
CLL RAL
TAD DFVTBA
DCA TEMP3
TAD I TEMP3
SZA CLA
JMP .+5 /YES
TAD TEMP3
CIF
JMS I DFGBLK
JMP DFL26
TAD TEMP3
CIF CDF
JMS I DFUMES
JMP DFL26
DFL2SG, 0
DFL2C, DFL2DL-DFL2S0
DFVTBA= DEVTBA
DFL2SI, 0
DFL2ST, DFL2S0
DFUMES, UHLTMS
>
*DATA1
/ROUTINE TO DECREMENT TIMERS
/THEY ARE BUMPED ONCE EACH SECOND
/THUS A USER CAN MEASURE UP TO 1 HOUR, 8 MINUTES, 15 SECONDS
TIMER0, 0
ISZ TIMBIG /HAVE WE GONE THROUGH A SECOND YET?
JMP F0TIMT /NO - DID WE FINISH ALL THE TIMERS LAST TIME?
TAD TICSEC /REFRESH SECOND TIMER
DCA TIMBIG
TAD JOBCNT
DCA TIMET1
TAD TIMTB1 /START OF CLKTBL
DCA TIMET2
TIMER1, DATFLD
TAD I TIMET2
SZA CLA
ISZ I TIMET2
JMP TIMER2
TAD TIMEJM /SET TIMER FLAG
TAD TIMET1
JMS GETTBA /GET PTR TO STATUS 1
JOBSTS+1
TAD TEMP0 /DOES THE JOB STILL EXIST?
SNA CLA
JMP TIMER2 /NO
TAD I TEMP0 /YES, SET JSTIME IN STR1
RAL
STL RAR
DCA I TEMP0
TIMER2, ISZ TIMET2
ISZ TIMET1
JMP TIMER1
ISZ UPTIM1 /INDEX LOW ORDER UPTIME
SKP
ISZ UPTIM2 /INDEX HI ORDER UPTIME
TIMEJM, JOBMAX+1 /NOP
IFZERO TC01 < JMP .+3 >
IFNZRO TC01 < STA >
DCA TEMP2 /ENABLE TRANSFER BACK TO DECTAPE CONTROLLER WAIT
JMS I TIMEDT /RUN DECTAPE TIMERS
IFZERO RK05 < JMP F0TIMR >
IFNZRO RK05 < CIF DATFLD > /NO INTERRUPTS
TAD RKTIME
SZA CLA /ACTIVE?
ISZ RKTIME /YES, BUMP TIMER
JMP F0TIMR /ALL IS WELL
IAC
DCLR /STOP WHATEVER IS GOING ON WITH THE RK05
STA
DCA I RKERRA /SHOW THAT TRANSFER WAS TERMINATED
TAD RKJOB
JMS I RKHUNG /REPORT THE ERROR
RKL20
/ROUTINE TO DUMP VALUE OF ONE CORE CELL INTO MQ
/RUNS AT EACH SYSTEM TICK
/TO USE, SET THE DESIRED CORE ADDRESS IN THE SWITCH REGISTER
/TO SELECT FIELDS, CLEAR SR TO 0, AND SET THE DESIRED
/FIELD IN THE LOW ORDER BITS OF THE SR.
/THIS MEANS THAT YOU CANNOT ADDRESS LOCATIONS 0,1,2, OR 3
/IF THIS ROUTINE IS RUNNING, THE EAE IS NOT MUCH USE
/TO USER PROGRAMS. SORRY ABOUT THAT.
TIMOUT, JMP TIMEX /LAS /INSERT THE "LAS" (7604) TO ENABLE DISPLAY
AND K7774 /TRYING A FIELD SELECT?
SNA
JMP DISPL1 /YES, GO CHANGE THE FIELD
LAS /NO; WHAT WAS THAT ADDRESS AGAIN?
DCA TEMP0
DISFLD, CDF /ASSUME FIELD 0 TO START
TAD I TEMP0 /PICK UP CONTENTS OF SPECIFIED ADDRESS
MQL /DUMP IT IN THE MQ
TIMEX, CIF CDF /BACK TO FIELD 0
JMP I TIME3A /RETURN
TIMIT, TIMER3
TIME3A, TIMER3
TIMBIG, -TICSPS /ACTIVE COUNTER
TICSEC, -TICSPS /STARTING VALUE OF TIMBIG
TIMET1= TEMP4
TIMET2= TEMP2
TIMTB1, CLKTBL+1
TIMEDT, DTIMER
RKHUNG, DTRKER
DISPL1, LAS /WHAT WAS THAT FIELD AGAIN?
CLL RAL
RTL
TAD K6201 /BUILD FIELD SELECT
DCA DISFLD
JMP DISFLD-1 /NOW GO LOOK
DEVDMB= JOBTBL-2
*DEVTBL-1
DEVDMB /DUMMY USED BY FIP RELEASE
ZBLOCK DEVTBE-DEVTBL
0 /WE ALLOW THE READER EVEN IF NOT CONFIGURED FOR ONE
/THIS ALLOWS FIELD SERVICE TO USE THEIR PMK01
IFZERO PUNCH <DEVDMB>
IFNZRO PUNCH <0>
DEVDMB
IFZERO LPT <DEVDMB>
IFNZRO LPT <0>
IFZERO CDR <DEVDMB>
IFNZRO CDR <0>
IFZERO TC01 <DEVDMB
DEVDMB
DEVDMB
DEVEMB
DEVDMB
DEVDMB
DEVDMB
DEVDMB>
IFNZRO TC01 <ZBLOCK 10>
IFNZRO RK05 <ZBLOCK RK05>
IFNZRO .-JOBTBL+1 <DEVDMB>
IFNZRO .-JOBTBL+1 <DEVDMB>
IFNZRO .-JOBTBL+1 <DEVDMB>
IFNZRO .-JOBTBL+1 <DEVDMB>
-1 /TERMINATES ASSIGNABLE DEVICE TABLE
/JOBTBL, CLKTBL, TTYTBL, PRGTBL, & DSUTBL ARE SET UP BY INIT
*FIPBLK
ZBLOCK 10 /FIP'S FIXED PARAMETER BLOCK
*WINBAS
ZBLOCK 50 /BASIC'S WINDOW
$$$$$$$$$$$$$$$$$$$$$$$$$$$$