home *** CD-ROM | disk | FTP | other *** search
Text File | 1995-05-25 | 12.9 KB | 226 lines | [04] ASCII Text (0x0000) |
- CONFIGURATION OF FORTH SYSTEM:
-
- 1) ORIGINAL FILES: MAF.PRO - no editor, MAF.ED - editing capabilities
- The following are procedures for creating FORTH.PRO & FORTH.ED
-
- 2) Start up forth, then put in utilities disk. Then look at screen #3.
- This will load additional utilities:
-
- - CASE structure
- - MLI support
- - SAVE" for saving a clone of the system
- - TYPE" and EXEC" to allow interpretation from text files
-
- 3) Type: 3 LOAD to bring in these utilities.
-
- 4) Type EXEC" DUMP.WRD" to add a dump and stack print command
-
- 5) Type SAVE" followed by the filename of the system to be created.
- (FORTH.PRO, FORTH.EXE)
-
- THE FOLLOWING ARE DUMPS OF SCREENS FROM THE UTILITY DISK:
-
- (SCREENS 1-3)
-
- \ System directory (sort of)
-
- \ AID: An Interactive Decompiler 6 8 THRU
- \ File Access 9 11 THRU
- \ Aztec C Unarc 12 14 THRU
- \ Forth Configure 15 17 THRU
- \ Forth Prodos Catalog 18 22 THRU
- \ Save Forth Image 23 24 THRU
- \ Alarm 25 26 THRU
- \ Forth Decompiler 27 34 THRU
- \ Case Structure 36 LOAD
- \ Forth Low Level Prodos Access 37 LOAD
- \ Show Stack 39 LOAD
- \ ABORT" 42 LOAD
- \ Debugging tool 43 LOAD
-
- \ System directory (sort of)
-
- \ Apple ][ output: UC only 45 LOAD
- \ Apple ][ input: New chars: \ [ _ 46 LOAD
- \ Terminal program 48 49 THRU
- \ Clock demon 51 LOAD
- \ Prodos and MLI access (2nd shot) 54 60 THRU
- \ Prodos File Fix 63 67 THRU
- \ argc/argv implementation 69 70 THRU
- \ DOER/MAKE construct 72 LOAD
- \ File-oriented block control 120 125 THRU
- \ Smart Open 129 130 THRU
- \ Text-file conversions 129 132 THRU
-
-
-
- \ ERIC RANGELL'S SYSTEM CONFIGURATION
-
- \ START WITH MAF.PRO OR MAF.ED
- \ LOAD CASE STRUCTURE FROM SCR#36
- \ LOAD MLI SUPPORT FROM SCRS #54-60
- \ LOAD UPDATED SAVE" FROM SCRS #23-24
- \ LOAD TEXTFILE SUPPORT FROM SCRS #90-91
- \ TYPE RESET TO ALLOCATE MLI BUFFER
- \ TYPE REBOOT TO UPDATE THE "COLD" WORD
- \ THEN USE SAVE" TO SAVE YOUR SYSTEM
-
- 36 LOAD 54 60 THRU 23 24 THRU 90 91 THRU
- RESET REBOOT
-
- ( SCREEN 36 )
-
- \ Case structure
-
- : CASE ( n -- ) ?COMP CSP @ SP@ CSP ! 4 ; IMMEDIATE
- : OF ( n1 n2 -- n1 ) 4 ?PAIRS COMPILE OVER COMPILE =
- COMPILE 0BRANCH HERE 0 , COMPILE DROP 5 ; IMMEDIATE
- : ENDOF 5 ?PAIRS COMPILE BRANCH HERE 0 , SWAP 2
- [COMPILE] ENDIF 4 ; IMMEDIATE
- : DEFAULT DUP ;
- : ENDCASE 4 ?PAIRS COMPILE DROP BEGIN
- SP@ CSP @ = NOT
- WHILE
- 2 [COMPILE] ENDIF
- REPEAT CSP ! ; IMMEDIATE
-
-
- ( SCREENS 54-60 )
-
- \ Forth File access (2nd shot)
-
- CR INVERSE ." Warning: move LIMIT down $400 for file buffer "
- NORMAL CR ." Type RESET to move buffer down $400 " CR
-
- : RESET LIMIT 1024 - ' LIMIT ! ;
- : ?DERR ( err# -- ) ?DUP IF DERR THEN ; HEX
- : (OPENF) \ fname -- fd err# .... err# eq 0 is allok
- PAD 1+ ! 3 PAD C! LIMIT 1+ PAD 3+ ! \ setup parm list
- PAD C8 MLI PAD 5 + C@ SWAP ; \ return file ref#
- DEC
- \ Forth File Access (2nd shot)
-
- HEX
- : (CLOSEF) ( f# -- err# ) 1 PAD C! PAD 1+ C! PAD CC MLI ;
- : (SEEKF) PAD 1+ C! \ mark.d ref# -- err#
- PAD 4 + C! PAD 2+ ! \ save 24bit data
- 2 PAD C! PAD CE MLI ;
- DEC
-
- \ Forth File Access (2nd shot)
-
- HEX
- : (CREATEF) \ fname type auxtype -- err#
- PAD 5 + ! PAD 4 + C! PAD 1+ ! \ all arguments stored
- 7 PAD C! 0C3 PAD 3+ C! 1 PAD 7 + C! \ flesh out..
- \ time and date stamp file......
- 0 82 MLI DROP BF90 @ PAD 8 + ! BF92 @ PAD 0A + !
- PAD C0 MLI ; \ returns err#
- DEC
- \ Forth File Access (2nd shot)
-
- HEX \ GO-RW is setup for file read or write
- : GO-RW ( addr bytes fd -- ) 4 PAD C! PAD 1+ C!
- SWAP PAD 2+ ! PAD 4 + ! ;
- : (READF) ( addr bytes fd -- err# ) GO-RW PAD 0CA MLI ;
- : (WRITEF) ( addr bytes fd -- err# ) GO-RW PAD 0CB MLI ;
- : (FLUSHF) ( ref# -- err# ) 1 PAD C! PAD 1+ C!
- 0CD MLI ;
- : (EOF) ( ref# -- eof.d err# ) 2 PAD C! PAD 1+ C!
- PAD 2+ !0 PAD 3+ !0 \ === WE CHEATED!! notice?
- PAD 0D1 MLI PAD 2+ @ PAD 4 + C@ ROT ; DEC
- \ Forth File Access (2nd shot)
-
- \ use of (GETINFO) before (SETINFO) is STRONGLY encouraged
- HEX
- : (GETINFO) ( fname -- err# ) 0A PAD C! PAD 1+ !
- PAD 0C4 MLI ;
- : (SETINFO) ( -- err# ) 7 PAD C! PAD 0C3 MLI ; DEC
-
- \ Forth File Access (2nd shot)
-
- HEX
- : (TIME) \ -- date.compact time.compact (1byte each)
- 0 82 MLI DROP BF90 @ BF92 @ ;
-
- \ could use (SETINFO) and (GETINFO) in (TOUCH),
- \ but want to maintain routine independence
-
- : (TOUCH) ( fname -- err# ) 0A PAD C! PAD 1+ !
- PAD 0C4 MLI ?DUP 0= IF \ get info
- PAD 0A + !0 PAD 0C + !0 \ use current date/time
- 7 PAD C! PAD 0C3 MLI \ do set info
- THEN ; \ error could be from getinfo or setinfo
- DEC
-
- \ Forth File Access (2nd shot)
-
- HEX
- : (SET-EOF) \ set-eof call eof.d ref# -- ?
- 2 PAD C! PAD 1+ C! \ store count, ref#
- PAD 3+ ! PAD 2+ C! \ store eof (24b)
- PAD 0D0 MLI ;
- : (POSF) \ get current file position
- 2 PAD C! PAD 1+ C! PAD 0CF MLI
- PAD 2+ @ PAD 4 + C@ ROT ; DEC
-
- ( SCREENS 23-24 )
-
- \ SAVE FORTH IN BINARY IMAGE - PART 1
-
- \ REBOOT UPDATES "COLD" BEFORE SAVING IMAGE
- DEC
- : REBOOT
- DEFINITIONS HERE 48 +ORIGIN !
- VOC-LINK @ DUP 50 +ORIGIN !
- BEGIN
- DUP 4 - @ OVER 2 + ! @
- ?DUP 0=
- UNTIL
- ;
- \ Save-forth in binary image
-
- CR ." Strongly recommend you update cold before using"
- CR ." this word: COLD executes on startup"
- : SAVE" ( -- ) REBOOT ASCII " WORD DUP 6 ( BIN ) 0 +ORIGIN
- (CREATEF) ?DERR \ create new file (returns fd)
- (OPENF) ?DERR \ open file #fd...
- 0 +ORIGIN HERE OVER - ROT (WRITEF) ?DERR
- 0 (CLOSEF) ?DERR ; \ close the file
-
-
- ( SCREENS 90-91 )
-
- \ EXEC FORTH WORDS FROM TEXT FILE
- DEC
- : (NEWLINE)
- 3 PAD C! PAD 1+ C! PAD 2 + C! PAD 3 + C! \ STORE PARMS
- PAD 201 MLI
- ;
- VARIABLE PAD2 128 ALLOT
-
- : PAD2EXE
- TIB @ 128 0 FILL
- PAD2 TIB @ 80 CMOVE
- 0 BLK ! 0 >IN !
- INTERPRET
- ;
-
-
- \ EXEC FORTH WORDS FROM TEXTFILE
- VARIABLE REF# \ FILE REF # FOR MLI
- VARIABLE EXEC? \ 0=TYPE 1=EXECUTE
- VARIABLE RCODE \ RETURN CODE FROM MLI
- : TEXTFILE
- ASCII " WORD (OPENF) ?DERR
- DUP 13 127 ROT (NEWLINE) ?DERR REF# !
- CR BEGIN
- REF# @ PAD2 128 0 FILL PAD2 80 ROT (READF) RCODE !
- PAD2 80 TYPE EXEC? @ IF PAD2EXE THEN
- RCODE @ 76 = UNTIL
- REF# @ (CLOSEF) ?DERR
- ;
-
- : TYPE" 0 EXEC? ! TEXTFILE ;
- : EXEC" 1 EXEC? ! TEXTFILE ;
-