home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / cpmug / cpmug040.ark / SPASCAL.DOC < prev    next >
Encoding:
Text File  |  1984-04-29  |  6.8 KB  |  126 lines

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