home *** CD-ROM | disk | FTP | other *** search
- The text which follows was excerpted from a personal letter
- written by Sam Singer describing the changes he has made to
- UCSD pascal. It is was the only documentation available at
- the time users group disks were released. The software
- described herein is still under development by Mr. Singer and
- he was understandably reluctant to release it as it is not
- 'polished' at this time. It is the opinion of this reviewer
- that it is more important to get these ideas out into the
- public domain than to shelter them until they are perfected.
- Unfortunatly, at present they are most usefull to tinkerers.
-
- I'M WORKING ON GETTING PASCAL RUNNING MORE EASILY ON DIFFERENT
- SYSTEMS. I'TS
- FAR FROM COMPLETE BUT THE SYSTEM RUNS WELL AS IT IS AND THE IDEAS SHOULD
- BE USEFUL TO THOSE WHO LIKE TO TINKER. THERE ARE THREE FILES.
-
- PGEN.ASM THIS IS THE OLD PGEN WITH JUST SOME COMMENTS ADDED
- PBOOT.ASM A BOOT LOADER FOR TARBELL OR DELTA CONTROLLERS
- BOOTER.ASM THIS IS A COMBINATION OF THE OLD PINIT AND A BIOS.
-
- I'M GOING TO MODIFY PGEN SOON SO THAT PBOOT IS PART OF IT AND
- YOU WON'T HAVE TO MAKE A LOT OF SEPARATE ASSEMBLIES. THERE ARE COMMENTS
- AT THE BEGINNING OF BOOTER THAT DESCRIBE THE SYSTEM BUT NOT IN MUCH
- DETAIL YET. BASICALLY THE SYSTEM SUPPORTS 4 FORMATS AND UP TO 4 DRIVES
- ON LINE. (ITS EASY TO ADD MORE IF YOU LIKE)
- THE KEY TO MAKING THE THING AUTOMATIC OR SEMI ANYWAY IS THE
- FORMAT CODE ON THE DISK WHICH LETS THE SYSTEM FIGURE OUT WHAT KIND
- OF DISK YOU HAVE. BY THE WAY I'D SURE LIKE TO GET A STANDARD ESTABLISHED
- FOR THESE CODES. I'VE GOT DELTA TO GO ALONG WITH MY CODES. REMEMBER
- CP/M 2.0 WILL SUPPORT ANY NUMBER OF FORMATS JUST LIKE PASCAL WILL SO
- ITS BECOMMING INCREASINGLY IMPORTANT. THERE IS NOTHING MAGIC ABOUT THE
- CODE I USED AND I'M NOT EMOTIONALLY TIED TO IT BUT WE DO NEED A STANDARD.
- THE CODE MUST SPECIFY THREE THINGS.
- 1. THE SECTOR SIZE
- 2. THE DENSITY
- 3. THE TYPE OF DISK IE. SINGLE OR DOUBLE SIDED
-
- THE STANDARD MIGHT ALSO INCLUDE OTHER THINGS LIKE THE NUMBER OF SECTORS
- PER TRACK AND POSSIBLY OH HARD OR SOFT SECTOR, 5" OR 8" BUT THESE ARE
- NOT REALLY NECESSARY AND GET TOO COMPLICATED. THE NUMBER OF SECTORS
- PER TRACK IS GENERALLY SET TO THE MAXIMUM YOU CAN GET ON A DISK RELIABLY
- SO THIS REALLY SHOULDN'T BE A VARIABLE (BUT IT IS).
-
- ALL DISKS AR WRITTEN WITH TRACK 0 SIDE 1 IN STANDARD IBM 3740
- FORMAT. THE REST OF THE DISK IS UP FOR GRABS. SINCE THE FIRST SECTOR
- ON TRACK 0 IS NORMALLY A BOOT LOADER I RESERVED THE LAST BYTE FOR THE
- FORMAT CODE. ACTUALLY THE LAST TWO BYTES ARE AVAILABLE. THE LITTLE BOOT
- PROM ON THE TARBELL AND DELTA CONTROLLERS JUMPS TO 7DH WHEN ITS DONE
- SO YOU HAVE THE LAST TWO BYTES LEFT.
- I MADE THE RIGHT 4 BITS THE SECTOR SIZE CODE AND JUST USED THE
- CODES THE 1771 AND 1791 ALREADY USE. 0=128 BYTES, 1=256 BYTES 2=512 BYTES
- ETC. THE LEFT 4 BITS ARE THE DENSITY CODE 1=DOUBLE AND 2=SINGLE. THESE
- ARE THE CODES ALREADY USED BY THE DELTA CONTROLLER. THE TARBELL CONTROLLER
- DOES ITS DENSITY SELECT DIFFERENTLY. IT DOESN'T MUCH MATTER WHAT THE
- CODE IS. WHAT IS A LITTLE MORE CONVENIENT FOR ONE CONTROLLER IS A LITTLE
- LESS FOR THE OTHERS BUT NOT MUCH. TO INDICATE A DOUBLE SIDED DISK I JUST
- TURNED ON THE HIGHEST BIT IN THE FORMAT BYTE. SO....
-
- 20H STANDARD IBM 3740 FORMAT
- 10H 128 BYTE SECTORS DOUBLE DENSITY (NOT SUPPORTED BY PASCAL)
- 22H 512 BYTE SECTOR SINGLE DENSITY
- 12H 512 BYTE SECTORS DOUBLE DENSITY
- 92H 512 BYTE SECTORS DOUBLE DENSITY DOUBLE SIDED
-
- TOSS IT AROUND A BIT, WHAT DO THE CHICAGO PEOPLE THINK?
-
- ANYWAY TO CONTINUE, THE BOOTER PROGRAM PINIT PART POLLS ALL THE
- DRIVES. A DRIVE NOT READY (OR NOT THERE) WILL NOT BE INCLUDED.
- IF A DRIVE IS READY TRACK ZERO SECTOR 1 IS READ AND THE FORMAT CODE IS
- CHECKED. TABLES ARE INITIALIZED APPROPRIATELY. THE SYSTEM PRINTS
- A MESSAGE INDICATING THE NUMBER OF DRIVES BEING USED AND THE DISK FORMAT
- OF EACH DRIVE AND THEN LOADS THE INTERPRETER AND TAKES OFF AS BEFORE.
- I'V BEEN RUNNING IT DOUBLE DENSITY RECENTLY AND ITS VERY FAST.
- I CAN TRANSFER 48K BYTES PER SECOND (6 TRACKS). COMPILATION SPEED
- ON A LARGE PROGRAM IS ABOUT 675 LINES A MINUTE. 4MHZ Z-80.
- YOU ESPECIALLY NOTICE IT COPYING FILES OR LOADING PROGRAMS. FOR INSTANCE
- THE FILER LOADS IN LESS THAN A SECOND. BY THE WAY THE PASCAL MICRO ENGINE
- HAS MUCH FASTER INTERNAL COMPUTATION SPEED BUT MUCH SLOWER I/O. SINCE
- MOST OPERATIONS ARE I/O BOUND ANYWAY THE ADVERTIZED 5 TO 6 SPEED INCREASE
- IS A BUNCH OF CRAP. I HAVEN'T ACTUALLY TIMED COMPILATION TIME FOR A LARGE
- PROGRAM ON IT BUT IT TAKES THE SYSTEM ABOUT 4 SECONDS TO LOAD THE FILER.
- THERE IS NO EASY SOLUTION TO THE PROBLEM EITHER. THEY DO ALL THERE I/O
- USING PASCAL AND ITS JUST NOT FAST ENOUGH.
- DFOCO ALREADY PUTS THE FORMAT CODES I MENTIONED ON THE DISK. IF
- THE PASCAL SYSTEM DOESN'T RECOGNIZE A CODE IT DEFAULTS TO STANDARD 3740
- FORMAT SO YOU STAY COMPATABLE. TO BRING UP THE SYSTEM FIRST SET THE
- CONDITIONAL ASSEMBLY SWITCHES FOR YOUR SYSTEM IN BOOTER AND ASSEMBLE IT.
- I'M PRETTY SURE THE PERSCI STUFF WON'T WORK YET, I HAVEN'T FINISHED DEBUGGING
- IT BUT I WILL BECAUSE MY CURRENT CUSTOMER HAS A PERSCI. SET THE SWITCHES
- IN PBOOT FOR SINGLE DENSITY 128 BYTE SECTORS AND REASSEMBLE IT. SET THE
- SIZE OF THS SYSTEM IN PGEN AND REASSEMBLE THEN PUT IT ALL TOGETHER WITH
- DDT OR SID. THE SEQUENCE GOES SOMETHING LIKE:
-
- DDT PGEN.COM
- IPBOOT.HEX
- R900
- IBOOTER.HEX
- R1380
- ^C
- SAVE 32 PGEN128.COM
-
- THE OFFSET OF 1380 IS FOR A 64K SYSTEM WITH THE BIOS STARTING
- AT 0FA00H. YOU WILL HAVE TO FIGURE OUT THE PROPER OFFSETS FOR OTHER SIZES.
- YOU CAN DO IT BY TRIAL AND ERROR EVEN SINCE THE BOOTER-PINIT CODE STARTS
- AT 980H WHEN PROPERLY LOADED WITH DDT. JUST CLEAR MEMORY LOAD BOOTER WITH
- DDT AND SEE WHERE IT GOES! THE BOOT ALWAYS GOES TO 900H AS BEFORE.
- YOU ALSO NEED ANOTHER INTERPRETER (Sorry, not available
- at users group release time -- ed.).
- BECAUSE THIS ONE IS A LITTLE
- DIFFERENT. THE SYSTEM VARIABLES STORED BELOW 100H ARE IN A DIFFERENT PLACE.
- THE BIOS ALSO USES THIS AREA FOR TEMPORARY STORAGE TO SAVE MEMORY.
- YOU CAN ASSEMBLE AN INTERPRETER WITH OR WITHOUT FLOATING POINT AND
- TRANCENDENTAL FUNCTIONS BY SETTING THE SWITCHES IN THE INCLUDE FILE.
- AFTER ASSEMBLY YOU HAVE TO RELOCATE THE PROGRAM TO 100H WITH THE RELOCATOR
- RELOC.CODE. PUT THIS INTERPRETER RENAMED SYSTEM.MICRO ON A PASCAL DISK
- WRITE THE BOOTER ON IT WITH PGEN128 AND OFF YOU GO. ONCE YOU HAVE A 128 BYTE
- SYSTEM RUNNING FORMAT A DISK WITH 512 BYTE SECTORS AND JUST COPY THE
- FILES TO IT WITH PASCAL . THE ONLY REQUIREMENT IS THE PROPER FORMAT CODE
- AND THE SYSTEM IS TRANSPARENT.
- KNOWN ERRORS. I DON'T HAVE THE CODE COMPLETED FOR DOUBLE SIDED
- DRIVES. TREATING THEM LIKE MULTIPLE SINGLE SIDED DRIVES WON'T WORK SINCE
- THE TRACK POSITION TABLE WON'T GET SET RIGHT. ITS AN EASY FIX BUT I HAVEN'T
- DONE IT YET. I HAVE RUN THREE FORMATS (NO DOUBLE SIDE) WITH THREE DIFFERENT
- CONTROLLERS WITH NO PROBLEMS AT ALL.
-
-