IDENT BEAD VER MICRO 1,,*4.1* TITLE . . . FILE HANDLER / USER EXECUTIVE VERSION 'VER' LIST X MASTR XTEXT TITLE CONSTANTS -- TEMPORARIES -- WORKING STORAGE -- SYMBOLS CAP MACRO WHAT + VFD 1/1,29/M.WHAT,30/C.MASTC ENDM S.ENTRY EQU 4 EJECT * * * SUBPROCESS DESCRIPTOR * ORG 0 * DATA 1 DATA 0 * DATA 0LBEADCLASS DATA 0LROOT DATA 0LBEADCALLI DATA 0LBEADCL DATA 0LBEADSCRF DATA 4 DATA 20 VFD 60/FL VFD 60/ENTRY VFD 60/CLSTSZ VFD 60/SCRSZ * DATA 0LBEADSCRF VFD 30/0,30/0 VFD 1/0,29/0,30/SCRSZ * DATA 0LBEADCODE VFD 30/1,30/SCRSZ VFD 1/1,29/SCRSZ,30/FL * DATA -0 * LOC 0 * C.ALLOC DATA 0LLCLALLOC C.BCLIST DATA 0LBEADCL C.MASTC DATA 0LDIRCLIST C.READ DATA 0LI.READ C.WRITE DATA 0LI.WRITE C.SENDE DATA 0LI.SENDE C.HANG DATA 0LI.GETE C.TTY DATA 0LTTYFILE DATA 0LTTYREQ DATA 0LTTYRESP C.SPRET DATA 0LI.SPRET * SYSCLSBS BSS 0 * DATA 0LBEADCLASS DATA 0LLINECLASS * SYSCLSCN EQU *-SYSCLSBS C.BEADCD DATA 0LBEADCODE C.MASTER DATA 0LI.MASTER C.TLINE DATA 0LLINEASCII C.CALLSP DATA 0 C.CLASS DATA 0 C.SCRFIL DATA 0 C.LOCALC DATA 0 C.CTEMP DATA 0 * CLSTSZ DATA -0 * LOC *O EJECT * * * CALLTYPE EQU 6 ( LOCATION OF HIDEN PARAM ) ERRCLASS EQU 6 ( LOCATION OF ERROR CLASS ON ERROR CALL ) INTPACK EQU 32B ( TO PRESEZRVE OLD ADDRESS ) * INTDATUM EQU 2 ( LOCATION OF INTERRUPT DATUM ON PANIC ) E.PANIC EQU 12 ( CLASS OCDE FOR PANIC ERROR ) * * ORG 52B ( ALLOW ROOM FOR INT PACK ) * * FILELEN DATA 0 WRITEU VFD 60/C.WRITE CAP MASTR DATA 0 VFD 60/USER DATA 1 WRITESP VFD 60/C.WRITE CAP MASTR DATA 0 VFD 60/SPACESUM DATA 1 RTOS CAP DISSEN VFD 60/STACK RTOSN DATA 0 * * MOVEOPS CAP CAPOUT VFD 60/C.LOCALC OPTAR DATA 0 OPSRC DATA 0 DATA -0 CINDX EQU OPTAR * READENT VFD 60/C.READ CAP MASTR FILEADR DATA 0 CMADR DATA 0 VFD 60/S.ENTRY FLAGG BSSZ 1 ERRCALL DATA 0 .. CALLED WITH ERROR FLAG PRECNVTS VFD 60/*+2 VFD 60/100 CNVTS BSS 4 ENTERF VFD 60/C.WRITE VFD 60/C.CTEMP ENTFA DATA 0 VFD 60/*+2 DATA 1 ENTFC BSSZ 2 ENTFT DATA 0 DATA 0 WRITEIT VFD 60/C.WRITE CAP MASTR FILE DATA 0 CM DATA 0 VFD 60/S.ENTRY HAVEDIDL DATA 0 PREBUSY VFD 60/*+2 VFD 60/120 BSYMSG BSSZ 2 DIS ,. IS BUSY . CALLENT BSSZ S.ENTRY CALLAREA BSSZ 100 BLOCKS VFD 60/16,60/32 BLKSIZE VFD 60/256 DEFAULT BLOCK SIZE * CREATE CAP CSPROC VFD 60/C.CLASS CAP BEADCC MAPENTS DATA 0 MAPSIZE DATA 0 SPFL DATA 0 SPEP DATA 0 VFD 60/C.LOCALC * GETCLIST CAP CCLIST VFD 60/C.ALLOC VFD 60/C.LOCALC CLISTL DATA 0 * CHGMAP DATA 0 VFD 60/C.CLASS MAPNUM DATA 0 MAPFCAP DATA 0 MAPFA DATA 0 MAPCM DATA 0 MAPWC DATA 0 * GENFIL CAP CFILE VFD 60/C.ALLOC NEWFILEC DATA 0 DATA 3 VFD 60/BLOCKS * GENCLASS CAP CCC DATA 0 DATA 0 * MOVE CAP MVECAP FROMCAP DATA 0 TOCAP DATA 0 DATA -0 * MOVEOBJ CAP CAPOUT VFD 60/C.MASTC WHERE DATA 0 OBJECT DATA 0 * SPACEOUT DATA 0 SPACEIN CAP DONATE CAP ALLOC VFD 60/C.ALLOC HOWMUCH DATA 0 SPACEOT CAP DONATE VFD 60/C.ALLOC CAP ALLOC DATA 0 * PROBE CAP PROBE PROBCAP DATA 0 PROBA DATA 0 * DELBLK CAP DELBLK DBLKCAP DATA 0 DBLKA DATA 0 * DELFIL CAP DELFIL DFILCAP DATA 0 LIST8 VFD 60/*+2 DATA 8 LISTWORD BSSZ 1 DELAREA EQU CALLAREA SNTCHA EQU CALLAREA CREATED DATA 0 EUSERRA DATA 0 * SAVEREG CAP SAVE VFD 60/*+1 BSSZ 16 RESTREG CAP RESTOR VFD 60/SAVEREG+2 * RETURNE CAP MODPC RETURNS DATA 0 .. CLASS CODE SKIPC DATA 0 .. NUMBER OF OCCURANCES TO SKIP RETURNP DATA 0 .. NEW VALUE OF P CNTR * RSHP CAP REDSHP RSHPCAP BSSZ 1 VFD 60/SHAPE DATA 1 SHAPE BSSZ 1 * SPACESUM DATA 0 STRDSCR BSSZ 2 ADDR BSSZ 1 COUNTX BSSZ 1 PAR BSSZ 15 PARS EQU PAR PFR VFD 60/C.READ VFD 60/C.CTEMP PFA DATA 0 VFD 60/FILEBUF PFCNT DATA 0 ERSPMADE DATA 0 FILEBUF BSS 20B ( SEE PF3 + 3 ) * CAPDIS CAP DSPCAP DISPLAY CAPABLITY CAPDISX BSSZ 1 * RTNINTER CAP USRER RETURN WITH INTERUPR ERROR VFD 60/E.PANIC RTNINTEN BSSZ 1 COMPUTED ERROR NUMBER * * * NREGS BSSZ 20B EJECT * AGAIN DATA 1 FIRST TIME FLAG * * READINT CAP READ VFD 1/1,29/2,30/C.MASTER VFD 60/0,60/SPCLX,60/1 * * DSPTTF CAP DSPCAP VFD 60/C.TTY * * GETTTY CAP CAPIN VFD 60/C.MASTER SPCLX BSSZ 1 VFD 60/C.CTEMP * * DSPTTY CAP DSPCAP VFD 60/C.CTEMP * TTF BSSZ 1 MO T + UNIQUE NAME OF LOCAL TTY * * TTYNUM DATA 0 USERRA VFD 60/FL USER DATA 0LEMPTY STACK BSSZ 1 CLLRCLS BSSZ 1 BSSZ 1 * * * Q.TLINE VFD 60/C.TLINE Q.TTYPE BSSZ 1 ( TYPE OF LINE COLLECTOR CALL ) VFD 30/MYTTBFSZ,30/MYTTBF * Q.TRTN VFD 30/MYTTBFSZ,30/MYTTBF VFD 30/0,30/0 * * MYTTBFSZ EQU 15 * MYTTBF BSSZ MYTTBFSZ * MYLNSV7 BSSZ 1 * SCRSZ BSS 0 END OF SCRATCH AREA * * READSELF CAP READ VFD 60/C.BEADCD VFD 60/0,60/0,60/SCRSZ * * INTSAVE CAP SAVE VFD 60/INTPACK INTREST CAP RESTOR VFD 60/INTPACK * * NSAVE CAP SAVE VFD 60/NREGS * NRESTORE CAP RESTOR VFD 60/NREGS TITLE STURGIS CODE * * XJ MACRO WHERE,CNT + VFD 12/0130B,18/WHERE,30/CNT ENDM * * ASCII MACRO TEXT DIS ,$_TEXT_$ ENDM * * XJR MACRO LOC,AUTH + VFD 12/0130B,18/LOC,12/1,18/1 VFD 60/AUTH ENDM * * CALL MACRO LOC + SB7 *+1 JP LOC ENDM * * * * * * BSSZ 1 PROCESS INITIAL CALL JP NEWINT NEW INTERRUPT HANDLER JP NEWERR NEW ERROR HANDLER * ENTRY XJ NSAVE SA4 CALLTYPE PICK UP HIDDEN PARAMB SB2 X4 LT B2,B0,ENTRYZ BAD HIDDEN PARAM SB3 B2-NENTVEC GT B3,B0,ENTRYZ BAD HIDDEN PARAM JP ENTRYX+B2 * ENTRYX JP ENTRYI BUILDER INITILIZER CALL JP INIT BEAD START UP JP BEADGO USER CALL JP ENTRYS SPECIAL INTERRUPT PROCESSING ( MAJ PAN ) * BSS 0 NENTVEC EQU *-ENTRYX * * * BUILDER INITILIZER CALL * ENTRYI XJ READSELF SET UP SCRATCH AREA XJ READINT GET INDEX OF SPECIAL TTY IN MASTER CLIST SA1 SPCLX SX6 X1+3 SA6 A1 SPCLX NOW POINTS TO TTY 0 XJ DSPTTF SA7 TTF TTF NOW CONTAINS MOT OF LOCAL TTY * * * ENTRYL XJ GETTTY GET TTY FILE FOR TTY AT TTYNUM XJ DSPTTY GET MOT OF TTY AT TTY NUM SA1 TTF BX1 X1-X7 COMPARE WITH LOCAL TTY + NZ X1,*+2 NO NG X1,*+2 MATCH XJ RETURNOP ( DONE INITILIZING ) * SA1 SPCLX STEP TO NEXT TTY SX6 X1+3 SA6 A1 SA1 TTYNUM ADVANCE TTYNUM SX6 X1+1 SA6 A1 JP ENTRYL * * * * * * * * MAJOR PANIC PROCESSING * ENTRYS SX6 1 SA6 RTOSN XJ RTOS READ TOP OF STACK SB2 SYSCLSBS BASE OF SYSTEM CLASS CODES SB1 SYSCLSCN COUNT OF SYSTEM CLASS ODES * ENTRYS1 LE B1,B0,ENTRYS2 SCAN AL SYSTEM CLASS ODES SX6 B2 SA6 CAPDISX SET UP TO DISPLAY CAP XJ CAPDIS SA2 CLLRCLS PICK UP CLASS CODE OF CALLER IX1 X2-X7 ZR X1,ENTRYS3 FOUND CALLERS CLASS, HENCE SYSTEM SB2 B2+1 SB1 B1-1 JP ENTRYS1 * * * CALLER IS NOT SYSTEM, SO NO ERROR RETURN * ENTRYS2 SX6 1 SA6 ERRCALL FLAG FOR SPECIAL RETURN JP INTERUPT NOW GO TO OLD INTERRUPT CODE * * CALLER IS SYSSTEM SO DO ERROR RETURN * ENTRYS3 SX6 1 SA6 RTNINTEN SET ERROR NUMBER FOR MAJOR PANIC XJ INTREST RESTORE REGISTERS XJ CLRII CLEAR INTERRUPT INHIBIT XJ RTNINTER RETURN WITH MAJOR PANIC ERROR EJECT * * * BAD HIDENT PARAM * ENTRYZ SA0 BADHMSG JP COMMANDD * BADHMSG ASCII (BAD HIDDEN PARAM, BEAD HERE ) * * * * * * HANDLE AN INTERRUPT * NEWINT XJ INTSAVE XJ SETESM SET ESM JUST IN CASE INTERRUPT AT NEWERR * BEFORE SET II SA1 INTDATUM PICK UP INTERRUPT DATUM NZ X1,ENTRYS MAJOR PANIC * SX6 B0 SA6 RTNINTEN SET ERROR NUMBER FOR MILD PANIC XJ INTREST RESTORE REGISTERS XJ CLRII CLEAR INTERRUPT INHIBIT XJ RTNINTER RETURN WITH INTERUPT ERROR * * * HANDLE AN ERROR * NEWERR XJ SETII XJ INTSAVE SA1 ERRCLASS PICK UP ERROR CLAS SX1 X1-E.PANIC NZ X1,ERRORC NOT INTERRUPT ERROR CLASS, OLD CODE XJ SETESM RESET ERROR SELECTION MASK SX6 1 SA6 ERRCALL FLAG FOR SPECIAL RETURN JP INTERUPT TREAT WITH OLD INTERRUPT CODE TITLE SUBROUTINES FOR STURGIS * * * OUTPUTS DISPLAY LINE, TEXT AT A0 * DLNOUT SX6 B7 SA6 MYLNSV7 CALL MYSET SB1 A0 SB2 100 CALL DISLINE CALL CRASCII CALL MYOUT SA1 MYLNSV7 SB7 X1 JP B7 * * * OUTPUTS ASCII LINE, DISCRIPTOR AT A0 * ALNOUT SX6 B7 SA6 MYLNSV7 SB1 A0 SB2 B0 CALL MVTOBF CALL MYOUT SA1 MYLNSV7 SB7 X1 JP B7 * * * ADDRESS OF STRING DESC IN B1 * RELOC IN B2 * * MOVES FROM MYTTBF * MVFMBF SA1 B1+B2 SA2 MYTTBF BX6 X2 SA6 A1+1 SX1 X1+B2 * LX6 60-3 NOW COMPUTE WORD COUNT SB3 X6 FROM PSEUDO CHARACTER COUNT MX2 3 BX6 X2*X6 LX6 3 + ZR X6,*+1 SB3 B3+1 EQ B0,B3,MVFMBF2 * SA2 A2+1 MOVE 1ST WORD BX6 X2 SA6 X1 * MVFMBF1 SB3 B3-1 MOVE SUBSEQUENT WORDS EQ B0,B3,MVFMBF2 SA2 A2+1 BX6 X2 SA6 A6+1 JP MVFMBF1 * MVFMBF2 JP B7 * * * ADDRESS OF STRING DESC IN B1 * RELOC IN B2 * * MOVES TO MYTTBF * MVTOBF SA1 B1+B2 SX1 X1+B2 SA2 A1+1 BX6 X2 SA6 MYTTBF SB3 11 SA1 X1 * MVTOBF1 BX6 X1 SA6 A6+1 SB3 B3-1 EQ B3,B0,MVTOBF2 SA1 A1+1 JP MVTOBF1 * MVTOBF2 JP B7 * * * SETS UP WITH NO BLANK COMP * MYSET SB4 MYTTBF SB5 MYTTBFSZ SB6 B0 JP STASCII * * * OUTPUTS THE BUFFER * MYOUT SX6 2 SA6 Q.TTYPE XJR Q.TLINE,Q.TRTN JP B7 TITLE SUBROUTINES TO CALL ASCII ROUTINES * * * * INSTALL DISPLAY CODE IN AN ASCII LINE * * B1 POINTS TO 1ST WORD OF DISPLAY CODE * B2 COUNT * * STOPS WHEN COUNT GOES TO ZERO OR ON ZERO CHARACTER * * B3 CHARS LEFT IN CURRENT WORD * X1 CURRENT WORD * A1 ADDRESS CURRENT WORC * A0 HOLDS RETURN * X2 6 BIT MASK * X3 WILL HOLD COUNT * B2 WILL HOLD A SHIFT COUNT DURING XLATION * X4 PORTION OF XLATE TABLE * DISLINE SA0 B7 SA1 B1 MX2 60-6 SB3 10 SX3 B2 * DISLINE1 ZR X3,DISLINE3 ALL DONE GT B3,B0,DISLINE2 SOME LEFT IN CURRENT WORD * SA1 A1+1 NEED A NEW WORD SB3 10 * DISLINE2 SB3 B3-1 SX3 X3-1 LX1 6 BX7 -X2*X1 ZR X7,DISLINE3 ZERO CHARACTER, ALL DONE * LX7 60-3 NOW BEGIN FANCY XLATION SB2 X7 WORD DISPLACEMENT SA4 DISASC+B2 BX7 X2*X7 LX7 3 SB2 X7 CHARACTER INCREMENT LX7 3 8*CHAR INC SB2 -B2 SB2 X7+B2 7*CHARINC LX4 B2,X4 POSITION WORD FROM TABLE LX4 4+7 REST OF SHIFT MX7 60-7 BX7 -X7*X4 NOW HAVE CHARACTER XLATED * SB7 DISLINE1 JP PKASCII PACK INTO LINE * DISLINE3 SB7 A0 JP B7 EXIT * * * * MACRO FOR CONSTRUCTIONG CONVERSION TABLE * TOASC MACRO S,T,U,V,W,X,Y,Z + VFD 4/0,7/S_B,7/T_B,7/U_B,7/V_B,7/W_B VFD 7/X_B,7/Y_B,7/Z_B ENDM * * * CONVERSION TABLE * DISASC TOASC 00,41,42,43,44,45,46,47 TOASC 50,51,52,53,54,55,56,57 TOASC 60,61,62,63,64,65,66,67 TOASC 70,71,72,20,21,22,23,24 TOASC 25,26,27,30,31,13,15,12 TOASC 17,10,11,04,35,00,14,16 TOASC 03,73,75,32,07,77,01,06 TOASC 76,02,34,36,40,37,76,33 EJECT * * * INSTALL OCTAL IN ASCII LINE * * DIGIT COUNT IN B1 * DATA WD IN X1 * * THE RIGHT MOST B1 DIGITS WILL PE PLACED IN ASCII LINE * OCTPK SA0 B7 SX2 B1 LX2 1 SX2 X2+B1 3*COUNT NOW IN X2 SB2 X2 SB2 -B2 SB2 B2+60 60-3*COUNT NOW IN B2 LX1 B2,X1 X1 NOW POSITIONED MX2 60-3 * OCTPK1 LE B1,B0,OCTPK2 ALL DONE SB1 B1-1 LX1 3 BX7 -X2*X1 * OCTPK1A SX7 ZROASC+X7 SB7 OCTPK1 JP PKASCII * OCTPK2 SB7 A0 JP B7 EJECT * * * INSTALL OCTAL IN ASCII LINE * * DIGIT COUNT IN B1 * DATAI WD IN X1 * * THE RIGHT MOST B1 DIGITS WILL BE PLACED IN ASCII LINE * WITH LEADING ZEROS REPLACED BY BLANKS * OCTBPK SA0 B7 SX2 B1 LX2 1 SX2 X2+B1 3*COUNT SB2 X2 SB2 -B2 SB2 B2+60 LX1 B2,X1 X1 NOW POSITIONED MX2 60-3 * OCTBPK1 LE B1,B0,OCTPK2 ALL DONE SB1 B1-1 LX1 3 BX7 -X2*X1 NZ X7,OCTPK1A SX7 BLNKASC SB7 OCTBPK1 JP PKASCII EJECT * * * INSTALL BLANKS IN ASCII LINE * * B1 BLANK COUNT * BLNKPK SA0 B7 * BLNKPK1 LE B1,B0,BLNKPK2 SB1 B1-1 SX7 BLNKASC SB7 BLNKPK1 JP PKASCII * BLNKPK2 SB7 A0 JP B7 TITLE ASCII PACKING ROUTINES * * * THIS PACKAGE FORMS ASCII LINES * * FORM OF A LINE IS A WORD CONTAINING PSEUDO CHARACTER * COUNT, COMPRESSED BLANKS COUNTED AS 2 CHARS, FOLLOWED * BY WORDS CONTAINING THE SYSTEXT. * * * IT HAS 4 ENTRY POINTS * * STASCII SET UP * B4 = 1ST WORD OF BUFFER ( CHAR COUNT WORD ) * B5 = TOTAL WORDS IN BUFFER ( INCL CHAR CNT ) * B6 = 0 NO BLANK COMPRESSION * .NE. 0 BLANK COMPRESSION * * PKASCII PACK A CHARACTER FROM X7 * BOTTOM 7 BITS ALL THAT ARE LOOKED AT * ( IGNORED IF BUFFER TOO FULL ) * * FNASCII FINISH THE LINE WITHOUT CR * * CRASCII FINISH THE LINE WITH CR * * * THIS PACKAGET MAINTAINS IST STATE IN REGISTERS * AS FOLLOWS * * A5 ADDRESS OF CHAR COUNT WD * X5 ALLOWED NO OF CHARS BEFORE BUFF TOO FULL * A6 ADDRESS OF WD BEROFR NEST WORD TO STORE * X6 PARTIAL PACKED WORD * * B4 BLANK COMPRESSION CONTROL * +1 NO BLANK COMPRESSION * 0 NO PREVIOUS BLANKS * -128+K K PREVIOUS BLANKS * * B5 PSEUDO CHARACTER COUNT * B6 BITS LEFT IN PARTIAL PACKED WORD * B7 RETURN * * X7 CHARACTER, WILL GET MODIFIED * X0 SCRATCH * * FREE REGISTERS ARE * * A0,A1,X1,A2,X2,A3,X3,A4,X4, B1,B2,B3 * EJECT * * CONSTANTS * BLNKASC EQU 000B BLANK BLNKFLG EQU 173B BLANK COUNT FLAG CRASC EQU 155B CR ZROASC EQU 20B ZERO * * * * INITIALIZE ASCII PACK ROUTINES * * * B4 ADDRESS OF 1ST WORD OF BUFFER * B5 SIZE OF BUFFER * B6 0 NO BLANK COMPRESSION * .NE. 0 BLANK COMPRESSION * * STASCII SA5 B4 A5 POINTS TO CHAR COUNT SA6 B4 A6 NOW PNTS TO WD BEFORE 1ST PCKED WD SX5 B5-1 NUMBER OF WORDS TO HOLD ACHARAS LX5 3 MAX CHAR COUNT SX5 X5-3 ALLOW ROOM FOR 2 BLNKS + CR SX6 11B INITIALIZE 1ST PACKED WORD SB5 B0 INITIALIZE PSEUDO CHARACTER COUNT TO 0 * SB4 1 INDICATE NO BLANK COMP + EQ B6,B0,*+1 NO BLANK COMPRESSION IT IS SB4 B0 NOPE, ITS TO BE BLANK COMPRESSION + SB6 56 INITIALIZE PARTIAL WORD BIT COUNT JP B7 EJECT * * * PACK A CHARACTER ROUTINE * PKASCII NG X5,PKASCII4 NOT ENOUGH ROOM MX0 60-7 BX7 -X0*X7 MASK THE CHARACTER GT B4,B0,PTASCII NO BLANK COMPRESSION * PKASCII1 SX0 X7-BLNKASC CHECK FOR BLANK ZR X0,PKASCII2 HAVE BLANK EQ B0,B4,PTASCII NOT A BLANK + NO PREVIOUS BLANK + SX0 *+1 JP FCASCII FORCE OUT BLANKS SB4 B0 SET TO NO PREV BLANKS JP PTASCII PUT THE CHARACTER * PKASCII2 EQ B0,B4,PKASCII3 HAVE A BLANK, SEE OF ANY PREV SB4 B4+1 YES, PREV, ADD OT COUNT LT B4,B0,PKASCII4 COUNT DID NOT OVERFLOW, SO EXIT SB4 B4-1 OVERFLOW + SX0 PKASCII3 JP FCASCII FORCE OUT BLANKS * PKASCII3 SB4 -128+1 SET TO 1 BLANK * PKASCII4 JP B7 EXIT EJECT * * * TERMINATE WITHOUT CR * FNASCII GE B4,B0,FNASCII1 NO PREVIOUS BLNKS SX7 B0 CLEAR X7 + SX0 *+1 JP FCASCII FORCE OUT PREV BLANKS * FNASCII1 LX6 B6,X6 SA6 A6+1 SX6 B5 SA6 A5 SX5 B0 JP B7 EJECT * * * TERMINATE WITH CR * CRASCII SX0 B7 SX7 CRASC PUT OUT CR + SB7 *+1 JP PTASCII SB7 X0 JP FNASCII1 FINISH UP TITLE ASCII PACKING INTERNAL ROUTINES * * * THIS IS BASIC CHARACTER PUT ROUTINE * PTASCII LX6 7 BX6 X6+X7 INSTALL CHARACTER SB6 B6-7 DECREMINT BIT COUNT SX5 X5-1 DECREMENT INSTALLED CHARACTER COUNT SB5 B5+1 INCREMENT PSEUDO CHAR COUNT EQ B0,B6,PTASCII1 FULL WD JP B7 * PTASCII1 SA6 A6+1 FULL WD SX6 B0 SET WDEMPTY SB6 56 SET BIT COUNT JP B7 EJECT * * FORCE OUT BLANKS * * DOES NOT RESET B4 * DEPENDS ON 17 BITS ONLY IN X7 * * FCASCII LX0 18 . SAVE BX0 X0+X7 . B7 LX0 18 . AND SX7 B7 . X7 BX0 X0+X7 . IN X0 * SB4 B4+128-2 LE B4,B0,FCASCII2 2 OR LESS BLANKS * SX7 BLNKFLG BLANK FLAG + SB7 *+1 JP PTASCII SX7 B4+2 BLANK COUNT + SB7 *+1 JP PTASCII * FCASCII1 SB7 X0 RESET LX0 60-18 B7 SX7 X0 AND X7 LX0 60-18 SB4 X0 JP B4 * * * COUNT 2 OR LESS * FCASCII2 SX7 BLNKASC BLANK + SB7 *+1 JP PTASCII LT B4,B0,FCASCII1 COUNT WAS ONLY 1 SB7 FCASCII1 JP PTASCII PUT OUT ONE MORE BLANK TITLE OLD CODE * * * * RE SET XJ FOR JIM GRAYS CODE * * XJ MACRO LOC + VFD 12/0130B,18/LOC ENDM EJECT TITLE BEAD ENTRY POINT LIST L LIST R XJ MACRO WHERE,CNT + VFD 12/0130B,18/WHERE,30/CNT ENDM BEADGO XJ SETII SA4 3 RA OF CALLER SA5 4 CLIST RA OF CALLER SB2 X4 SB3 X5 SX6 X4 SA6 USERRA JP CALLED INIT SA1 TTYNUM LX1 2 SX6 X1 SA6 WRITEU+2 SX6 X6+3 SA6 WRITESP+2 XJ SETII XJ SETESM SA0 HELLO CALL DLNOUT + SA0 *+1 JP COMMANDD ASCII (ENTER USER NAME) HELLO ASCII (BEAD VERSION 'VER') BEADHERE ASCII (BEAD HERE) CALLED SX3 B6-N.CALLS PL X3,BADCALLX NG B6,BADCALLX JP JTABLE2+B6 JTABLE2 JP READD JP WRITED JP DELD JP CALL JP STOP JP TTYOUT JP TTYIN JP CHAROUT JP LOCK 8 JP UNLOCK SB4 TTYRTN JP FIND 10 JP EDIT 11 EDIT A SPECIFIED LINE * WITH THE LINE EDITOR JP COPYCL 12 .. COPY BEAD CLIST BSS 0 N.CALLS EQU *-JTABLE2 TITLE BEAD REQUEST PROCESSOR COPYCL SX6 B3+B7 SA6 MOVEOPS+1 SX6 0 COPYCLL SA6 OPTAR SA6 OPSRC XJ MOVEOPS SA1 OPTAR SX6 X1+1 SX7 X6-24 NG X7,COPYCLL SX6 C.LOCALC SA6 MOVEOPS+1 XJ RETURNOP LOCK XJ DIDLE XJ RETURNOP UNLOCK XJ UNDIDLE XJ RETURNOP READD XJ DIDLE GET/HANG SX6 1 SA6 HAVEDIDL SB4 READD2 JP FIND READD2 SA3 B2+B1 SX4 X3 NG X4,BUSY CONTINUE MX6 1 LX6 18 BX6 X6+X3 SA6 A3 SB4 READD3 JP UPDATE READD3 SA3 HAVEDIDL ZR X3,*+2 XJ UNDIDLE SX6 0 SA6 HAVEDIDL SA3 B2+B1 MX0 59 LX0 17 BX6 X0*X3 SA6 A3 XJ RETURNOP BUSY SA3 HAVEDIDL ZR X3,*+2 XJ UNDIDLE XJ SAVEREG BX6 X1 SA6 BSYMSG BX6 X2 SA6 A6+1 CALL MYSET SB1 BSYMSG SB2 8 CALL DISLINE SB1 BSYMSG+1 SB2 8 CALL DISLINE SB1 BSYMSG+2 SB2 50 CALL DISLINE CALL CRASCII CALL MYOUT JP COMMANDX SX6 0 SA6 HAVEDIDL WRITED XJ DIDLE SX6 1 SA6 HAVEDIDL SB4 WRITED2 JP UPDATE WRITED2 SA3 HAVEDIDL ZR X3,*+2 XJ UNDIDLE SX6 0 SA6 HAVEDIDL XJ RETURNOP TTYOUT SA1 B1+B2 SX6 X1+B2 RELOCATE STRING POINTER SA6 STRDSCR SA1 A1+1 . GET COUNT BX6 X1 SX1 X1-100 . BUT LIMIT IT TO 100 CHARS. + NG X1,*+1 SX6 100 SA6 A6+1 SA0 STRDSCR CALL ALNOUT JP TTYRTN * TTYIN SX6 1 ( INPUT A LINE ) SA6 Q.TTYPE XJR Q.TLINE,Q.TRTN SX6 B1+B2 SA6 STRDSCR SB1 STRDSCR SB2 B0 CALL MVFMBF * TTYRTN XJ NRESTORE XJ RETURNOP * CHAROUT BX6 X1 SA6 MYTTBF SX6 3 ( CHAR OUT ) SA6 Q.TTYPE XJR Q.TLINE,Q.TRTN JP TTYRTN * * EDIT IS CALLED WITH B1 SET TO A STRING DESCRIPTOR AND * B6 SET TO 11 SPECIFYING A EDIT REQUEST * TO THE BEAD * BY THE TIME IT GETS HERE B2 = RA OF CALLER * * THE LINE IS FIRST CHECKED FOR VALIDITY * IT IS TRUNCATED AT THE FIRST NON GRAPHIC CHARACTER * OR AT 88 CHARACTERS WHICHEVER COMES FIRST * * UNHAPPILY IT DOESNT DO BLANK COMPRESSION * * UNLIKE GETLINE IT UPDATES THE STRING DESCRIPTOR IN THE * CALLERS SPACE SO THAT IT IS CORRECT * * * * CODE IS NOW MY VERSION ( HES ) TO CALL LINE COLLECTOR * EDIT CALL MVTOBF SX6 4 ( EDIT ) SA6 Q.TTYPE XJR Q.TLINE,Q.TRTN CALL MVFMBF JP TTYRTN * * DELD XJ DIDLE SX6 1 SA6 HAVEDIDL SB4 DEL2 JP EVICT DEL2 SX0 B0 SA6 B2+B1 SB4 WRITED2 JP UPDATE BADCALL XJ UNDIDLE SX6 0 SA6 HAVEDIDL + SA0 *+1 JP COMMANDD ASCII (BAD SUB) CALL SA3 CREATED NZ X3,CMDERR XJ DIDLE SX6 1 SA6 HAVEDIDL SB7 B0 SB2 B0 SB1 CALLENT SB3 C.CTEMP SB4 CALL2 SX6 1 SA6 CALLAREA JP FIND CALL2 XJ READCALL,1 READ INITIAL PARAMTERS JP BADCALL SB3 C.CLASS SA1 CALLAREA NZ X1,BADCALL SA1 A1+2 SA2 A1+1 SB4 CALL4 SX6 1 SA6 FLAGG JP FIND CALL4 SA1 CALLAREA+4 NUMBER OF MAP ENTRIES SX6 0 SA6 FLAGG SA2 A1+1 SIZE OF MAP BX6 X1 LX7 X2 SA6 MAPENTS SA7 MAPSIZE SA1 A2+1 SPFL SA2 A1+1 SPEP BX6 X1 LX7 X2 SA6 SPFL SA7 SPEP SA2 A2+1 BX6 X2 SA6 CLISTL SX6 -1 SA6 MAPNUM XJ GETCLIST SA2 A2+1 GET SIXE OF LOCAL FILE BX6 X2 SA6 FILELEN XJ GETFIL XJ MAKEBLK XJ CREATE CREATE SUB PROC SX6 1 SA6 CREATED MAKEMAP SA1 MAPNUM SX6 X1+1 SA6 A1 SX6 C.CTEMP SA6 MAPFCAP SA1 A2+1 SA2 A1+1 NG X1,ENDMAP SB3 C.CTEMP SB4 MAP2 NZ X1,FIND SX6 C.SCRFIL SA6 MAPFCAP MAP2 SA1 A2+1 FILE ADDRESS SA3 A1+1 CM ADDRESS SA4 A3+1 WORD COUNT SA2 A4+1 ROF + PL X4,*+1 .. SENSE OLD MAPS SX4 X4 IX4 X4-X3 .. COMPUTE WORD COUNT BX6 X1 LX7 X3 SA6 MAPFA SA7 MAPCM BX6 X4 SX7 M.MPCHRW SX0 C.MASTC + ZR X2,*+1 . IF FLAG = 0, ENTRY IS READ-WRITE SX7 M.MPCHRO . OTHERWISE, ITS READ ONLY MX1 1 LX7 30 BX7 X7+X0 BX7 X7+X1 SA6 MAPWC SA7 CHGMAP XJ CHGMAP JP MAKEMAP ENDMAP SA2 A2-1 SX6 13 SA6 CINDX SX6 C.CTEMP SA6 OPSRC FILLCLST SA1 A2+1 ZR X1,FILLED SA2 A1+1 SB3 C.CTEMP SB4 FILL2 JP FIND FILL2 SA5 CINDX SX6 X5+1 SA6 A5 XJ MOVEOPS JP FILLCLST FILLED XJ MAKECALL MAKE CALL OPERATION SA1 MOVECAPS FILLEDL SX6 X1 AX1 30 SX7 X1 LX1 31 PL X1,NOTIND SX1 C.MASTC LX7 30 MX0 1 BX7 X7+X0 BX7 X7+X1 NOTIND BSS 0 SA6 OPTAR SA7 OPSRC XJ MOVEOPS SA1 A1+1 PL X1,FILLEDL SA1 HAVEDIDL ZR X1,*+2 XJ UNDIDLE SX6 0 SA6 HAVEDIDL RECALL2 SA4 PAR+3 SA5 A4+1 SA1 CREATED ZR X1,NOSUBP XJ CALLSUB GOODPCNT SA0 BEADHERE SA1 CREATED ZR X1,COMMANDD XJ KILLSUB SX6 B0 SA6 A1 XJ KILLSCRB XJ KILLSCRF XJ KILLCLST JP COMMANDD * KILLSUB CAP DELSUB VFD 60/C.CLASS KILLSCRB CAP DELBLK VFD 60/C.SCRFIL DATA 0 .. FILE ADDRESS 0 KILLSCRF CAP DELFIL VFD 60/C.SCRFIL KILLCLST CAP DELCL VFD 60/C.LOCALC NOSUBP SA0 *+1 JP COMMANDD ASCII (NO SUBPROCESS) STOP SA0 *+1 JP COMMANDD ASCII (..STOP) SETBLK SA3 PARS+1 SB4 SETBLK2 JP CNVTA SETBLK2 SX6 X1 SA6 BLKSIZE SA0 NULLLINE JP COMMANDD PONE SX6 1 SA6 COUNTX JP DSPYL DISPLAY SA3 PARS+1 ZR X3,PONE SB4 DSPY2 JP CNVTA DSPY2 SA3 A3+1 SX6 X1 SA6 ADDR SB4 DSPY3 JP CNVTA DSPY3 SX6 X1 + NZ X6,*+1 SX6 1 ASSUME 0 IS 1 SA6 COUNTX DSPYL SA1 ADDR SX6 X1+1 SA6 A1 SA3 X1 SB7 DSPYE JP CNVTB DSPYE SA0 PRECNVTS SA1 COUNTX SX6 X1-1 MX7 60-5 BX6 -X7*X6 SA6 A1 ZR X6,COMMANDA NG X6,COMMANDA CALL ALNOUT JP DSPYL PF SA1 PARS+1 SA2 PARS+2 SB7 C.CTEMP SB2 B0 SB1 DELAREA SB3 B0 SB4 PF1 JP FIND PF1 SA3 PARS+3 SB4 PF2 JP CNVTA PF2 SX6 X1 SA6 PFA SA3 A3+1 SB4 PF3 JP CNVTA PF3 SX6 X1 + NZ X6,*+1 SX6 1 ASSUME 0 IS 1 SX1 X6-20B + NG X1,*+1 SX6 20B RESTRICT COUNT TO 20B ( SEE FILEBUF ) SA6 PFCNT SA6 COUNTX XJ PFR READ FILE SX6 FILEBUF SA6 ADDR JP DSPYL EC SA1 PARS+1 BX6 X1 SA6 ENTFC SA3 A6 SB4 EC1 JP CNVTA EC1 BX6 X1 SA6 ENTFA SA1 PARS+2 BX6 X1 SA6 ENTFC SA3 A6 SB4 EC2 JP CNVTA EC2 SA2 ENTFA LX2 30 BX6 X2+X1 SA6 ENTFC SA3 PARS+3 SB4 EC3 JP CNVTA EC3 SA2 ENTFC BX6 X2 SA6 X1 SA0 NULLLINE JP COMMANDD ENTER XJ DIDLE SX6 1 SA6 HAVEDIDL SA1 PARS+1 SA2 PARS+2 SB1 DELAREA SB2 B0 SB3 C.CTEMP SB7 B0 SB4 ENT2 JP FIND ENT2 SA3 PARS+5 SB4 ENT3 JP CNVTA ENT3 BX6 X1 SA6 ENTFA SA4 PARS+3 BX6 X4 SA6 ENTFT SA3 A6 SB4 ENT4 JP CNVTA ENT4 BX6 X1 SA6 ENTFC SA3 PARS+4 BX6 X3 SA6 ENTFT SA3 A6 SB4 ENT5 JP CNVTA ENT5 SA2 ENTFC LX2 30 IX6 X1+X2 SA6 A2 XJ ENTERF SA1 HAVEDIDL ZR X1,*+2 XJ UNDIDLE SX6 0 SA6 HAVEDIDL SA0 NULLLINE JP COMMANDD TITLE BASIC SUBROUTINES FOR CONVERSIONS .. DIRECTORY HANDLING CNVTA MX0 54 SX2 0 SX1 0 CNVTA1 ZR X3,CNVTA2 LX3 6 BX6 -X0*X3 BX3 X3-X6 SX6 X6-1R0 NG X6,ADDRA LX2 3 IX2 X2+X6 EQ CNVTA1 ADDRA SA2 USERRA CNVTA2 IX1 X1+X2 SX2 0 SA3 A3+1 NZ X3,CNVTA1 JP B4 CNVOCT2 MX0 57 BX6 -X0*X3 SX6 X6+16 AX3 3 BX3 -X0*X3 SX3 X3+16 LX3 7 BX6 X6+X3 JP B7 CNVTB MX7 57 SB4 -4 CNVTB1 SB2 5 SX6 0 CNVTB2 LX3 3 BX4 -X7*X3 SX4 X4+16 LX6 7 BX6 X6+X4 SB2 B2-1 NZ B2,CNVTB2 LX6 21 SA6 CNVTS+4+B4 SB4 B4+1 NZ B4,CNVTB1 SX7 155B LX7 14 BX6 X6+X7 SA6 A6 .. ADD CR JP B7 .. RETURN FIND MX0 42 SB5 B0 SX5 B0 MX7 48 BX1 X0*X1 BX2 X2*X7 SX6 B2+B1 SA6 CMADR NZ X2,FINDL SA2 USER FINDL SX6 X5 SB5 B5+1 SA6 FILEADR SX5 X5+S.ENTRY XJ READENT,1 JP NOENTRY SA3 B2+B1 SA4 A3+1 BX3 X0*X3 BX4 X4*X7 BX3 X3-X1 BX4 X4-X2 NZ X3,FINDL NZ X4,FINDL SX6 B5-1 SX7 C.MASTC MX0 1 LX6 30 BX6 X6+X0 BX6 X6+X7 SA6 FROMCAP SX6 B3+B7 SA6 TOCAP XJ MOVE SA3 A3 LX3 54 AX3 54 NZ X3,RTNFIND SA3 A4+2 AX3 30 SX7 B0 ZR X3,RTNFIND SA6 PROBCAP SA7 PROBA SRCHB XJ PROBE IX7 X7+X3 SA7 A7 ZR X6,SRCHB IX7 X7-X3 LX3 30 BX7 X7+X3 SA7 A3 RTNFIND JP B4 RETURN NOENTRY SX5 M.NULL*4 SB5 M.NULL FINDE SX6 X5 SX5 X5+S.ENTRY SB5 B5+1 SA6 FILEADR XJ READENT,1 JP FULLDIR SA3 B2+B1 BX3 X0*X3 NZ X3,FINDE SX6 B5-1 SA6 WHERE SX6 B3+B7 SA6 GENCLASS+1 SA6 OBJECT SA6 NEWFILEC SA5 FLAGG NZ X5,NEWCLASS XJ GENFIL SX3 0 FILE TYPE JP FINDEE NEWCLASS XJ GENCLASS SX3 5 CLASS CODE TYPE FINDEE XJ MOVEOBJ SX6 B5-1 BX7 X2+X6 BX6 X1+X3 SA6 A3 SA7 A6+1 SX6 B0 SA6 A7+1 SA3 BLKSIZE SX6 X3 LX6 30 SA6 A6+1 UPDATE SX7 B1+B2 SA3 X7+1 MX0 48 BX6 -X0*X3 LX6 2 * S.ENTRY SA6 FILE SA7 CM FORCEU XJ WRITEIT * UPDATE DIRECTORY ENTRY JP B4 RETURN EVICT SX5 0 FILE ADDDRESS SX4 B1+B2 SA4 X4+3 GET BLOCK SIZE AX4 30 GET BLOCK SIZE SX6 B7+B3 SA6 RSHPCAP XJ RSHP SA1 SHAPE SA6 PROBCAP SA6 DBLKCAP SA6 DFILCAP EVICT1 BX6 X5 SA6 PROBA SA6 DBLKA XJ PROBE IX5 X5+X4 ZR X6,EVICT2 IX6 X6-X1 CHECK IF THIS IS IT NG X6,EVICT1 XJ DELFIL JP B4 RETURN EVICT2 XJ DELBLK JP EVICT1 TITLE COMMAND PROCESSOR * * * COMMANDD CALL DLNOUT JP COMMANDX * COMMANDA CALL ALNOUT JP COMMANDX * COMMANDX NO INONLY SX6 1 INPUT A LINE SA6 Q.TTYPE XJR Q.TLINE,Q.TRTN XJ RESTREG SA3 MYTTBF+1 SA0 0 MX0 53 SB5 60 SB4 8 LX3 4 SX6 B0 SA6 PAR DUP 10,1 SA6 A6+1 CMDL LX3 7 BX7 -X0*X3 LX7 60-3 BEGIN FANCY EXPENSIVE XLATION SA4 X7+TTYCDC BX7 X0*X7 LX7 3 SB6 X7 CHAR DISPLACEMENT LX7 3 8 * CHAR DISPLACEMENT SB6 -B6 SB6 B6+X7 7 * CHAR DISPLACEMENT LX4 B6,X4 LX4 4+7 REST OF SHIFT BX4 -X0*X4 NOW HAVE THE CHARACTER SX7 X4-1R, SB4 B4-1 NZ B4,CHKX7 SA3 A3+1 LX3 4 SB4 8 CHKX7 ZR X7,ENDPAR ZR X4,ENDPAR LX6 6 BX6 X6+X4 SB5 B5-6 JP CMDL ENDPAR LX6 X6,B5 SA6 PAR+A0 SA0 A0+1 SX6 A0-9 PL X6,TOOMANY ZR X4,GETCMD SB5 60 SX6 B0 JP CMDL GETCMD SB4 N.CMD SA3 PAR CHKCMD ZR B4,CMDERR SA4 B4+CMDBCD-1 BX4 X4-X3 SB4 B4-1 NZ X4,CHKCMD JP JTABLEC+B4 * * * TOCDC MACRO S,T,U,V,W,X,Y,Z + VFD 4/0,7/S_B,7/T_B,7/U_B,7/V_B VFD 7/W_B,7/X_B,7/Y_B,7/Z_B ENDM * * * TTYCDC TOCDC 55,66,71,60,53,74,67,64 TOCDC 51,52,47,45,56,46,57,50 TOCDC 33,34,35,36,37,40,41,42 TOCDC 43,44,63,77,72,54,73,75 TOCDC 76,01,02,03,04,05,06,07 TOCDC 10,11,12,13,14,15,16,17 TOCDC 20,21,22,23,24,25,26,27 TOCDC 30,31,32,61,76,62,70,65 TOCDC 64,01,02,03,04,05,06,07 TOCDC 10,11,12,13,14,15,16,17 TOCDC 20,21,22,23,24,25,26,27 TOCDC 30,31,32,51,52,55,55,55 TOCDC 55,55,55,55,55,55,55,55 TOCDC 55,55,55,55,55,00,55,55 TOCDC 55,55,55,55,55,55,55,55 TOCDC 55,55,55,55,55,55,55,55 * * * JTABLEC JP CALLCMD JP CALLCMD JP SETBLK JP SNATCH JP SNATCH JP DELETE JP DELETE JP CONTINUE JP READD JP SETUSER JP ENTER JP DISPLAY JP RECALL JP TTYRTN JP STOPBEAD JP VIEW JP PF JP EC JP CLEAN JP RECOVER JP CLEAR JP RESTORE JP LIST JP SPACE JP TRIM JP BYEBEAD CMDBCD DATA 0LCALL DATA 0LC DATA 0LBLOCK DATA 0LSNATCH DATA 0LS DATA 0LDELETE DATA 0LK DATA 0LCONTINUE DATA 0LTRY DATA 0LUSER DATA 0LE DATA 0LP DATA 0LRECALL DATA 0LRETURN DATA 0LSTOP DATA 0LVIEW DATA 0LPF DATA 0LEC DATA 0LPURGE DATA 0LRECOVER DATA 0LCLEAR DATA 0LRESTORE DATA 0LLOGOUT DATA 0LSPACE DATA 0LTRIM DATA 0LBYEBEAD N.CMD EQU CMDBCD-JTABLEC CLEAR SA1 PAR+1 * GET NAME ZR X1,CLEAR1 * CLEAR DIDDLE SA2 PAR+2 * GET USER NAME NZ X2,*+2 SA2 OPERATE * IF ZERO, USER OPERATE + XJ DIDLE * GET DIRECTORY SX6 1 SA6 HAVEDIDL * SET FLAG SB1 DELAREA * SCRATCH SB3 C.CTEMP SB4 CLEAR3 * RETURN SB2 B0 SB7 B0 EQ FIND * GET EVENT CHANNEL CLEAR3 SA3 HAVEDIDL ZR X3,*+2 XJ UNDIDLE BX6 X6-X6 SA6 A3 CLEAR4 XJ CLR,1 JP CLEAR5 EQ CLEAR4 * CLEAR EVENT CHANNEL CLEAR1 XJ CLRD,1 JP CLEAR5 EQ CLEAR1 * GET ALL THE DIDDLES CLEAR5 SA0 *+1 JP COMMANDD ASCII CLEARED RESTORE SA1 ERRCALL ZR X1,RESTORE2 SX6 B0 .. CLEAR FLAG SA6 A1 XJ INTREST XJ SPRETN * SPRETN VFD 60/C.SPRET * RESTORE2 XJ INTREST XJ RETURNOP RETURN RECOVER SA1 PAR+1 * GET NAME ZR X1,RECOVER1 * IF ZERO, DIDDLE SA2 PAR+2 * USER NAME NZ X2,*+2 SA2 OPERATE * IF ZERO, USER OPERATE XJ DIDLE * GET DIRECTORY SX6 1 SA6 HAVEDIDL * SET FLAG SB1 DELAREA SB2 B0 SB7 B0 SB3 C.CTEMP SB4 RECOVER2 EQ FIND * GET EVENT CHANNEL RECOVER2 SA3 HAVEDIDL ZR X3,*+2 XJ UNDIDLE BX6 X6-X6 SA6 A3 XJ RECVER EQ RECOVER3 RECOVER1 XJ UNDIDLE RECOVER3 SA0 NULLLINE EQ COMMANDD CLEAN XJ FIXPC XJ JUMPRET SA0 NULLLINE INCASE AM TOP JP COMMANDD LIST XJ DIDLE SB1 DELAREA SB2 0 SB7 C.CTEMP SB3 0 SA1 NULL SA2 OPERATE SB4 LISTL JP FIND LISTL XJ READENT,1 JP LOGEDOUT SA1 USER SA2 DELAREA+1 SA3 FILEADR SX6 X3+4 SA6 A3 MX6 48 BX2 X6*X2 BX2 X2-X1 NZ X2,LISTL SA1 DELAREA AX3 2 SX7 X3 SX6 C.MASTC LX7 30 MX0 1 BX7 X7+X0 BX7 X7+X6 SX6 C.CTEMP SA6 TOCAP SA7 FROMCAP ZR X1,LISTL MX0 54 BX0 -X0*X1 NZ X0,LISTL XJ MOVE BRING IN CAP + SB4 *+1 JP EVICT SX6 0 SA6 DELAREA SB4 LISTL JP UPDATE LOGEDOUT XJ UNDIDLE CALL MYSET SB1 USER SB2 8 CALL DISLINE CALL CRASCII CALL MYOUT SA0 LISTM SA1 DEFAULTU BX6 X1 SA6 USER XJ WRITEU JP COMMANDD LISTM ASCII (LOGGED OUT) TRIM XJ DSPSPACE SA1 DELAREA MX0 30 BX0 -X0*X1 AX1 30 .. SPACE RESERVED IX6 X1-X0 .. -UNUSED SPACE BX7 -X6 SA7 SPACEOUT SA6 HOWMUCH NZ X6,GOSPACE + SA0 *+1 JP COMMANDD ASCII (ZERO) SPACE SA3 PARS+1 SB4 SPACE2 JP CNVTA SPACE2 BX6 X1 BX7 X6 SA7 SPACEOUT SA6 HOWMUCH GOSPACE XJ DIDLE SA1 NULL SA2 OPERATE SB2 B0 SB3 B0 SB7 C.CTEMP SB1 DELAREA + SB4 *+1 JP FIND SA1 SPACEOUT SA4 DELAREA+3 IX6 X4-X1 NG X6,TOOMUCH SA6 A4 + SB4 *+1 JP UPDATE SA1 SPACEOUT PL X1,SPCIN BX6 -X1 . SET UP FOR DONATION IN REVERSE SA6 SPACEOT+3 XJ SPACEOT EQ SPCIN2 SPCIN XJ SPACEIN SPCIN2 SX6 C.READ SA6 WRITESP XJ WRITESP SA1 SPACEOUT SA2 SPACESUM IX6 X1+X2 SA6 A2 SX6 C.WRITE SA6 WRITESP XJ WRITESP XJ UNDIDLE SA0 NULLLINE JP COMMANDD TOOMUCH XJ UNDIDLE SA0 *+1 JP COMMANDD ASCII (TOO MUCH) VIEW SA3 PARS+1 SB4 VIEW2 JP CNVTA VIEW2 SX6 X1 + NZ X6,*+1 SX6 1 SA6 RTOSN XJ RTOS SX6 STACK SA6 ADDR SX6 1 SA6 COUNTX JP DSPYL RECALL XJ SETPCNT XJ JUMPRET JUMP BACK JP RECALL2 INCASE AM TOP SETPCNT CAP MODPC CAP BEADCC DATA -1 VFD 60/RECALL2 SETUSER SA1 PAR+1 SA2 USER BX0 X2 BX6 X1 SA6 USER XJ WRITEU SA3 DEFAULTU BX2 X2-X3 ZR X2,NOONE BX6 X0 SA6 BSYMSG CALL MYSET SB1 BSYMSG SB2 8 CALL DISLINE SB1 WASON SB2 20 CALL DISLINE CALL CRASCII CALL MYOUT NOONE SA0 REMEMBER JP COMMANDD REMEMBER ASCII (REMEMBER TO LOGOUT) WASON ASCII ( WAS ON ) CALLCMD SA1 PAR+1 SA2 PAR+2 JP CALL SNATCH XJ DIDLE SX6 1 SA6 HAVEDIDL SA1 PAR+1 SA2 PAR+2 SB2 B0 SB1 SNTCHA SB3 B0 SB7 C.CTEMP SB4 SNTCH2 JP FIND SNTCH2 SA1 SNTCHA MX6 59 LX6 17 BX6 X6*X1 MAKE NON BUSY SA6 A1 SB4 SNTCH3 JP UPDATE SNTCH3 SA3 HAVEDIDL ZR X3,*+2 XJ UNDIDLE SA0 NULLLINE SX6 0 SA6 HAVEDIDL JP COMMANDD DELETE XJ DIDLE SX6 1 SA6 HAVEDIDL SB1 DELAREA SB2 B0 SB3 C.CTEMP SB7 B0 SB4 DELT2 SA1 PAR+1 SA2 PAR+2 JP FIND DELT2 SB4 DELT3 JP EVICT DELT3 SX6 0 SA6 DELAREA SB4 SNTCH3 JP UPDATE NULLLINE ASCII OK STOPBEAD XJ CLRII PS TOOMANY SA0 *+1 JP COMMANDD ASCII (TO MANY) CMDERR SA0 *+1 JP COMMANDD ASCII (??NO??) BADCALLX XJ SAVEREG SA0 *+1 JP COMMANDD ASCII (BAD ACT) BADENTRY SA0 *+1 JP COMMANDD ASCII (SYS ERR) ERRORC XJ SETII XJ SETESM .. SET ESM SX7 1 SA7 ERRCALL SA1 3 SX6 X1 SA6 EUSERRA + NZ X6,*+1 MX7 1 SA7 A7 SA3 6 + SB7 *+1 JP CNVOCT2 SA3 7 LX6 6*7 BX7 X6 + SB7 *+1 JP CNVOCT2 SX5 14B LX5 5*7 BX7 X7+X5 LX6 3*7 BX7 X7+X6 AX5 21 BX7 X7+X5 SA3 7 AX3 18 + SB7 *+1 JP CNVOCT2 BX7 X7+X6 SA7 LISTWORD SA1 HAVEDIDL ZR X1,ERROR2 XJ UNDIDLE SX6 0 SA6 A1 ERROR2 SA0 LIST8 CALL ALNOUT SA0 ERRMSG CALL DLNOUT SA1 6 SX1 X1-6 ZR X1,RTRNERR WATCH OUT FOR SPACE EXHAUSTED MAKEIT2 SX6 0 SA6 FLAGG SA1 ERSPMADE NZ X1,DELIT SA1 6 SA2 7 XJ MAKEERSP SX6 1 SA6 ERSPMADE XJ MAKEERMP XJ CALLERSP DELIT XJ DELERSP SX6 0 SA6 ERSPMADE RTRNERR XJ CLRII SA1 EUSERRA SX6 X1 SA6 USERRA NZ X1,INONLY + SA0 *+1 JP COMMANDD ASCII (BEAD ERROR) ERRMSG ASCII ( ERROR .. BEAD HERE) TITLE CONSTANTS MAKEERSP CAP CSPROC CAP ERRORC CAP BEADCC VFD 60/1,60/50,60/2000B,60/32 VFD 60/C.BCLIST MAKEERMP CAP MPCHRO CAP ERRORC DATA 0 CAP ERROR DATA 0,0,2000B CALLERSP CAP CERROR DELERSP CAP DELSUB CAP ERRORC CLRII CAP CLRIIB SETII CAP CLRIIB .. SHOULD BE SETIIB TO INHIBIT INTERUPTS * JUMPRET CAP JUMP CAP BEADCC DATA -1 JUMP TO FIRST INCARNATION SETESM CAP ESMLOC VFD 60/*+1 VFD 60/-0 INTERUPT SA1 3 SX6 X1 SA6 USERRA XJ CLRII + SA0 *+1 JP COMMANDD ASCII (PANIC .. BEAD HERE) * * BYEBEAD XJ FIXPCBY FORCE TO BYEBEADP XJ JUMPRET BYEBEADP XJ RETURNOP NOW RETURN TO BUILDER * * FIXPCBY CAP MODPC CAP BEADCC DATA -1 VFD 60/BYEBEADP * * CLR CAP GETEVF VFD 60/C.CTEMP RECVER VFD 60/C.SENDE VFD 60/C.CTEMP VFD 60/3 * EVENT UNDIDLE VFD 60/C.SENDE CAP SYSLOC VFD 60/3 EVENT DIDLE VFD 60/C.HANG CAP SYSLOC CLRD CAP GETEVF CAP SYSLOC RETURNOP CAP RETURN CALLSUB VFD 60/C.CALLSP READCALL VFD 60/C.READ VFD 60/C.CTEMP DATA 0 VFD 60/CALLAREA VFD 60/100 GETFIL CAP CFILE VFD 60/C.ALLOC VFD 60/C.SCRFIL VFD 60/1 VFD 60/FILELEN MAKEBLK CAP CBLK VFD 60/C.SCRFIL VFD 60/0 FILE ADDRESS MAKECALL CAP MKOPR VFD 60/C.ALLOC VFD 60/C.CALLSP VFD 60/0 VFD 60/C.CLASS DATA 0 MOVECAP MACRO FROM,TO,I + VFD 1/0,1/I,28/C.FROM,30/TO ENDM MOVECAPS MOVECAP CALLSP,2 MOVECAP ALLOC,0 MOVECAP BEADCC,7,1 MOVECAP CALLBD,1,1 MOVECAP LOCALC,10 MOVECAP SCRFIL,12 MOVECAP CLASS,13 MOVECAP READ,3 MOVECAP WRITE,4 MOVECAP SENDE,5 MOVECAP HANG,6 * NEXT WORD MUST BE NEGATIVE FULLDIR SA0 *+1 JP COMMANDD ASCII ( FULL) FIXPC CAP MODPC CAP BEADCC DATA -1 VFD 60/GOODPCNT * DSPSPACE CAP DSPAB VFD 60/C.ALLOC VFD 60/DELAREA VFD 60/5 NULL DATA 0LNULL DEFAULTU DATA 0LEMPTY OPERATE DATA 0LOPERATE C.BEADCC EQU M.BEADCC C.CALLBD EQU M.CALLBD * * DATA 1 FL DATA 1 * * END