TITL PTDOS 1.5.0"RELEASE VERSION 2 WORK PAGE ASCF 0 NO EXTENDED ASCII IFLS . LIST THE IF'S TOO * * * * * * * * * PTDOS 1.4.0 * * FLOPPY DISK OPERATING SYSTEM * * * * COPYRIGHT 1978 BY: * * PROCESSOR TECHNOLOGY CORP. * 7100 JOHNSON INDUSTRIAL DRIVE * PLEASANTON, CALIF 94566 * * << ALL RIGHTS RESERVED >> * * * DESIGNED AND WRITTEN BY: PHILIP LEVY * *********************************************************** PAGE * * * * THE FOLLOWING DEFINE THE SYSTEM CONFIGURATION * * * * CONFIGURATION PARAMETERS * ********************* * * SYSTEM OPERATIONS * CREOP EQU 0 CREATE FILE OPEOP EQU 1 OPEN FILE KILOP EQU 2 DELETE FILE RBLOP EQU 3 READ BLOCK WBLOP EQU 4 WRITE BLOCK SPAOP EQU 5 SPACE EOFOP EQU 6 ENDFILE CLOOP EQU 7 CLOSE FILE CHTOP EQU 8 CHANGE TYPE CHAOP EQU 9 CHANGE ATTRIBUTES CHNOP EQU 10 CHANGE NAME INFOP EQU 11 INFORMATION REQUEST SUNOP EQU 12 SET DISK UNIT RETOP EQU 13 RETURN TO CI RESOP EQU 14 RESET, THEN RETURN TO CI ABTOP EQU 15 ABORT, THEN RETURN TO CI SEKOP EQU 16 SEEK OPERATION RNDOP EQU 17 RANDOMIZE CAOP EQU 18 CLOSE ALL/UNIT CTLOP EQU 19 FILE CONTROL/STATUS SREST EQU 20 SHORT RESET TO CI DRDOP EQU 21 DELIMITED READ DWROP EQU 22 DELIMITED WRITE DSPOP EQU 23 DELIMITED SPACE OPERATION RTROP EQU 24 RETURN WITH TRAP OPERAITON * MAXOP EQU RTROP MAX OPERATION * * ********************* * * 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 EMPTY DEVICE 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 ERBLF EQU ERDIR+1 BAD LOAD FILE * * 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 * * ERRED EQU 39H DRIVE NOT READY * * * THESE ARE THE OLD SYMBOLS * SERR0 EQU ERRAC - FILE NOT INDEXED SERR2 EQU ERSEK - SEEK ADDR OUT OF RANGE RERR0 EQU ERRDV - RANDOM OP ON DEVICE FILE * CER0 EQU ERAEX - FILE ALREADY EXISTS CER1 EQU ERDIR - DIRECTORY FULL DER0 EQU ERNEX - NONEXISTENT FILE DER1 EQU ERMOP - ATTEMPT TO KILL OR EOF MULTIPLY OPEN FILE OER1 EQU ERIBF - ILLEGAL BUFFER ADDRESS PER0 EQU ERPRO - PROTECT VIOLATION EER0 EQU EREOF - END OF FILE FINE0 EQU ERNEX - FILE DOES NOT EXIST FINE1 EQU ERPRO - PROTECTION FER0 EQU ERTOP - NO FCBS AVAILABLE MER0 EQU ERMOV - MEMORY OVERFLOW PER1 EQU ERUFN - ILLEGAL FCB IER0 EQU ERNID - NO IDS LEFT FBER EQU ERFSB - FS BAD CHER EQU ERPRO - ALTERATION PROTECTED CIER0 EQU ERBLF - BAD LOAD FILE CIER1 EQU ERNIF - NOT IMAGE FILE * * DAER0 EQU ERDFL - DISC IS FULL DAER1 EQU ERIBS - ILLEGAL BLOCK SIZE DVER0 EQU ERDRI - DRIVER ERROR IDAER EQU ERIDA - ILLEGAL DRIVER ACCESS ILOER EQU ERIOP - ILLEGAL OPERATION UNER0 EQU ERIUN - ILLEGAL UNIT LDE2 EQU ERZBC - BAD DRIVER--ZERO UTE0 EQU ERIUP - BAD UTILITY OPERATION * MPE0 EQU ERMEM - MEMORY PROTECT MPE1 EQU ERSMP - SYSTEM MEMORY PROTECT CHR2 EQU ERUCN - UNIT CONFLICT ICE0 EQU ERINM - ILLEGAL CHARACTER IN NAME ICE1 EQU ERICU - ILLEGAL CHARACTER IN UNIT CSER0 EQU ERXXX - CATESTROPHIC ERROR * * * * * ********************* * * DRIVER TYPE/STATUS BITS * SBDUP EQU 128 DUPLICATIVE SBIAT EQU 64 INTERACTIVE SBTAB EQU 32 TABBING SBSTB EQU 16 SET TABS SBFF EQU 8 FORM-FEED SBATB EQU 4 ABSOLUTE TABS SBINT EQU 2 INTERRUPT DRIVEN SBPRO EQU 1 SETTABLE PROMPT * ********************* * * SECONDARY OPERATIONS * UXOP EQU 0 EXPLAIN ERROR NICELY UXOP1 EQU 1 SECOND LEVEL * CCLDE EQU 32 LOADER OPERATION CODE * * ********************* * * * * SYSTEM FILE INFORMATION * * * DIRECTORY INFORMATION * IDDIR EQU 2 DIRECTORY FILE ID DIRDS EQU 0 SECTOR AND DIRDT EQU 25 TRACK OF DIRECTORY * NMLEN EQU 8 NAME LENGTH DREMS EQU 12 MAX ENTRIES PER SECTOR DICNT EQU 16 NUMBER OF DIRECTORY SECTORS * * * SYSTEM GLOBAL FILE * DASPS EQU 13 SECTOR ADDRESS DASPT EQU 1 TRACK ADDRESS IDSPA EQU 5 FILE ID * * * SYSTEM RESIDENT * DARES EQU 3 DISK DARET EQU 0 ADDRESS IDRES EQU 4 FILE ID D2RES EQU 0 SECTOR ZERO D2RET EQU 1 TRACK 1 * * * FSM (FREE SPACE MAP) INFORMATION * IDFSM EQU 1 FSM FILE ID DAFSS EQU 0 SECTOR AND DAFST EQU 26 TRACK OF FSM * * * NEXT FILE ID FILE INFORMATION * IDNID EQU 3 NEXT ID FILE ID DANIS EQU 1 DISK ADDRESS OF DANIT EQU 26 NEXT ID FILE NIDBC EQU 2 BYTE COUNT OF BLOCK * * * BOOTSTRAP FILE * DABOS EQU 0 DISK DABOT EQU 0 ADDRESS IDBOT EQU 6 FILE ID BOCNT EQU 25FH+6 LENGTH OF FILE * ********************* * * HEADER VALUES ETC * * * SECTOR SIZES * SECTSZ EQU 256 BYTE COUNT OF SECTOR FULSZ EQU 320 BYTE COUNT OF FULL SECTOR * * * FILE STRUCTURE LINKAGE VALUES * BOFCD EQU 65535 BOF CODE IN BACK POINTER EOFCD EQU 32768 EOF BIT IN FORE POINTER * * * FILE PROTECTION ATTRIBUTE BITS * PDEL EQU 1 DELETE PROTECT PWRI EQU 2 WRITE PROTECT PREA EQU 4 READ PROTECT PFINF EQU 8 INFORMATION PROTECT PATR EQU 16 ATTRIBUTE CHANGE PROTECT PNAT EQU 32 NAME AND TYPE CHANGE PROTECT PALO EQU 64 ALLOCATION PROTECTION * * * DEFINE FILE TYPES * SYSIM EQU 00H SYSTEM IMAGE TYPE --(I00) BNTYP EQU 80H BINARY DATA FILE --(00) UTTYP EQU 01H UTILITY TYPE * IMTYPE EQU 80H IMAGE FILE MASK (OFF IS IMAGE!!) * * ******************************************* * * * DRIVER TABLE STRUCTURE * * THESE ARE DISPLACEMENTS INTO A DRIVER * DTRB EQU 0 READ BLOCK DTRNB EQU 2 READ NEXT BLOCK DTRLB EQU 4 READ LAST BLOCK DTWBR EQU 6 WRITE BLOCK: LOAD NEXT DTWB EQU 8 WRITE BLOCK DTREW EQU 10 REWIND DTEOF EQU 12 END-FILE DTCLO EQU 14 CLOSE DTSEK EQU 16 SEEK DTCTL EQU 18 CONTROL/STATUS DTBLK EQU 20 BLOCK SIZE DTITO EQU 22 IMMEDIATE TRANSFER OPTION DTINI EQU 23 INITIALIZE ENTRY POINT * PAGE * * ******************************************* * * * SYSTEM GLOBAL AREA STUFF * * * MEMORY AREA * MINMA EQU 09000H LOWEST MEMORY ADDRESS LNMBF EQU 0A40H LENGTH OF BUFFER AREA FCB0 EQU MINMA+LNMBF START OF FCB AREA * * * FILE CONTROL BLOCKS * MAXFCB EQU 8 MAX. NUMBER OF OPEN FILES MINFCB EQU 5 MIN. NUMBER OF FILE CONTROL BLOCKS LNFCB EQU 34 LENGTH OF FCB. MUST AGREE WITH LAYOUT!!!!!!! FCBLN EQU LNFCB*MAXFCB LENGTH OF FCB AREA * * FCB SIZE DEFINED LITERALLY <<-------------< WARNING * * * DEFINE SYSTEM STACK * BOTSK EQU FCB0+FCBLN MAX TOP OF STACK ADDRESS STKSZ EQU 60 STACK SIZE TOPSK EQU BOTSK+STKSZ BOTTOM OF STACK (INITIAL TOP) * * INITIAL ELEMENTS IN THE STACK ALWAYS LOOK LIKE THIS * UHL EQU TOPSK-2 USER HL UL EQU UHL USER L UH EQU UHL+1 USER H UD EQU TOPSK-3 USER D UE EQU TOPSK-4 USER E UDE EQU UE UB EQU TOPSK-5 USER B UC EQU TOPSK-6 USER C UBC EQU UC UA EQU TOPSK-7 USER A UPSW EQU TOPSK-8 USER PSW UTOS EQU TOPSK-10 USER SP * PAGE * * ******************************************* * * * * * * SYSTEM GLOBAL AREA * ORG TOPSK * SGAREA EQU $ BEGINNING OF THE SYSTEM GLOBAL AREA SP1 EQU -MINFCB*LNFCB+SGAREA LOAD ADDRESS FOR SYSGLOBL MASPA EQU SP1 SAME * * * * THE FOLLOWING PARAMETERS ARE AVAILABLE TO THE USER * THROUGH THE POINTER IN THE ENTRY POINT AREA. * * * DEFAULT FILE NUMBERS * CIFILE DB 0 C/I INPUT FILE COFILE DB 1 C/I OUTPUT FILE UTIL DB 2 DEFAULT UTILITY FILE ECFILE DB 1 ECHO OUTPUT FILE * * DO NOT CHANGE THE ORDER OR POSITION OF THE ABOVE FOUR * PARAMETERS UNDER ANY CIRCUMSTANCES!!!! * DUNIT DB 0 DEFAULT DISK DRIVE AND UNIT SYSFIL DB 3 NUMBER OF SYSTEM FILES CONFIGURED MAXUN DB 2 NUMBER OF DRIVES+1 CONFIGURED * SWITCHS DB 0 BITS FOR ON OFF DB 0 USER SENSE SWITCHES * * * ERROR HANDLING * EERR DW -1 EOF-BOF ERRORS AERR DW 0 ABORTIVE ERRORS FERR DW 0 FATAL, SERIOUS ERRORS * * * MISC. * CRTRAP DW -1 C/I TRAP RETURN UPROT DW 0 USER MEMORY PROTECT * STFLG DB 0 EXTRA CHARACTER WAITING ON CONIN FLAG INBYT DB 0 THE SAID EXTRA CHARACTER * * CI READ/WRITE/TEST POINTERS * RCH DW CIRCH READ CONSOLE WCH DW CIWCH WRITE CONSOLE SCH DW CITCH TEST CONSOLE * NULLS DB 0 NUMBER OF NULLS TO FOLLOW CR * * * * CONFIGURATION INFORMATION * * SYSTEM VERSION * DB 52H SYS VERSION 1.5.2 DB 11H MONTH MM DB 09H DATE DD DB 78H YEAR YY * ASC 'PTDOS1.5' DISK NAME * ASC 'PTDOS' PASSWORD DW 0 (8 CHARS, ZERO FILL) DB 0 * * * INTERRUPT STUFF * BDSK1 DW -1 STANDARD RETURN INTERRUPT ADDRESS BDSK2 DW -1 FAST " " " " " " IFLG1 DB 0 FLAG TO RE-ENABLE INTERRUPTS IFLG2 DB 0 DISK DONE FLAG FOR INT HANDLER * * * MEMORY CONFIGURATION * LOWAD DW MINMA MINIMUM AVAILABLE LOCATION * * * SYSTEM SWITCH FLAGS * SWECH DB 0 ECHO ENABLE SWLOK DB 0 DISK WRITE LOCK SWUPS DB 0 UPSHIFT ASCII SWRBC DB 0 DISK READ-BACK-CHECK AFTER WRITE SWBIO DB 0 BINARY I/O ON CONSOLE SWLOG DB 0 LOG FILE FOR CI ECHO FLAG SWVRB DB 1 VERBOSE DISABLE SWFTR DB 0 FUTURE (I.E. ISN'T 8 A NICE NUMBER) * * * LEAVE SOME ROOM FOR FUTURE JUNK * GLVDC DW PCRCK SET SCREEN LINE ADDRESS DW -1 * PAGE * * * * * * ///// THE PARAMETERS BELOW ARE DEFINED FOR SYSTEM //// * ///// USE FROM SYSGLO. DO NOT CHANGE THEIR LOCATION /// * * * FCB AREA PARAMETERS * HIGHA DW MAXFCB*LNFCB+FCB0 TOP AVAILABLE LOCATION MINAD DW FCB0-BUFT-BUFT2 MINIMUM BUFFER ALLOCATED SO FAR FCBASE DW FCB0 FIRST FCB ADDRESS NFCB DB MAXFCB NUMBER OF FCBS * CRSEEN DB 0 CR FLAG FOR TTY DRIVER TDPRO DW CIMSG CI TTY PROMPT MESSAGE POINTER FRADD DW 0 FCB RESTORATION ADDRESS * * * *