-19,,/;DSS1/ ; MODIFIED TO TURN ECHO ON AND TURN PASS-ALL-INPUT OFF ; AFTER ANY FATAL ERROR OR STOP (AT STOP02) 18-JAN-79 ; ; MODIFIED NOT TO CRASH ON MIXED STRING AND NUMERIC VARIABLES IN EXPRESSIONS ; ; (CONDITIONAL ON DEFVAR ) ADDED CODE IN GETHDR TO DEFINE UNDEFINED VARIABLES ; (THIS MEANS THAT ALL REFERENCES TO ORDINARY UNDEFINED VARIABLES DEFINE THEM) ; WHEN A VARIABLE'S VALUE IS REQUIRED, AND THE VARIABLE DOES NOT EXIST, ; IT'S NAME AND TYPE ARE ENTERED AND IT IS GIVEN A DEFAULT VALUE (SEE THE ; SUBROUTINE NEWVAR ) ; THIS ALLOWS, FOR INSTANCE, THE FOLLOWING PROGRAM: ; 10 FOR A=1 TO 5 ; 20 PRINT B ; 30 B=A*5 ; 40 NEXT A ;THE FIRST TIME B IS PRINTED, IT HAS A VALUE OF ZERO ; ** THE VARIABLE DEFVAR IS DEFINED IN A PREFIX FILE ** ; DANIEL STEINBERG 13-FEB-79 -68,68,/;DSS1/ .GLOBL STXERR FNMERR LNNERR VTMERR -184,184,/;DSS1/ STOP02: CLR WTMAG ;SET ZERO TIMEOUT CLRB RPASFL ;CLEAR PASS-ALL-INPUT BYTE (SO USER CAN TYPE) MOVB #1,ECHOFL ;AND SET ECHO ON MOV ENDSTK,SP ;RESTORE THE STACK -586,586,/;DSS1/ DIM02: JSR PC,GETHD5 ;VARIABLE NAME -> R4 ETC. -725,725,/;DSS1/ 1$: JSR PC,GETHD5 ;VARIABLE NAME -> R4 -1215,1215,/;DSS1/ .IF NDF,DEFVAR ;IF NO AUTOMATIC VARIABLE DEFINITION BEQ 12$ ;VARIABLE NOT DEFINED....ERROR .ENDC -1220,,/;DSS1/ .WORD VTMR ;STRING (ERROR 52) -1437,1438,/;DSS1/ BVS GSTR09 ;ERROR IN VAR .IF NDF,DEFVAR ;IF NO AUTOMATIC VARIABLE DEFINITION BEQ GSTR09 ;NO VARIABLE .ENDC -1459,,/;DSS1/ < VTMR: VTMERR ;VARIABLE TYPE MISMATCH -1491,,/;DSS1/ < .IF DF,DEFVAR ;IF AUTOMATIC VARIABLE DEFINITION -1506,1513,/;DSS1/ ; 'V' SET IF NO VAR IN TEXT (SYNTAX ERROR) ; IN THIS CASE R4, R3 AND R0 ARE NOT DEFINED ; ; *** 'Z' NO LONGER SET IF VARIABLE UNDEFINED...INSTEAD, THE VARIABLE ; IS CREATED (BY NEWVAR) **** ; GETHDR: JSR PC,GETHD5 ;DO OLD GETHDR STUFF BVS 6$ ;ERROR BNE 5$ ;OK MOV R5,-(SP) ;(SAVE R5) JSR PC,NEWVAR ;DEFINE THE VARIABLE MOV (SP)+,R5 ;(RESTORE R5) 5$: CLZ ;CLEAR Z, JUST IN CASE 6$: RTS PC ; GETHD5 IS EXACTLY LIKE GETHDR, EXCEPT THAT, ON RETURN, ; THE Z-BIT IS SET IF THE VARIABLE IS UNDEFINED ;***TEST 'V' FIRST, THEN 'Z' ....... VARIABLES ARE NOT AUTOMATICALLY CREATED GETHD5: .IFF ;IF NO AUTOMATIC VARIABLE DEFINITION ; GETHDR AND GETHD5 ARE IDENTICAL, IF UNDEFINED VARIABLES ARE ERRORS, RATHER ; THAN ZEROES GETHDR: GETHD5: .ENDC ;IF DF,DEFVAR CLR R0 ;CLEAR R0 FOR SEARCH MASK -1547,1548,/;DSS1/ 12$: MOV (SP)+,R0 ;POP RETURN TYPE CODE SEZ ;VARIABLE NOT DEFINED -2175,2176,/;DSS1/ < .IF NDF,DEFVAR ;IF NO AUTOMATIC VARIABLE DEFINITION BNE 4$ ;NO VARIABLE JSR PC,NEWVAR ;NOT DEFINED....DEFINE IT .ENDC -3104,3105,/;DSS1/ < .IF NDF,DEFVAR ;IF NO AUTOMATIC VARIABLE DEFINITION BNE 1$ ;VARIABLE EXISTS JSR PC,NEWVAR ;NOT DEFINED....DEFINE IT .ENDC -3254,3255,/;DSS1/ < .IF NDF,DEFVAR ;IF NO AUTOMATIC VARIABLE DEFINITION BNE 1$ ;VARIABLE EXISTS JSR PC,NEWVAR ;NOT DEFINED....DEFINE IT .ENDC /