.TITLE VARBLE - FILE BUFFER AND ASSORTED GLOBALS .PSECT $GLOBS,RW,GBL,OVR PASPAS:: FILVAR: .WORD 0 ;CURRENT FILE VARIABLE OUTPUT::.WORD .+FB.BUF ;OUTPUT FILE BLOCK .BYTE 1 ;EOF FLAG SET .BYTE 1 ;EOL FLAG SET .BYTE FS.TTY+FS.TXT+FS.OUT ;TYPE OF FILE .BYTE 0 ;NOT DIRTY OR SEEKABLE .WORD 1 ;MAXSIZ IS 1 BYTE .WORD 16. ;LOGICAL UNIT .WORD 512. ;ROOM FOR 512 BYTES .WORD 0 ;CURRENT BLOCK ZERO .WORD -1 ;UNLIMITED LENGTH .BLKB 2. ;BUFFER AREA INPUT:: .WORD .+FB.BUF ;INPUT FILE BLOCK .BYTE 0 ;EOF FLAG NOT SET .BYTE 0 ;EOL FLAG NOT SET .BYTE FS.TTY+FS.TXT+FS.IN ;TYPE OF FILE .BYTE 0 ;NOT DIRTY OR SEEKABLE .WORD 1 ;MAXSIZ IS 1 BYTE .WORD 17. ;LOGICAL UNIT .WORD 0 ;NO VALID DATA .WORD 0 ;CURRENT BLOCK ZERO .WORD -1 ;UNLIMITED LENGTH .BLKB 2. ;BUFFER AREA ; .PAGE ; ; PASCAL FILE BLOCK DEFINITION ; ; FILE BLOCK CONSISTS OF: ; PASCAL HEADER: ; BUFVAR - POINTER TO CURRENT I/O VARIABLE ; EOF/EOL - FILE EOF AND EOL FLAGS ; FLAGS/SYSFLAGS - USER AND SYSTEM CHARACTERISTICS FLAG ; MAXSIZ - SIZE OF FILE VARIABLE ; CHAN - CHANNEL NUMBER OF THIS FILE ; VALID - NUMBER OF VALID BYTES IN BUFFER ; BLOCK - CURRENT BLOCK NUMBER ; LENGTH - LENGTH OF FILE ; 512. BYTE BUFFER ; FB.BV ==0 FB.EOF ==2 FS.EOF ==1 ;END OF FILE BIT FB.EOL ==3 FS.EOL ==1 ;END OF LINE BIT FB.ST2 ==4 FS.IN ==1 ;OPEN FOR IN FLAG FS.OUT ==2 ;OPEN FOR OUT FLAG FS.TTY ==4 ;FILE IS TTY FLAG FS.TXT ==8. ;FILE IS A TEXT FILE FS.TMP ==16. ;FILE IS TEMPORARY FB.ST3 ==5 FS.DIR ==1 ;BUFFER HAS BEEN CHANGED BIT FS.SEK ==2 ;FILE CAN BE RANDOM ACCESS FB.SIZ ==6 FB.CHN ==8. FB.VLD ==10. FB.BLK ==12. FB.LEN ==14. FB.BUF ==16. FB.DIM ==512. FB.LNG ==FB.BUF+FB.DIM ; .PAGE ; .PSECT .PSECT $TRAP,GBL,OVR .PSECT $MSG,D .PSECT $VARBL PS.TRT::.WORD 0 ; user program restart address V.SUSR:: ; start of USR no-go region V.AREA::.BLKW 6 ; emt request argument area V.FNAM::.BLKB 23. ; file name buffer V.FNME::.BYTE 0 ; null byte terminating file name V.SPCE::.BLKW 39. ; CSI file specification area .BLKB 4 ; extra so can use as .GTLIN buffer V.INAM ==V.SPCE+36 V.ONAM ==V.SPCE V.DEF:: .WORD 0,0,0,0 ; default extension area V.STAT::.BLKW 4 ; .DSTATUS return area V.EUSR:: ; end of USR no-go region H.HGH:: .WORD 0 ; last address available for heap H.CUR:: .WORD 0 ; point to current heap mark H.END:: .WORD 0 ; last address currently used by heap F.CHAN::.WORD 0 ; IO channel usage bitmap V.LOW::.LIMIT ; lowest address used by program code V.HGH ==V.LOW+2 ; first address above program code V.NUSR::.WORD 0 ; first address below unswapped USR V.HUSR::.WORD 0 ; first word above USR swap location .END