NLST * * PTDOS 1.5 SYSTEM DEFINITIONS * * $$$$ $$$$$ $$$$ $$$ $$$ * $ $ $ $ $ $ $ $ $ * $ $ $ $ $ $ $ $ * $$$$ $ $ $ $ $ $$$ * $ $ $ $ $ $ $ * $ $ $ $ $ $ $ $ * $ $ $$$$ $$$ $$$ * * * * * 1) MAIN ENTRY POINTS (EP AREA) * SYS EQU 0BCBCH RB EQU SYS-3 READ SINGLE BYTE WB EQU RB-3 WRITE SINGLE BYTE UTIL EQU WB-3 UTILITY HANDLER RESET EQU UTIL-3 RESET TO SYSTEM ERRL0 EQU RESET-3 ERROR LEVEL 0 RETURN FROM DRIVER ERRL1 EQU ERRL0-3 ERROR LEVEL 1 RETURN FROM DRIVER ERRL2 EQU ERRL1-3 ERROR LEVEL 2 RETURN FROM DRIVER SYSGLO EQU ERRL2-2 POINTER TO SYSTEM GLOBAL AREA CONIN EQU SYSGLO-3 CONSOLE INPUT ONE CHARACTER CONOUT EQU CONIN-3 CONSOLE OUTPUT ONE CHARACTER CONTST EQU CONOUT-3 CONSOLE INPUT READY TEST PSCAN EQU CONTST-3 PARAMETER SCANNER ENTRY INTDN EQU PSCAN-3 INTERRUPT DONE ENTRY POINT INTDK EQU INTDN-3 INTERRUPT PROCESSING ENTRY * THE ENTRY POINTS BELOW ARE FOR INTERNAL USE ONLY SDIRY EQU INTDK-3 SEARCH DIRECTORY BY ID (INTERNAL ONLY) CIWCH EQU SDIRY-2 TERMINAL DRIVER ADDRESS CIVDM EQU CIWCH-2 VDM DRIVER ADDRESS * * * * * 2) SYS CALL OPERATIONS (CODE FOR OPERATION BYTE) * * CREOP EQU 0 CREATE FILE (DE -> PARMS) OPEOP EQU CREOP+1 OPEN FILE (DE -> NAME, HL = BUFF OPT) KILOP EQU OPEOP+1 KILL FILE (DE -> NAME) RBLOP EQU KILOP+1 READ BLOCK OF DATA WBLOP EQU RBLOP+1 WRITE BLOCK OF DATA SPAOP EQU WBLOP+1 MOVE FILE CURSOR EOFOP EQU SPAOP+1 ENDFILE A FILE CLOOP EQU EOFOP+1 CLOSE A FILE CHTOP EQU CLOOP+1 CHANGE TYPE OF FILE CHAOP EQU CHTOP+1 CHANGE ATTRIBUTES OF A FILE CHNOP EQU CHAOP+1 CHANGE NAME OF A FILE INFOP EQU CHNOP+1 GET INFO ABOUT A FILE SUNOP EQU INFOP+1 SET DEFAULT UNIT RETOP EQU SUNOP+1 RETURN TO CI RESOP EQU RETOP+1 RESET ABTOP EQU RESOP+1 ABORT, THEN RETURN TO CI SEKOP EQU ABTOP+1 SET FILE CURSOR TO ARBITRARY POINT (SEEK RNDOP EQU SEKOP+1 MAKE FILE RANDOMLY ACCESSIBLE CAOP EQU RNDOP+1 CLOSE ALL FILES (OR ALL ON A UNIT) CTLOP EQU CAOP+1 CONTROL/STATUS OF DRIVER SREOP EQU CTLOP+1 SHORT RESET TO CI DRDOP EQU SREOP+1 DELIMITED READ DWROP EQU DRDOP+1 DELIMITED WRITE DSPOP EQU DWROP+1 DELIMITED SPACE RTROP EQU DSPOP+1 RETURN AND SET TRAP * * * * * * 3) ATTRIBUTES OF FILES * PKIL EQU 1 DELETE PROTECT PWRI EQU 2 WRITE PROTECTION PREA EQU 4 READ PROTECTION PFINF EQU 8 INFORMATION PROTECTION (FILES WON'T LIST) PATR EQU 16 ATTRIBUTE CHANGE PROTECTION PNAT EQU 32 NAME AND TYPE CHANGE PROTECTION PALO EQU 64 DISK ALLOCATION PROHIBITION PUSR EQU 128 USER ATTRIBUTE * * * * * * * 4) SYSTEM GLOBAL AREA * * THESE ARE THE STANDARD SYMBOLS * GLCIF EQU 0 CI INPUT FILE # GLCOF EQU GLCIF+1 CI OUTPUT FILE # GLUTF EQU GLCOF+1 UTILITY FILE # GLECF EQU GLUTF+1 CI ECHO FILE # GLUNI EQU GLECF+1 DEFAULT UNIT # GLPRM EQU GLUNI+1 # OF PERMANENTLY OPEN FILES GLMXU EQU GLPRM+1 MAX UNIT NUMBER (= # DRIVES+1) GLSWI EQU GLMXU+1 SYSTEM SWITCHES GLERS EQU GLSWI+2 SOFT (LEVEL 2) ERROR WORD GLERM EQU GLERS+2 MODERATE (LEVEL 1) ERROR WORD GLERH EQU GLERM+2 HARD (LEVEL 0) ERROR WORD GLTRP EQU GLERH+2 CI RETURN TRAP WORD GLPRO EQU GLTRP+2 USER MEMORY PROTECT WORD GLFLG EQU GLPRO+2 CHARACTER WAITING FLAG GLBYT EQU GLFLG+1 THE CHARACTER GLRCH EQU GLBYT+1 FILE #0 READ CHARACTER ROUTINE POINTER GLWCH EQU GLRCH+2 FILE #1 WRITE CHARACTER ROUTINE POINTER GLTCH EQU GLWCH+2 CONSOLE TEST CHARACTER READY ROUTINE PTR GLNCT EQU GLTCH+2 NULL COUNT FOLLOWING CR GLVER EQU GLNCT+1 SYSTEM VERSION GLDAT EQU GLVER+1 DATE (MM,DD,YY) GLNAM EQU GLDAT+3 DISK NAME (8 ASCII CHARACTERS) GLPAS EQU GLNAM+8 PASSWORD GLBD1 EQU GLPAS+8 WAIT FOR INTERRUPT ROUTINE ADDRESS GLBD2 EQU GLBD1+2 RESERVED FOR FUTURE USE GLIF1 EQU GLBD2+2 INTERRUPT ENABLE FLAG GLIF2 EQU GLIF1+1 DISK INTERRUPT PROCESSING COMPLETE FLAG GLLOW EQU GLIF2+1 LOW ADDRESS OF BUFFER AREA GLECH EQU GLLOW+2 ECHO DISABLE SWITCH GLLOK EQU GLECH+1 DISK WRITE LOCK SWITCH GLUPS EQU GLLOK+1 UPSHIFT SWITCH GLRBC EQU GLUPS+1 READ-BACK CHECK SWITCH GLBIO EQU GLRBC+1 BINARY CONSOLE I/O SWITCH GLRBW EQU GLBIO+1 LOG FILE SWITCH --- WAS GLLOG GLVRB EQU GLRBW+1 VERBOSE SWITCH GLFTR EQU GLVRB+1 SWITCH RESERVED FOR FUTURE USE * THE GLOBAL VARIABLES BELOW ARE FOR INTERNAL USE ONLY GLVDC EQU GLFTR+1 VDM CLEAR SET TO LINE GLSP2 EQU GLVDC+2 EXTRAS GLHI EQU GLSP2+2 HIGHEST AVAILABLE MEMORY LOCATION GLMIN EQU GLHI+2 LOWEST ADDRESS ALLOCATED GLFCB EQU GLMIN+2 FCB BASE ADDRESS (INTERNAL USE) GLNFC EQU GLFCB+2 # OF FCB'S (INTERNAL USE) * * * * 6) CXBUF AND OLBUF * CXBUF EQU 0BCC0H COMMAND EXECUTION BUFFER OLBUF EQU 0BDC0H OVERLAY BUFFER * * * 7) STATUS BITS IN USER DEVICE WORD * SBDUP EQU 128 DUPLICATIVE SBIAT EQU 64 INTERACTIVE SBTAB EQU 32 DOES TAB'S (CONTROL-I) SBSTB EQU 16 SETTABLE TABS SBFF EQU 8 DOES FORM-FEEDS SBATB EQU 4 DOES ABSOLUTE TABS SBINT EQU 2 INTERRUPT DRIVEN SBPRO EQU 1 SETTABLE PROMPT MESSAGE * * * * 8) ERROR NUMBERS * THESE ARE THE CORRECT ERROR NUMBERS * ERNEX EQU 1 NONEXISTENT FILE ERAEX EQU ERNEX+1 FILE ALREADY EXISTS ERUFN EQU ERAEX+1 UNASSIGNED FILE NUMBER ERPRO EQU ERUFN+1 PROTECTION VIOLATION ERNIF EQU ERPRO+1 FILE NOT TYPE IMAGE ERMOP EQU ERNIF+1 ILLEGAL OPERATION ON MULTIPLY OPEN FILE ERRAC EQU ERMOP+1 RANDOM ACCESS TO NON-RANDON FILE ERRDV EQU ERRAC+1 RANDOM ACCESS TO DEVICE FILE ERZBC EQU ERRDV+1 ZERO BLOCK COUNT IN DEVICE IMAGE FILE * ERIOP EQU ERZBC+1 ILLEGAL PTDOS OPERATION ERIBF EQU ERIOP+1 ILLEGAL BUFFER ADDRESS ERIBS EQU ERIBF+1 ILLEGAL BLOCK SIZE ERINM EQU ERIBS+1 ILLEGAL CHARACTER IN NAME ERICU EQU ERINM+1 ILLEGAL CHARACTER IN UNIT ERIUN EQU ERICU+1 ILLEGAL UNIT ERNTL EQU ERIUN+1 NAME TOO LONG ERMEM EQU ERNTL+1 USER MEMORY PROTECT VIOLATION ERSMP EQU ERMEM+1 SYSTEM MEMORY PROTECT VIOLATION ERUCN EQU ERSMP+1 UNIT CONFLICT ERIUP EQU ERUCN+1 ILLEGAL UTILITY OPERATION ERDRI EQU ERIUP+1 DRIVER ERROR ERIDA EQU ERDRI+1 ILLEGAL DRIVER ACCESS ERNCT EQU ERIDA+1 DRIVER NOT PARTICIPATING IN THIS CTRL * OPERATION * EREOF EQU 24 END OF FILE ENCOUNTERED (OR BOF) ERSEK EQU EREOF+1 SEEK ADDRESS OUT OF RANGE * ERTOP EQU ERSEK+1 TOO MANY FILES OPEN ERMOV EQU ERTOP+1 MEMORY OVERFLOW ERNID EQU ERMOV+1 NO FILE ID'S LEFT ERDFL EQU ERNID+1 DISK FULL ERDIR EQU ERDFL+1 DIRECTORY FULL * * ERFSB EQU 32 FILE STRUCTURE BAD ERFIC EQU ERFSB+1 FILE ID CONFLICT ERBSC EQU ERFIC+1 BLOCK SIZE CONFLICT ERSCC EQU ERBSC+1 SECTOR CONFLICT ERCFS EQU ERSCC+1 CAN'T FIND SECTOR ERCRC EQU ERCFS+1 CRC ERROR OR READ/WRITE ABORTS ERCFT EQU ERCRC+1 CAN'T FIND TRACK ERRBC EQU ERCFT+1 READ-BACK-CHECK FAILED ERLOK EQU ERRBC+1 DISK IS WRITE LOCKED ERXXX EQU ERLOK+1 CATESTROPHIC ERROR ERSYN EQU ERXXX+1 COMMAND SYNTAX ERROR ERNAX EQU ERSYN+1 NAME EXPECTED ERNUX EQU ERNAX+1 FILE NUMBER EXPECTED ERBCX EQU ERNUX+1 BYTE COUNT EXPECTED ERADX EQU ERBCX+1 ADDRESS EXPECTED ERVAX EQU ERADX+1 VALUE EXPECTED EROPX EQU ERVAX+1 OPTIONAL PARAMETER EXPECTED ERINA EQU EROPX+1 ILLEGAL FILE NAME ERIFI EQU ERINA+1 ILLEGAL FILE NUMBER ERIAD EQU ERIFI+1 ILLEGAL ADDRESS ERIBC EQU ERIAD+1 ILLEGAL BYTE COUNT ERIVA EQU ERIBC+1 ILLEGAL VALUE ERIOS EQU ERIVA+1 ILLEGAL OPTION SPECIFIER ERITY EQU ERIOS+1 ILLEGAL TYPE ERIAT EQU ERITY+1 ILLEGAL ATTRIBUTES ERRED EQU ERIAT+1 DRIVE NOT READY * * * 9) PARAMETER SCANNER OPERATIONS * * PTDOS PARAMETER SCANNER - COMMON VALUE EQUATES * * COMMON VALUES: * VALUE +40H = MY BUFFER FROM REG HL * PSN EQU 5 READ NAME TO REG DE PSV EQU 85H CONVERT VALUE INTO REG DE PSFC EQU 6 FORCE CREATE FILE PSFCO EQU 2 FORCE CREATE AND OPEN FILE PSC EQU 4 CREATE FILE IF NONE EXIST PSCO EQU 0 CREATE IF NONE EXIST AND OPEN PSOP EQU 1 OPEN FILE PSONE EQU 0A5H READ SINGLE BYTE PSOPT EQU 8 READ ALL CHRS UNTIL , ; cr 0 * * NOTE: ABOVE VALUES + 40H = USER INPUT BUFFER IN REG HL * PSCN EQU 0D5H CONVERT MY VALUE TO DE, BASE IN REG B * * * * * 10) UTILITIES UXOP EQU 0 EXPLAIN ERROR UXOP1 EQU 1 DATA FOR UXOP UXOP2 EQU 2 DITTO, PART 2 UCAT EQU 3 CATALOG ROUTINE * * LST