home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / BEEHIVE / UTILITYS / C10CPM.ARC / C10CPM.DOC next >
Text File  |  1990-07-21  |  6KB  |  113 lines

  1.                     CPM OVERLAY FOR THE CROMEMCO C-10
  2.  
  3. Written by Brett and John Hunter.  Copyright (c) 8/8/1986.
  4.  
  5. Cdos is suppose to be CPM compatiable, but all C-10 users know that Cdos
  6. has certain small differences that, although easily fixed, can cause major
  7. problems in running public domain software. The major problems are with
  8. system calls 17,18 and 27. These are all disk function calls and lead to
  9. programs giving the wrong disk space free and more importantly a major
  10. malfunction in the disk directory.      
  11.   Calls 17,18 are Find and Search for directory entries. In CPM the returned
  12. value (in the A register) is a value between 0 and 3, which specifies where
  13. in the 128 record the directory entry is (each entry is 32 bytes long).
  14. But in Cdos the A register contains any value, but the value is such that
  15.  (A register) AND 3  gives that correct CPM like value. So all we had to do
  16. was intercept the Cdos calls on returning to the calling program and change
  17. the A register to   AREG := AREG AND 3 .
  18.   System call 27 gets the allocation map address. In CPM the bitmap address is
  19. returned in the HL register, whereas CDOS returns the Last Address in cdos 
  20. in the HL, and the BC contains the bitmap address. It is a simply matter
  21. to swap the DE and BC registers when CDOS returns.
  22.   CDOS also returns more values than CPM but this should not effect the running
  23. of any program, since all normal programs should push all essential registers
  24. before calling CDOS or CPM.
  25.   Other problems with CDOS and the C-10 that have not been fixed as yet are:-
  26.  
  27. (1) The use of IM 1 mode. This makes all CPM programs that use location 38H
  28.     crash the computer since the C-10 uses this location as a jump to
  29.     the screen refreshing routines. So programs such as DDT will not work.
  30.     The screen will blank out if this location is used, so this way you can
  31.     easily recognize what the problem is.
  32.  
  33. (2) Cdos has no bios jump table, so any programs using direct bios calls will
  34.     undoubtedly hang the computer.
  35.  
  36.   We have made two different versions, both for version 5 and above. The
  37. first called CPM.Z80 (.COM) is the simplest and most used. It does all the
  38. above and for good measure also calls 15 and 16. These calls may not have
  39. to be changed and so that code relevant to these calls may be omitted. I
  40. have left them in as an insurance since they will not effect it if the
  41. calls work the "CPM way".
  42.   The second version is the fully documented one since it is the one with
  43. the most features in. This version includes a rudimentary user area facility.
  44. CDOS uses the first byte of the FCB as its Attribute bits (4) and the
  45. drive code (4), whereas CPM uses it as the User code and drive code.
  46. So we have used the attr bits as the user code. To set a file in a certain
  47. user area you use the ATTR or ATTRIBUTE commands in Cdos. ie.
  48.   ATTR FILENAME.EXT ATTRBIT   where FILENAME.EXT can be an ambiguous filename
  49. and ATTRBIT can be either E,W,S,R,or U corresponding to
  50. Erase protect,Write protect, System file, Read protect, and User file.
  51. ATTRBIT can be any combination of these. eg EWS or US or SW etc.
  52.  The Erase protect bit does not appear in the first byte of the entry, and the
  53. others are such that:
  54.   bit     7 = write protect
  55.           6 = read    "
  56.           5 = SYS file
  57.           4 = USER file
  58. You have 16 different combinations for "fake" user areas. I recommend that 
  59. the read attr is not used since you can not even look at the file when it
  60. is set. At the time of release of this document the code did not fully work.
  61. It DOES work but I seem to be only able to get 4 user areas and that is by
  62. combinations of W and U. ie U,W,WU and nothing. This may have something to
  63. do with the fact that the only none working attr bit is the SYS and CDOS
  64. may use this in a yet undocumented way.                                
  65.  
  66.   So at the time of writting this I have made a working copy of vers 1.01
  67. and a semi (but functional) copy of vers 1.02.
  68.  
  69. These vers's will only work on the C-10 version 5 and above although it would
  70. be very easy to change to version 4 and less (or to the S-100 CDOS versions or
  71. the CROMIX CDOS emulator).           
  72.   The following is an extra for people with versions 4 and less. To convert
  73. to version 4 and less you need to change the destination and find the locations
  74. and values of the RET etc. But also you may like to add a small supplement
  75. as so to have system call 31. This is a MAJOR problem with version 4 and less.
  76. The code will be somthing like this:
  77.  
  78.      add to the CP statements a CP 31 and JP Z,M31  and the followin code:
  79.  
  80. M31: EQU $+OFFSET
  81.              LD HL.DPB
  82.              pop's
  83.              RET
  84.  
  85. DPB: EQU $+OFFSET
  86.      DEFB  28H,00H,              ; Number of logical rec's/track
  87.            04H,                  ; Block shift factor
  88.            0FH,                  ; Block mask
  89.            00H,                  ; Extent mask
  90.            0C2H,00H,             ; Total storage cap. (n-clusters -1)
  91.            7FH,00H,              ; No. of DIR entries -1
  92.            0C0H,00H,             ; Reserved dir clusters
  93.            21H,00H,              ; DRM/4 + 1
  94.            01H,00H,              ; No. of reserved system tracks
  95.            02H,                  ; Physical record shift factor
  96.            03H                   ; Physical record mask
  97.  
  98. This will probably work, so if you have version 4 or less, just add the
  99. above and compile on the Cromemco Z80 Assembler and the Link it.
  100.  
  101. These programs were written by an L-plate Z80 language programmer, so if
  102. you have any improvements then please let me know either by writting
  103. to Brett Hunter, 7 Gilbert St, Sylvania, NSW, 2224, Australia, or
  104. leave a message on Tesseract RCPM (02) 651-1404 or ring me on (02) 522-8669.
  105.  
  106.   The following is a small list of the programs that never used to work
  107. at all or only partially :
  108.         IMP, CROSSTALK, TURBO PASCAL, DIR programs, LIBRARY programs (NULU etc) , UNSQZ programs, SQ programs, CATALOGING progs (CAT, FATCAT etc), etc, etc...
  109.  There are still a few programs that don't work but they are becoming rarer.
  110. (Also version 1.02 is good for ROS).
  111.  
  112. I hope you enjoy the programs.                     
  113.                                      BRETT HUNTER.