plato:source:plaopl:defsub
Table of Contents
DEFSUB
Table Of Contents
- [00005] SUBROUTINES USED BY -DEFINE- OVERLAY
- [00013] DEFINE/SEGMENT/UNITS OVERLAY CALLS
- [00045] -GETNAME-
- [00124] -SYMCHK-
Source Code
- DEFSUB.txt
- DEFSUB
- * /--- FILE TYPE = E
- * /--- BLOCK IDENT 00 000 75/05/29 20.21
- IDENT DEFSUB
- TITLE SUBROUTINES USED BY -DEFINE- OVERLAY
- *
- CST
- *
- EXT ECSPRTY,KEYTYPE
- *
- *
- * /--- BLOCK DEFSUB 00 000 81/07/16 04.24
- TITLE DEFINE/SEGMENT/UNITS OVERLAY CALLS
- *
- *
- *
- ENTRY DEFREAD
- DEFREAD SA1 LOCAL IF LOCAL SET ACTIVE, PURGE IT
- ZR X1,DFRD10 IF LOCAL SET NOT ACTIVE
- *
- MX6 0 CLEAR LOCAL FLAG
- SA6 A1
- EXEC DEFOV,3 PURGE LOCAL SET FOR GLOBAL SET
- *
- ENTRY DFRD10
- DFRD10 EXEC DEFOV,0 NORMAL DEFINE INTERPRETATION
- *
- *
- *
- ENTRY SEGREAD
- SEGREAD EXEC SEGOV,0
- *
- *
- *
- ENTRY UNSREAD
- UNSREAD EXEC SEGOV,1
- *
- *
- *
- ENTRY SEGFLG
- SEGFLG BSS 1
- *
- *
- * /--- BLOCK GETNAME 00 000 80/03/23 06.41
- TITLE -GETNAME-
- *
- *
- *
- * -GETNAME- BUILD DEFINE NAME
- * ON ENTRY - B1 = MAXIMUM NUMBER OF CHARACTERS
- * ON RETURN - X6 = LEFT JUSTIFIED NAME
- * X1 = TERMINATOR CHARACTER
- * X2 = TERMINATOR KEYTYPE
- * B1 = CHARACTER COUNT
- * B2 = -1 IF COLON ENCOUNTERED
- * 0 IF NORMAL DELIMITER
- *
- ENTRY GETNAME
- GETNAM0 SX4 X4-70B CHECK FOR PRECEDING SHIFT
- ZR X4,GETNAM2 IF COLON OR DOUBLE QUOTE
- *
- GETNAME EQ *
- SB2 B0 FLAG NO COLON ENCOUNTERED
- SB3 B1 GET LIMIT ON LENGTH OF NAME
- SA1 WORDPT POINTER TO FIRST CHAR OF NAME
- BX7 X1
- SB1 B0 CHARACTER COUNT
- SB2 54 INITIALIZE SHIFT COUNT
- MX6 0 BUILD NAME IN X6
- RJ NXTCODE GET FIRST CHAR OF NAME
- PL X2,GETNAM0 MAY NOT BE NUMBER OR OP
- *
- GETNAM1 RJ NXTCODE GET NEXT CHARACTER
- PL X3,GETNAM0 EXITWITH TERMINATOR IN X1
- LT B3,B1,GNERR ERROR IF TOO MANY CHARACTERS
- EQ GETNAM1
- *
- NXTCODE EQ *
- NXTCD1 BX4 X1 SAVE LAST CHARACTER CODE
- SA1 X7
- SX7 X7+1
- SA7 WORDPT ADVANCE / UPDATE POINTER
- SX2 X1-1R CODE FOR SPACE
- ZR X2,NXTCD1 IGNORE SPACES
- SA2 X1+KEYTYPE
- SX3 X2-1 SEE IF TERMINATOR (OP)
- PL X3,NXTCODE
- SB1 B1+1 INCREASE CHAR COUNT
- LX0 X1,B2
- SB2 B2-6 DECREASE SHIFT COUNT
- BX6 X6+X0 ADD TO WORD BUILDING
- EQ NXTCODE
- *
- GETNAM2 BX6 X6-X0 REMOVE SHIFT CODE
- SB1 B1-1 DECREMENT CHARACTER COUNT
- SB2 -1 FLAG COLON ENCOUNTERED
- EQ GETNAME
- *
- *
- GNERR SB1 29 BAD NAME
- SA1 =10LBAD NAME
- BX7 X1
- SA7 CERROR1 STORE MESSAGE
- SX7 11 CODE FOR DEFINE ERROR
- SA7 TFORMOK
- SA3 LOCAL
- ZR X3,=XERR IF NOT PROCESING LOCAL SET
- *
- SA1 DSET
- SA1 SETNAMS+X1 X1 = NAME OF CURRENT SET
- SA2 KLOCAL X2 = NAME OF LOCAL SET
- IX3 X1-X2
- ZR X2,=XERR IF LOCAL SET PROCESSING OK
- *
- MX6 0 NO LOCAL SET IN EFFECT
- * /--- BLOCK GETNAME 00 000 80/03/23 06.41
- SA6 A3 ZERO LOCAL FLAG
- EQ =XERR
- *
- ENTRY KLOCAL
- KLOCAL DATA 00141703011400000000B
- *
- * /--- BLOCK DEFSUB 00 000 77/01/13 14.27
- TITLE -SYMCHK-
- *
- *
- *
- * -SYMCHK-
- * CHECK IF DEFINED NAME CONFLICTS WITH SYSTEM NAME
- *
- EXT FCTLIST,LASTFCT,NKLIST,NKLEND,ERRCALL
- *
- ENTRY SYMCHK
- SYMCHK EQ *
- SA1 B1 GET DEFINED NAME
- BX6 X1
- SA6 LASTFCT PLANT FOR END TEST
- SA6 NKLEND
- SA6 SYMMES1 PLANT FOR ERROR MESSAGE
- MX0 42
- SB1 1
- SA1 FCTLIST-1 INITIALIZE READ REGISTER
- *
- SYMLP1 SA1 A1+B1 PICK UP NEXT FUNCTION NAME
- BX1 X1-X6 SEE IF NAMES MATCH
- BX2 X0*X1
- NZ X2,SYMLP1 JUMP IF NO MATCH
- NG X2,SYMLP1 CHECK FOR -0
- SB2 A1
- SB3 LASTFCT SEE IF A MATCH WAS FOUND
- LT B2,B3,SYMDUP
- SA2 LASTFCT GET DEFINED NAME AGAIN
- SA1 NKLIST-1
- *
- SYMLP2 SA1 A1+B1 GET NEXT ENTRY
- BX6 X1-X2 COMPARE
- BX6 X0*X6 MASK FOR NAME
- NZ X6,SYMLP2
- SB1 NKLEND CHECK FOR NO MATCH
- SB1 A1-B1
- NZ B1,SYMDUP
- SA1 NLIST-1 INITIALIZE READ REGISTER
- *
- SYMLP3 SA1 A1+1 LOAD NEXT NAME
- ZR X1,SYMCHK EXIT IF END OF LIST
- BX1 X1-X2
- BX1 X0*X1
- NZ X1,SYMLP3 JUMP IF DOES NOT MATCH
- *
- SYMDUP SB1 95 WARNING ERROR, SYSTEM VARIABLE RE-DEFINED
- RJ =XRJERR
- EQ SYMCHK
- *
- *
- * EXTRA NAMES NOT RECOGNIZED AS FUNCTIONS, RESERVED
- * WORDS OR KEY NAMES
- *
- NLIST DATA 4LSKIP DRAW 1010;SKIP;2010
- DATA 0LBRANCH
- DATA 0LDOTO
- + VFD 12/7620B,48/0 PI
- + VFD 12/7617B,48/0 DEGREE SIGN
- DATA 0
- *
- SYMMES1 DATA 0
- *
- END
plato/source/plaopl/defsub.txt ยท Last modified: 2023/08/05 18:54 by Site Administrator