home *** CD-ROM | disk | FTP | other *** search
-
-
- ***************************************************************************
- ** COPYRIGHT (C) MASSACHUSETTS INSTITUTE OF TECHNOLOGY AND HARVARD **
- ** UNIVERSITY, BIOMEDICAL ENGINEERING CENTER 1977. ALL RIGHTS RESERVED. **
- ***************************************************************************
-
- INITIAL LOADING OF STOIC
- J. SACHS 2/15/77
-
- STOIC REQUIRES A 24K BYTE SYSTEM WITH A MASS STORAGE DEVICE
- AND TERMINAL OR TELETYPE.
-
- TO GENERATE A VERSION OF STOIC FOR A NEW SYSTEM, THE FOLLOWING
- STEPS MUST BE FOLLOWED:
-
- BOOTSTRAP
-
- REWRITE THE BOOTSTRAP AS NECESSARY TO RUN YOUR TERMINAL AND MASS
- STORAGE DEVICE. THE FOLLOWING ROUTINES MUST BE PROVIDED:
-
- TTYIN ACCEPT A CHARACTER FROM THE TERMINAL
-
- CALL TTYIN
- CHARACTER RETURNED IN A, PARITY BIT ZERO
-
- TTYOU TYPE A CHARACTER ON THE TERMINAL
-
- CHARACTER IN A
- CALL TTYOU
-
- DSKIN READ BLOCKS FROM THE MASS STORAGE DEVICE
-
- BC CONTAINS A BLOCK COUNT
- DE CONTAINS THE BUFFER ADDRESS
- (THE ADDRESS INTO WHICH THE FIRST BYTE MUST BE READ)
- HL CONTAINS THE FIRST BLOCK NUMBER
- CALL DSKIN
- ERROR CODE RETURNED IN A (ZERO IF OK)
-
- DSKOU WRITE BLOCKS FROM THE MASS STORAGE DEVICE
-
- BC CONTAINS A BLOCK COUNT
- DE CONTAINS THE BUFFER ADDRESS
- (THE ADDRESS FROM WHICH THE FIRST BYTE MUST BE WRITTEN)
- HL CONTAINS THE FIRST BLOCK NUMBER
- CALL DSKOU
- ERROR CODE RETURNED IN A (ZERO IF OK)
-
- THE PARAMETER "BSIZE" MUST BE SET TO THE BLOCK SIZE (IN
- BYTES) FOR THE MASS STORAGE DEVICE. IF THE DEVICE USES
- EXCESSIVELY SMALL BLOCKS, < 512 BYTES, IT MAY BE ADVANTAGEOUS
- TO WRITE DSKIN AND DSKOU TO TRANSFER MULTIPLE PHYSICAL
- RECORDS AS A SINGLE LOGICAL RECORD.
-
- THE PARAMETER "RAM" SHOULD BE SET TO THE FIRST RAM LOCATION
- OF YOUR SYSTEM.
-
- CODE TO PROCESS RESTARTS (IF ANY) SHOULD BE INCLUDED IN THE
- BOOTSTRAP.
-
- THE PROGRAM AT "SIZE" SHOULD BE MODIFIED TO SIZE MEMORY FOR
- YOUR SYSTEM. THIS PROBABLY MEANS MODIFYING THE CONSTANT
- "0C000H" TO "0".
-
- COMMIT THE BOOTSTRAP TO READ-ONLY MEMORY.
-
-
- STOIC KERNEL
-
- ENTER THE ADDRESS OF TTYIN, TTYOU, DSKIN, AND DSKOU AS PARAMETERS
- IN THE KERNEL.
-
- ENTER PARAMETER VALUES FOR BCKSP AND TABS FOR YOUR TERMINAL; IF
- YOUR TERMINAL CAN BACKSPACE, BUT DOES NOT USE THE ASCII BACKSPACE
- CHARACTER TO DO THIS, MODIFY THE CODE IN "RDLINE" TO BACKSPACE
- YOUR TERMINAL.
-
- ADJUST THE ORIGIN OF STOIC FOR YOUR SYSTEM.
-
- CHOOSE STACK SIZES, COMPILE BUFFER SIZE, ETC,.
-
- ENTER THE PARAMETER "BSIZE" THE SAME AS IN THE BOOTSTRAP.
- ENTER THE PARAMETER "NBLKS", THE NUMBER OF AVAILABLE DISK BLOCKS.
-
- REPLACE THE CODE AT 2000H WITH CODE TO PROCESS RESTARTS FOR YOUR
- SYSTEM. NOTE THAT THE FIRST RAM LOCATION OF YOUR SYSTEM SHOULD
- CONTAIN A "JMP ABORT".
-
- ENTER TEXT FOR THE ERROR CODES FOR THE MASS STORAGE DEVICE IN
- "RDERC" AND "WRERC".
-
- MODIFY CODE AT "SIZE" TO SIZE MEMORY ON YOUR SYSTEM AND SET THE
- VARIABLE "?MEMO" TO THE ADDRESS OF THE LAST USABLE RAM LOCATION + 1.
- THIS IS THE SAME MODIFICATION AS IN THE BOOTSTRAP.
-
-
- FILE SYSTEM
-
- MODIFY THE CONSTANTS "BSIZE" AND "NBLKS" AS NECESSARY TO REFLECT
- THE BLOCK SIZE (IN BYTES) AND THE TOTAL AVAILABLE NUMBER OF BLOCKS
- ON THE MASS STORAGE DEVICE, RESPECTIVELY. (NBLKS MUST BE LESS THAN
- OR EQUAL TO 512 DECIMAL)
-
- REMOVE OR MODIFY THE WORD "DISK-COPY" WHICH COPIES AN ENTIRE DISK
- FROM ONE UNIT TO ANOTHER.
-
- MODIFY THE CODE TO SIZE MEMORY IN "(RDCI)", AS IN THE KERNEL AND
- BOOTSTRAP.
-
- MODIFY THE CONSTANT "2000" IN "WRITE-BOOT" TO THE 1ST RAM LOCATION
- IN YOUR SYSTEM (HEX).
-
-
- EDITOR
-
- MODIFY THE VALUE OF THE VARIABLE "ESC" TO CORRESPOND TO AN APPROPRIATE
- CHARACTER FOR YOUR TERMINAL. (E.G. ALT MODE FOR AN ASR 33)
-
- MODIFY THE EDITOR WORD "DISPLAY-CURSORS" TO DISPLAY REASONABLE
- CHARACTERS AS CURSORS. (FOR A TTY, "[", "]", AND "$" ARE SUGGESTED)
-
- MODIFY THE EDITOR WORD "ERASE" TO ERASE THE SCREEN AND HOME THE CURSOR
- ON YOUR TERMINAL.
-
- IF YOU ARE USING A TELETYPE INSTEAD OF A DISPLAY TERMINAL, DELETE THE
- FOLLOWING WORDS:
-
- DISPLAY-CURSORS
- DISPLAY-CHAR
- DISPLAY
- ERASE
- EDIT-PROMPT
- ERRS
-
- REDEFINE THE FOLLOWING WORDS:
-
- 'H : GX > ;
- 'EDIT : GX EDITOR<
- MEMORY @ DUP LAST ! DUP XLAST ! DUP CP ! DUP P1 ! P2 ! ;
-
-
- LOADING STOIC
-
- <CR> STANDS FOR THE CARRIAGE RETURN KEY
-
- 1) COPY THE BASIC DEFINITIONS AND FILE SYSTEM PROGRAMS ONTO THE
- DISK AS TWO SETS OF CONTIGUOUS BLOCKS. WRITE DOWN THE STARTING
- BLOCK # FOR EACH PROGRAM. WHEN COPYING THE TWO PROGRAMS ONTO THE
- DISK, NOTE THAT LINES ARE TERMINATED BY CARRIAGE RETURN ONLY;
- NO LINE FEEDS SHOULD BE INSERTED INTO THE FILES.
-
- 2) ASSEMBLE STOIC AND LOAD IT INTO MEMORY; START AT "SIZE".
-
- 3) TYPE "N LOAD<CR>" WHERE N IS THE FIRST BLOCK NUMBER OF THE BASIC
- DEFINITIONS PROGRAM ON THE DISK.
-
- 4) TYPE "N LOAD<CR>" WHERE N IS THE FIRST BLOCK NUMBER OF THE FILE
- SYSTEM PROGRAM ON THE DISK.
-
- 5) TYPE "ZERO-DIRECTORY<CR>".
-
- 6) TYPE "'STOIC WRITE-BOOT<CR>" TO MAKE A BOOTSTRAPPABLE VERSION
- OF STOIC ON THE DISK. FROM THIS POINT ON, THE BOOTSTRAP SHOULD
- LOAD STOIC BY ANSWERING "STOIC<CR>" TO THE QUESTION "FILENAME ? ".
-
- 7) TO LOAD FILES FROM A CHARACTER-ORIENTED INPUT DEVICE ONTO
- A DISK FILE, TYPE IN THE FOLLOWING PROGRAM:
-
- 'GET : ... ;
-
- 'LOAD-FILE : OFILE WOPEN
- BEGIN GET DUP PUTBYTE EOF EQ END
- EOF PUTBYTE SHRINK CLOSE FLUSH ;
-
- WHERE "GET" DEFINES A WORD WHICH RETURNS THE NEXT BYTE OF THE FILE
- ON THE STACK. AT THE END OF THE FILE, "GET" MUST RETURN AN EOF (^D).
-
- 'NAME LOAD-FILE<CR>
-
- WILL THEN COPY FROM THE INPUT DEVICE TO THE NAMED DISK FILE.
-
- 8) LOAD THE EDITOR AND ANY OTHER PROGRAMS YOU NEED ONTO THE DISK.
-
- 9) THE BASIC DEFINITIONS AND FILE SYSTEM PROGRAMS NEED NOT BE SAVED
- ON THE DISK.
-
-
- THE LINE DRAWER AND INTERRUPT HANDLER ARE HIGHLY SYSTEM DEPENDENT
- AND ARE INCLUDED MAINLY AS GUIDELINES FOR WRITING YOUR OWN ROUTINES.
-
-
-
- ***EOF***
-
-
-
-
-
-
-