1
0
mirror of https://github.com/opsxcq/mirror-textfiles.com.git synced 2025-08-08 09:26:39 +02:00
Files

398 lines
15 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

======================================
TASC DOCUMENTATION
ENTERED BY: JUDIE MAC
SYSTEM REQUIR:APPLE II OR APPLE II+ 48K RAM
THE APPLESOFT COMPILER:
TO EXTEND APPLESOFT LANGUAGE
TO COMPLEMENT APPLESOFT INTERPRETER
1.
INCREASE EXECUTION SPEED COMPILED WITH TASC = 2 TO 20 TIMES
FASTER THAN W/INTERPRETER
2.
INTER-PROGRAM COMMUNICATON=COMMUNICATE PGMS WITH EACH OTHER
BY COMMON VARIABLES
3.
TRUE INTEGER ARITHMETIC
4.
SOURCE-CODE SECURITY=TASC CREATES MACHINE LANGUAGE EQUIVALENTS
OF APPLESOFT BASIC PGMS
5.
DISK-BASED COMPILATION
CHAPTER 1- INTRODUCTION
CHAPTER 2- DEMO RUN
CHAPTER 3- INTRO TO COMPILATION
CHAPTER 4- DEBUGGING W/THE/INTERPRETER
CHAPTER 5- COMPILATION
CHAPTER 6- EXECUTING A COMPILED PROGRAM
CHAPTER 7- A COMPILER/INTERPRETER LANGUAGE COMPARISON
CHAPTER 8- LANGUAGE ENHANCEMENTS
CHAPTER 9- HOW THE COMPILER WORKS
CHAPTER 10-ERROR MESSAGES & DEBUGGING
APPENDICES:
A - MOVING BINARY FILES W/ADR UTILITY- BLOAD AND BSAVE W/ADR UTILITY
B - COPYING TASC & CONVERTING TO 3.3
C - CREATING A TURNKEY DISK
D - NOTES ON APPLESOFT-INFO ON UNUSUAL APPLESOFT FEATURES
E - RUNTIME MEMORY MAP - MEMORY USAGE ON COMPILED PGMS
F - ZERO PAGE USAGE
FILES ON DISK:
1 - TASC- APPLESOFT COMPILER
2 - PASS0,PASS1,PASS2- INTERNAL COMPONENTS OF TASC
3 - RUNTIME- LIBRARY OF MACHINE LANGUAGE ROUTINES
4 - ADR - UTILITY FOR BINARY FILES
5 - CREATE ADR - UTILITY FOR CREATING ADR ON OTHER DISKS
6 - BALL - DEMO PGM
2:DEMO RUN:
TASC IS SIMPLE TO USE.TO INVOKE THE COMPILER, FIRST BOOT UP YOUR DISK
AND THEN TYPE:
]RUN TASC
THE NEXT TWO PROMPTS ASK YOU FOR THE NAMES OF THE SOURCE AND OBJECT
FILES:
]SOURCE FILE BALL
]OBJECT CODE FILE: (DEFAULT BALL.OBJ) <RETURN>
THE SOURCE FILE IS A APLSOFT PGM NAMED BALL THAT EXISTS ON THE DISK.
THE OBJECT FILE IS THE MACHINE LANGUAGE BINARY FILE THAT IS CREATED BY
THE COMPILER. THE OBJECT FILE NAME DEFAULTS TO THE ORIGINAL FILE NAME
WITH THE EXTENSION .OBJ ADDED, SO THAT THE OBJECT FILE PRODUCED FOR
THE BALL.OBJ. THE DEFAULT IS SPECIFIED BY ENTERING <RETURN>. THE
SOURCE FILE IS ASSUMED TO BE LOCATED ON THE SAME DISK AS THE COMPILER
UNLESS YOU SPECIFY OTHERWISE. THE OBJECT FILE DEFAULTS TO THE SAME
DISK THAT THE SOURCE IS ON. DIFFERENT SLOTS OR DRIVES CAN BE
SPECIFIED USING THE NORMAL ,S<SLOT NUMBER> AND ,D <DRIVE NUMBER>
SYNTAX. COMPILATION IS USUALLY SLIGHTLY FASTER IF ONLY ONE DRIVE IS
USED. DISK COMMANDS CAN BE EXECUTED BY TYPING <CTRL-D> FOLLOWED BY
THE COMMAND AND <RETURN> THE NEXT TWO PROMPTS ASK YOU WHETHER YOU WANT
DEFAULT VALUES FOR ALL OTHER COMPILATION OPTIONS. SINCE MOST
COMPILATIONS ARE PERFORMED WITH THE SAME SET OF OPTIONS, YOU SHOULD
ENTER <RETURN> AFTER EACH PROMPT TO SPECIFY THE DEFAULT VALUES.
MEMORY USAGE:
DEFAULT CONFIGURATION <RETURN>
OPTIONS:
DEFAULT CONFIGURATION <RETURN>
IF YOU HAD REFUSED THE DEFAULT CONFIGURATIONS ABOVE, YOU WOULD NEED TO
EXPLICITLY SPECIFY THE VALUES OF SEVERAL COMPILATION OPTIONS. THE
ACTUAL COMPILATION PROCESS STARTS WITHOUT FURTHER INPUT SINCE YOU HAVE
SPECIFIED THE DEFAULTS ABOVE. WHEN COMPILATION BEGINS,THE DISK IS
ACCESSED ALMOST CONSTANTLY TO EITHER READ THE SOURCE FILE OR TO WRITE
THE OBJECT FILE. THE COMPILER LISTS THE SOURCE PROGRAM ON YOUR
CONSOLE AS IT IS BEING COMPILED AND GENERATES APPROPRIATE MESSAGES IF
IT ENCOUNTERS ANY ERRORS.THEN THE SOURCE STOPS LISTING,THE FIRST PARTS
OF COMPILATION IS FINISHED, AND THE COMPILER PRINTS:
*****BEGINNING PASS2
THE SECOND PART OF COMPILATION ALSO USED THE ???? EXTENSIVELY. TO
INDICATE THAT IT IS STILL COMPILING, THE COMPILER PRINTS A PERIOD ON
THE SCREEN EVERY FEW SECONDS. WHEN IS IS FINISHED, THE COMPILER
PRINTS:
*****CODE GENERATION COMPLETE
AT THIS POINT,THE ACTUAL COMPILATION PROCESS IS COMPLETE.SO THAT YOU
WILL RECEIVE A LISTING OF COMPILATION INFORMATION, ANSWER "Y" OR "YES"
TO THE NEXT PROMPT:
COMPILATION INFORMATION AND LINE NUMBER REFERENCE TABLE YES
THIS INPUT ALSO ACCEPTS <CRTL D> DISK COMMANDS. IF YOU WANT TO LIST
THE COMPILATION INFORMATION ON A PRINTER, YOU CAN FIRST TURN ON YOUR
PRINTER BY ENTERING:<CTRL-D)PR#(PRINTER SLOT>
TASC PRINTS OUT THE DESIRED INFORMATION, DISPLAYS THE FOLLOWING
MESSAGE, AND THEN RE-ENTERS THE INTERPRETER:
*****COMPILATION COMPLETE
]
THE INCREASE IN THE BALL PROGRAMS EXECUTION SPEED IS QUITE APPARENT
WHEN COMPARED TO THE SAME PROGRAM RUNNING UNDER THE INTERPRETER.
COMPARE SPEEDS BY FIRST RUNNING THE INTERPRETED PROGRAM:
]RUN BALL
NEXT EXECUTE THE COMPILED PROGRAM BY ENTERING THE FOLLOWING DOS
COMMANDS:
]BLOAD RUNTIME
]BRUN BALL.OBJ
NOTE THAT THE RUNTIME LIBRARY MUST BE BLOADED IN MEMORY BEFORE
BALL.OBJ AND CAN BE BRUN.
YOU HAVE NOW SUCCESSFULLY COMPLETED THE DEMO RUN.
COMPILATION ******VOCABULARY
SOURCE FILE -
THE APPLESOFT PROGRAM IS COMMONLY CALLED A SOURCE FILE BECAUSE IT IS
THE SOURCE FROM WHICH AN EQUIVALENT MACHINE LANGUAGE FILE IS CREATED.
THE SOURCE FILE IS THE INPUT FILE TO THE COMPILER. CATALOG LISTS THE
NAMES OF APPLESOFT SOURCE FILES WITH THE LETTER "A" PRECEDING THE SIZE
OF EACH FILE.
OBJECT FILE -
TASC TRANSLATES SOURCE FILES INTO MACHINE LANGUAGE OBJECT FILES. THE
OBJECT FILE IS THE OUTPUT FILE CREATED BY THE COMPILER.THE OBJECT
FILES IS AN EXECUTABLE BINARY FILE THAT IS THE MACHINE LANGUAGE
EQUIVALENT OF THE SOURCE. CATALOG LISTS THE NAMES OF TASC OBJECT
FILES WITH THE LETTER "B" PRECEDING THE SIZE OF THE FILE.
COMPILETIME-
THE TIME DURING WHICH THE COMPILER IS TRANSLATING A SOURCE FILE INTO
AN OBJECT FILE.
RUNTIME -
THE TIME DURING WHICH A COMPILED PROGRAM IS EXECUTING. BY CONVENTION,
RUNTIME REFERS TO THE EXECUTION TIME OF A COMPILED PROGRAM AND NOT TO
THE EXECUTION TIME OF THE COMPILER.
RUNTIME LIBRARY -
A COLLECTION OF MACHINE LANGUAGE ROUTINES THAT ARE USED BY COMPILED
OBJECT PROGRAMS. THESE ROUTINES ALL RESIDE IN THE FILE NAMES RUNTIME.
RUN TIME MUST BE LOADED INTO MEMORY BEFORE AN OBJECT FILE CAN BE
EXECUTED.
COMPILATION VS INTERPRETATION:
SINCE THE MICROPROCESSOR IN THE APPLE CAN EXECUTE ONLY ITS OWN MACHINE
INSTRUCTIONS, IT DOES NOT EXECUTE APPLESOFT PROGRAM STATEMENTS
DIRECTLY.INSTEAD,STATEMENTS MUST BE SIMULATED BY MACHINE LANGUAGE
ROUTINES THAT PERFORM THE OPERATIONS SPECIFIED BY THE BASIC
STATEMENT.
INTERPRETATION:
THE INTERPRETER TRANSLATES APPLESOFT SOURCE STATEMENTS LINE BY LINE AT
RUNTIME. EACH TIME THE INTERPRETER EXECUTES AN APPLESOFT STATEMENT,
IT MUST ANALYZE THE STATEMENT, CHECK FOR ERRORS AND CALL MACHINE
LANGUAGE ROUTINES THAT PERFORM THE DESIRED FUNCTION. WHEN STATEMENTS
MUST BE EXECUTED REPEATEDLY, AS MUST THOSE WITH A FOR/NEXT LOOP, THE
TRANSLATION PROCESS MUST BE REPEATED EACH TIME THE STATEMENT IS
EXECUTED. IN ADDITION,BASIC LINE NUMBERS ARE STORED IN A LIST. GOTO'S
AND GOSUB'S FORCE THE INTERPRETER TO SEARCH THIS LIST TO FIND THE
DESIRED LINE.THIS SEARCH IS QUITE SLOW WHEN THE NEEDED LINE IS NEAR
THE END OF A LONG PROGRAM. THE INTERPRETER KEEPS TRACK OF VARIABLES
USING A LIST,TOO. WHEN IT ENCOUNTERS A REFERENCE TO A VARIABLE, THE
INTERPRETER SEARCHES FROM THE BEGINNING OF THE LIST TO FIND THE
DESIRED VARIABLE. IF THE VARIABLE IS NOT PRESENT IN THE LIST, THE
INTERPRETER MUST CREATE A NEW ENTRY FOR IT. THIS PROCEDURE ALSO SLOWS
INTERPRETED PROGRAMS.
COMPILATION:
A COMPILER, ON THE OTHER HAND, TAKES A SOURCE PROGRAM AND TRANSLATES
IT INTO A MACHINE LANGUAGE OBJECT FILE. THIS OBJECT FILE CONSISTS OF A
LARGE NUMBER OF MACHINE LANGUAGE CALL'S TO ROUTINES IN THE RUNTIME
LIBRARY AND TO ROUTINES IN THE APPLESOFT INTERPRETER, TASC ASSURES
CLOSE LANGUAGE COMPATIBILITY WITH THE INTERPRETER. IN CONTRAST TO THE
INTERPRETER, THE COMPILER ANALYZES ALL STATEMENTS BEFORE RUNTIME. IN
ADDITION,ABSOLUTE MEMORY ADDRESSES ARE PROVIDED FOR VARIABLES AND
PROGRAM LINES.THESE ADDRESSES ELIMINATE THE LIST SEARCHING THAT OCCURS
WHILE AN INTERPRETED PROGRAM EXECUTES. TASC,UNLIKE THE INTERPRETER,
IMPLEMENTS TRUE INTEGER ARITHMETIC AND INTEGER LOOP VARIABLES IN
FOR/NEXT LOOPS.IN COMPARISON, THE APPLESOFT INTERPRETER CONVERTS ALL
INTEGERS TO REAL NUMBERS BEFORE OPERATING ON THEM. THESE CONVERSIONS
MAKE INTERPRETED INTEGER ARITHMETIC RELATIVELY INEFFICIENT. IN
ADDITION,THE INTERPRETER FORBIDS USE OF INTEGERS AS LOOP
CONTROLVARIABLES IN FOR/NEXT LOOPS.
PROGRAM DEVELOPMENT
1 CREATE AND EDIT APPLESOFT SOURCE
2 RUN AND DEBUG SOURCE WITH THE INTERPRETER
3 COMPILE SOURCE,CREATING A BINARY OBJECT FILE
4 EXECUTE COMPILED OBJECT FILE
DEBUGGING WITH THE APPLESOFT INTERPRETER*****
DEBUGGING A PROGRAM INTENDED FOR COMPILATION IS A TWO STEP PROCESS
THAT INVOLVES:
1.CREATING THE SOURCE PROGRAM,AND
2.RUNNING THE PROGRAM UNDER THE INTERPRETER TO CHECK FOR ERRORS.
CREATING A SOURCE PROGRAM:
AN APPLESOFT SOURCE PROGRAM REQUIRES THE USE OF THE EDITOR AVAILABLE
WITHIN APPLESOFT. PROGRAMS ARE CREATED BY SIMPLY ENTERING APPLESOFT
STATEMENTS FROM WITHIN APPLESOFT. ONCE A PROGRAM HAS BEEN CREATED, IT
CAN BE SAVED TO DISK WITH SAVE. TASC CAN ONLY COMPILE APPLE SOFT DISK
FILES.
RUNNING A PROGRAM WITH APPLESOFT:
PROGRAMS SHOULD BE DEBUGGED USING THE APPLESOFT INTERPRETER BEFORE
BEING COMPILED. IF THE PROGRAM TO BE COMPILED USES TASC FEATURES THAT
ARE NOT AVAILABLE IN THE INTERPRETER, IT MAY BE NECESSARY TO DEBUG THE
PROGRAM WITH THE COMPILER.
TASC IS HIGHLY COMPATIBLE WITH THE APPLESOFT INTERPRETER.THIS
COMPATIBILITY ALLOWS THE APPLESOFT INTERPRETER TO FUNCTION AS THE
PRIMARY DEBUGGING TOOL. THE INTERPRETER PROVIDES MUCH BETTER DEBUGGING
FACILITIES THAN A COMPILER,SINCE IT INCLUDES FEATURES SUCH AS TRACE.
THERE ARE SOME DRAWBACKS TO DEBUGGING WITH THE INTERPRETER: STATEMENTS
THAT ARE ONLY EXECUTED UNDER SPECIAL CIRCUMSTANCES MAY NEVER BE
EXAMINED, AND THE INTERPRETER HALTS EXECUTION WHEN IT ENCOUNTERS THE
FIRST ERROR IN A PROGRAM.
DEBUGGING WITH THE COMPILER DOES NOT SUFFER FROM THESE DRAWBACKS SINCE
THE COMPILER EXAMINES EVERY STATEMENT IN A PROGRAM, AND CAN CONTINUE
THE COMPILATION EVEN IF IT ENCOUNTERS ERRORS.
IN GENERAL,COMPILING A PROGRAM IS AN EFFECTIVE WAY TO CHECK FOR SYNTAX
ERRORS; HOWEVER,PROGRAM LOGIC ERRORS ARE MORE EASILY TRACKED DOWN WITH
THE INTERPRETER.
COMPILATION********
NOTE****
IF A COMPILED PROGRAM DOES NOT RUN CORRECTLY, SEE ERROR MESSAGES AND
DEBUGGING FOR SOME POSSIBLE SOLUTIONS.
OPTIONS:
THE DEMO RUN SHOWED ONLY THE MOST BASIC TYPE OF COMPILATION. TASC
INCLUDES SEVERAL OPTIONS THAT CAN BE USED TO CONTROL COMPILATION MORE
CLOSELY.THE REQUESTED OPTIONS CONTROL MEMORY ALLOCATION AND
COMPILATION.TO EXPLICITLY SPECIFY THE VALUES FOR THESE OPTIONS,SIMPLY
ANSWER "NO" WHEN THE COMPILER OFFERS THE DEFAULT VALUES.
MEMORY USAGE:
THE MEMORY USED BY THE COMPILED CODE AT RUNTIME IS DIVIDED INTO THREE
AREAS:
1.RUNTIME
1 LIBRARY
2.OBJECT PROGRAM
3.VARIABLES
TASC ALLOWS THE LOCATION FOR EACH OF THESE BLOCKS TO BE SPECIFIED
SEPARATELY. THE MEMORY ALLOCATION FEATURES CAN BE USED TO PROTECT
MACHINE LANGUAGE PROGRAMS, SHAPE TABLES, THE HIRES SCREENS, OR ANY
OTHER IMPORTANT PART OF MEMORY.
THE DEFAULT ALLOCATIONS ORDER,LIBRARY, PROGRAM,VARIABLES.THE LIBRARY
IS ALLOCATED LOWEST AND PROGRAM AND VARIABLES FOLLOW. THE LIBRARY
BEGINS AT LOCATION 2051, OR $803.
ALTERNATE ADDRESSES FO THE BLOCKS ARE SIMPLE TO SPECIFY. THE NEW
LOCATION FOR THE LIBRARY IS ENTERED AS A NUMBER AND DEFAULTS TO $803.
ADDRESSES CAN BE SPECIFIED IN EITHER HEXADECIMAL OR DECIMAL. HEX MUST
HAVE ($)
THE LIBRARY MUST BE BLOADED BEFORE A COMPILED PROGRAM CAN BE RUN. BY
DEFAULT THE LIBRARY IS LOADED AT $803.WHEN A PROGRAM IS COMPILED TO
EXPECT THE LIBRARY AT A DIFFERENT ADDRESS, THE LIBRARY MUST BE LOADED
IN AT THE CORRECT ADDRESS BY USING "A" OPTION WITH THE BLOAD COMMAND.
MOVING BINARY FILES, WITH ADR UTILITY.
THE BEGINNING ADDRESS FOR THE OBJECT CODE MAY BE SPECIFIED WITH:
1. THE WORD HGR1
2. THE WORD HGR2
3. A DECIMAL OR HEX NUMBER
4. <RETURN>
HGR1 AND HGR2 SET THE BEGINNING OF THE PROGRAM ABOVE THE APPROPRIATE
HIRES SCREEN. THEN 4K RUNTIME LIBRARY DEFAULTS TO THE SPACE BELOW THE
FIRST HIRES SCREEN. THIS DEFAULT LOCATIONS IS SUGGESTED FOR PGMS OF
HIRES.
VARIABLE SPACE MAY BE SPECIFIED EXPLICITLY OR ALLOWED TO DEFAULT. THE
BEGINNING OF VARIABLE SPACE DEFAULTS TO THE END OF THE OBJECT CODE.
COMPILED PGMS USE THE NORMAL HIMEM POINTER TO DETERMINE THE TOP OF
AVAILABLE STRING SPACE, AND STRINGS GROW DOWNWARD FROM THERE.
COMPILATION OPTIONS:
COMPILATION LISTING YES
PAUSE ON ERRORS YES
INTEGER ARITHMETIC YES
INTEGER CONSTANTS YES
RESUME/DEBUG CODE NO
ANSWERING "NO" OR "N" TO THE DEFAULT OPTION PROMPT PROVIDES A CHANGE
TO TURN EACH OF THESE OPTIONS ON OR OFF.
THE COMPILER NORMALLY LISTS THE SOURCE FILE. TURNING THE LISTING
OPTION OFF SUPPRESSES THE LISTING. ERRORS, WARNING, AND SPECIAL
MESSAGES ARE PRINTED AS USUAL.
PAUSE ON ERRORS OPTION:
ERRORS NORMALLY HALT COMPILATION AND ALLOW THE USER TO ABORT OR
CONTINUE COMPILATION. TURNING THE PAUSE OPTION OFF SUPPRESSES THE
PAUSE AFTER ANY ERROR MESSAGE ARE PRINTED.
INTEGER ARITHMETIC OPTION:
TASC INCLUDES A FULL INTEGER ARITHMETIC PACKAGE. TRUE INTEGER
ARITHMETIC ALLOWS OPERATIONS ON INTEGERS TO BE PERFORMED IN ABOUT HALF
THE NORMAL TIME.INCLUDING THE OPTION SUBSTANTIALLY INCREASES THE SPEED
OF PGMS THAT USE INTEGERS.
INTEGER CONSTANTS:
CONSTANTS IN A COMPILED PROGRAM CAN BE TREATED AS INTEGERS OR FLOATING
POINT NUMBERS. SELECTING THE INTEGER CONSTANTS OPTIONS ALLOWS
CONSTANTS THAT ARE USED AS INTEGERS TO BE STORED IN INTEGER FORMAT.
IF A CONSTANT IS NEEDED IN FP IT INCLUDES BOTH.
INTEGER CONSTANTS TAKE UP TWO BYTES IN THE OBJECT FILE:FP TAKES
FIVE.THE INTEGER CONSTANTS OPTION SHOULD NORMALLY BE LEFT ON.
RESUME/DEBUG CODE OPTION:
TURNING ON THE RESUME/DEBUG CODE OPTION CAUSES CODE TO HANDLE THE
RESUME STATEMENT TO BE INCLUDED IN THE OBJECT PGM. THE RESUME IN
APPLESOFT ALLOWS AN ERROR TRAPPING ROUTINE TO RESUME EXECUTION AT THE
BEGINNING OF THE STATEMENT THAT CAUSED THE ERROR. TASC ALSO FULLY
SUPPORTS ONERR GOTO. THE COMPILED VERSION OF ONERR GOTO TRAPS ALL
RUNTIME ERRORS, INCLUDING THOSE THAT OCCUR WITHIN ROUTINES FROM THE
APPLESOFT INTERPRETER.
INCLUDING THE RESUME/DEBUG OPTION REQUIRES THE COMPILER TO GENERATE
EXTRA CODE AT THE BEGINNING OF EACH STATEMENT THAT MAY GENERATE AN
ERROR. SELECTING RESUME/DEBUG CODE OPTION CAUSES THE OBJECT CODE TO BE
LARGER AND SOMEWHAT SLOWER.
TURNING ON THE RESUME/DEBUG CODE OPTION HAS THE ADVANTAGE THAT ANY
RUNTIME ERROR MESSAGES INCLUDE THE OBJECT CODE ADDRESS. NORMALLY,
ONLY SOME OF THE ERRORS GENERATED BY THE RUNTIME LIBRARY INCLUDE AN
OBJECT CODE ADDRESS. THE RESUME/DEBUG OPTION CAN BE USEFUL FOR
DEBUGGING WITH THE COMPILER. HOWEVER, INCLUDING IT DOES DECREASE THE
SPEED AND INCREASE THE LENGTH OF THE COMPILED CODE. THE RESUME/DEBUG
OPTION SHOULD BE LEFT OFF UNLESS IT IS ABSOLUTELY NEEDED. IF THE
OPTION IS TURNED OFF THE COMPILER WILL IGNORE ALL RESUME STATEMENTS.