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 / CPM / ZCPR33 / S-Z / VTCAP11.LBR / ERROR.1Z0 / ERROR.18°
Text File  |  2000-06-30  |  7KB  |  463 lines

  1. ; ERROR Handler Routines
  2. ;
  3. ; Subroutine to include the error handler routines for the
  4. ; routines call from syslib, vlib and z3lib. Other error
  5. ; routines have been added to accomidate the calling program.
  6. ; The following equate MUST be defined in the calling program:
  7. ;
  8. ;    BELL    EQU    xxh        ; xx = HEX notation of bell character
  9. ;
  10. ;    ENTRY:     A=Error code returned from library routine
  11. ;           PSW=Z if no error  NZ if error
  12. ;
  13. ;        All VLIB calls may exit to the error handler
  14. ;        by performing a  jp  nz,v$err after the call 
  15. ;        to the VLIB routine.
  16. ;
  17. ;        None of the Z3LIB routines return any error
  18. ;        conditions.
  19. ;
  20. ;        All SYSLIB routines may exit to the error  
  21. ;        handler by performing a  jp  nz,x?xx after
  22. ;        the call to the SYSLIB routine.
  23. ;
  24. ;        example:        
  25. ;                call    f$append
  26. ;                jp    nz,f?append
  27. ;
  28. ;        The '?' replaces the '$' in the error routines.
  29. ;
  30. ;        If no '$' exists in name, append the '?' to the 
  31. ;        end of the routine name.
  32. ;
  33. ;    EXIT:    Error message is printed on CRT, at row 23 column 5,
  34. ;        in the following format:
  35. ;
  36. ;        ERROR - Error Message
  37. ;
  38. ;        ERROR is printed in full intensity whereas the error
  39. ;        message itself is printed in half intensity. When
  40. ;        the error message is printed, the console bell sounds.
  41. ;
  42. ;        On exit, a  jp  exit  is performed. It is the programmers
  43. ;        responsibility to insure that the exit routine closes all
  44. ;        files, restores the system stack pointer and any other
  45. ;        necessary housekeeping chores.
  46. ;
  47. ;        ALL ERRORS ABORT YOUR PROGRAM
  48. ;
  49. ; Syslib routines used:    GXYMSG, STNDOUT, STNDEND, VPRINT, PHL5DC
  50.  
  51. opt?:    cp    0
  52.     ret    z 
  53.     call    gxymsg
  54.     db    24,5
  55.     db    bell,2,'ERROR',1
  56.     db    ' - Invalid Option'
  57.     db    0
  58.     call    wait1s
  59.     call    wait1s
  60.     ret
  61.  
  62. ; ALL error report function not available
  63.  
  64. v$err:    cp    0        
  65.     ret    nz
  66.     call    gxymsg
  67.     db    24,5
  68.     db    bell,2,'ERROR',1
  69.     db    ' - VLIB Function Not Available'
  70.     db    0
  71.     ret
  72.  
  73. ; NO special error conditions exist in Z3LIB
  74.  
  75. z$err:
  76.  
  77. ; handles ALL known error conditions in SYSLIB
  78.     
  79. s$err:
  80.     
  81. f?append:
  82. f?appl:    cp    0
  83.     ret    z
  84.     cp    1
  85.     jp    z,app1
  86.     cp    2
  87.     jp    z,app2
  88.     cp    3
  89.     jp    z,app3
  90.     jp    err?
  91.  
  92. app1:    call    gxymsg
  93.     db    24,5
  94.     db    bell,2,'ERROR',1
  95.     db    ' - File not found'
  96.     db    0
  97.     jp     exit
  98.  
  99. app2:    call    gxymsg
  100.     db    24,5
  101.     db    bell,2,'ERROR',1
  102.     db    ' - File is full'
  103.     db    0
  104.     jp    exit
  105.  
  106. app3:    call    gxymsg
  107.     db    24,5
  108.     db    bell,2,'ERROR',1
  109.     db    ' - File found but empty'
  110.     db    0
  111.     jp    exit
  112.  
  113. f?close:
  114.     cp    0
  115.     ret    z 
  116.     call    gxymsg
  117.     db    24,5
  118.     db    bell,2,'ERROR',1
  119.     db    ' - Error in closing file'
  120.     db    0
  121.     jp    exit
  122.  
  123. f?make:    cp    0ffh
  124.     ret    nz
  125.     call    gxymsg
  126.     db    24,5
  127.     db    bell,2,'ERROR',1
  128.     db    ' - No directory space available'
  129.     db    0
  130.     jp    exit
  131.  
  132. f?open:
  133. f?mopen:
  134.     cp    0
  135.     ret    z
  136.     call    gxymsg
  137.     db    24,5
  138.     db    bell,2,'ERROR',1
  139.     db    ' - File not opened'
  140.     db    0
  141.     jp    exit
  142.  
  143. f?read:    cp    0
  144.     ret    z
  145.     cp    1
  146.     jp    z,rea1
  147.     cp    2
  148.     jp    z,rea2
  149.     jp    nz,err?
  150.  
  151. rea1:    call    gxymsg
  152.     db    24,5
  153.     db    bell,2,'ERROR',1
  154.     db    ' - Read past end-of-file'
  155.     db    0
  156.     jp    exit
  157.  
  158. rea2:    call    gxymsg
  159.     db    24,5
  160.     db    bell,2,'ERROR',1
  161.     db    ' - Reading unwritten data in random access'
  162.     db    0
  163.     jp    exit
  164.  
  165. f?write:    
  166.     cp      0
  167.     ret    z
  168.     cp     1
  169.     jp    z,wri1
  170.     cp    2
  171.     jp    z,wri2
  172.     cp    0ffh
  173.     jp    z,wri3
  174.     jp    err?
  175.  
  176. wri1:    call    gxymsg
  177.     db    24,5
  178.     db    bell,2,'ERROR',1
  179.     db    ' - Error in extending file'
  180.     db    0
  181.     jp    exit
  182.  
  183. wri2:    call    gxymsg
  184.     db    24,5
  185.     db    bell,2,'ERROR',1
  186.     db    ' - End of disk data'
  187.     db    0
  188.     jp    exit
  189.  
  190. wri3:    call    gxymsg
  191.     db    24,5
  192.     db    bell,2,'ERROR',1
  193.     db    ' - No more directory space'
  194.     db    0
  195.     jp    exit
  196.  
  197. f?rename:
  198. luopen?:
  199.     cp    0
  200.     ret    nz
  201.     call    gxymsg
  202.     db    24,5
  203.     db    bell,2,'ERROR',1
  204.     db    ' - File not found'
  205.     db    0
  206.     jp    exit
  207.  
  208. getrr?:
  209. getrr1?:
  210. getfs?:
  211. getfs1?:
  212.     cp    0
  213.     ret    z
  214.     call    gxymsg
  215.     db    24,5
  216.     db    bell,2,'ERROR',1
  217.     db    ' - Random record overflow'    
  218.     db    0 
  219.  
  220. r?read:
  221. r?write:
  222.     cp    0
  223.     ret    z
  224.     cp    1
  225.     jp    z,rrd1
  226.     cp    3
  227.     jp    z,rrd3
  228.     cp    4
  229.     jp    z,rrd4
  230.     cp    5
  231.     jp    z,rrd5
  232.     cp    6
  233.     jp    z,rrd6
  234.     jp    err?
  235.  
  236. rrd1:    call    gxymsg
  237.     db    24,5
  238.     db    bell,2,'ERROR',1
  239.     db    ' - Attempt to read unwritten record'
  240.     db    0
  241.     jp    exit
  242.  
  243. rrd3:    call    gxymsg
  244.     db    24,5
  245.     db    bell,2,'ERROR',1
  246.     db    ' - CP/M could not close current extent'
  247.     db    0
  248.     jp    exit
  249.  
  250. rrd4:    call    gxymsg
  251.     db    24,5 
  252.     db    bell,2,'ERROR',1
  253.     db    ' - Attempt to read unwritten extent'
  254.     db    0
  255.     jp    exit
  256.  
  257. rrd5:    call    gxymsg
  258.     db    24,5
  259.     db    bell,2,'ERROR',1
  260.     db    ' - Directory full'
  261.     db    0
  262.     jp    exit
  263.  
  264. rrd6:    call    gxymsg
  265.     db    24,5
  266.     db    bell,2,'ERROR',1
  267.     db    ' - Attempt to read beyond end of disk'
  268.     db    0
  269.     jp    exit
  270.  
  271. fi0?open:
  272. fi1?open:
  273. fi2?open:
  274. fi3?open:
  275. fo0?open:
  276. fo1?open:
  277. fo2?open:
  278. fo3?open:
  279. fi0?close:
  280. fi1?close:
  281. fi2?close:
  282. fi3?close:
  283. fo0?close:
  284. fo1?close:
  285. fo2?close:
  286. fo3?close:
  287. f0?get:
  288. f1?get:
  289. f2?get:
  290. f3?get:
  291. f0?put:
  292. f1?put:
  293. f2?put:
  294. f3?put:
  295. fxi?open:
  296. fxo?open:
  297. fxi?close:
  298. fxo?close:
  299. fx?get:
  300. fx?put:
  301. fyi?open:
  302. fyo?open:
  303. fyi?close:
  304. fyo?close:
  305. fy?get:
  306. fy?unget:
  307. fy?put:    cp     0
  308.     ret    z
  309.     cp    1
  310.     jp    z,ff1
  311.     cp    2
  312.     jp     z,ff2
  313.     cp    3
  314.     jp    z,ff3
  315.     cp    4
  316.     jp    z,ff4
  317.     cp    5
  318.     jp    z,ff5
  319.     cp    6
  320.     jp    z,ff6
  321.     cp    7
  322.     jp    z,ff7
  323.     jp    err?
  324.  
  325. ff1:    call    gxymsg
  326.     db    24,5
  327.     db    bell,2,'ERROR',1
  328.     db    ' - GET or PUT attempted on an unopened file'
  329.     db    0
  330.     jp    exit
  331.  
  332. ff2:    call    gxymsg
  333.     db    24,5
  334.     db    bell,2,'ERROR',1
  335.     db    ' - Disk full'
  336.     db    0
  337.     jp    exit
  338.  
  339. ff3:    call    gxymsg
  340.     db    24,5
  341.     db    bell,2,'ERROR',1
  342.     db    ' - Input file not found'
  343.     db    0
  344.     jp    exit
  345.  
  346. ff4:    call    gxymsg
  347.     db    24,5
  348.     db    bell,2,'ERROR',1
  349.     db    ' - Attempt to read past EOF'
  350.     db    0
  351.     jp    exit
  352.  
  353. ff5:    call    gxymsg
  354.     db    24,5
  355.     db    bell,2,'ERROR',1
  356.     db    ' - Directory full'
  357.     db    0
  358.     jp    exit
  359.  
  360. ff6:    call    gxymsg
  361.     db    24,5
  362.     db    bell,2,'ERROR',1
  363.     db    ' - Error in closing a file'
  364.     db    0
  365.     jp    exit
  366.  
  367. ff7:    call    gxymsg
  368.     db    24,5
  369.     db    bell,2,'ERROR',1
  370.     db    ' - Attempt to open a file which is already open'
  371.        db    0
  372.     jp    exit
  373.  
  374. luinit?:
  375.     cp    0
  376.     ret    z
  377.     cp    1
  378.     jp    z,lui1
  379.     cp    2
  380.     jp    z,lui2
  381.     cp    3
  382.     jp    z,lui3
  383.     jp    err?
  384.  
  385. lui1:    call     gxymsg
  386.     db    24,5
  387.     db    bell,2,'ERROR',1
  388.     db    ' - Library file not found'
  389.     db    0
  390.     jp    exit
  391.  
  392. lui2:    call    gxymsg
  393.     db    24,5
  394.     db    bell,2,'ERROR',1
  395.     db    ' - Library file empty'
  396.     db    0
  397.     jp    exit
  398.  
  399. lui3:    call    gxymsg
  400.     db    24,5
  401.     db    bell,2,'ERROR',1
  402.     db    ' - Library file format error'
  403.     db    0
  404.     jp    exit
  405.  
  406. ludir?:    cp    0
  407.     ret    z
  408.     call    gxymsg
  409.     db    24,5
  410.     db    bell,2,'ERROR',1
  411.     db    ' - Memory buffer overflow'
  412.     db    0
  413.     jp    exit
  414.  
  415. lu?read:
  416.     cp    0
  417.     ret    z
  418.     call    gxymsg
  419.     db    24,5
  420.     db    bell,2,'ERROR',1
  421.     db    ' - End of file'
  422.     db     0
  423.     jp    exit
  424.  
  425. fname?:    cp    0    
  426.     ret    nz
  427.     call    gxymsg
  428.     db    24,5
  429.     db    bell,2,'ERROR',1
  430.     db    ' - Invalid disk or user'
  431.     db    0
  432.     jp    exit
  433.     
  434. dbuffer?:
  435.     cp    0
  436.     ret    nz
  437.     call    gxymsg
  438.     db    24,5
  439.     db    bell,2,'ERROR',1
  440.     db    ' - CCP Overrun'
  441.     db     0
  442.     jp    exit
  443.  
  444. dirload?:
  445. dirsload?:
  446. ssbinit?:
  447.     cp    0
  448.     ret    nz
  449.     call    gxymsg
  450.     db    24,5
  451.     db    bell,2,'ERROR',1
  452.     db    ' - TPA Overflow'
  453.     db    0
  454.     jp    exit
  455.  
  456. err?:      call    gxymsg
  457.     db    24,5
  458.     db    bell,2,'ERROR',1
  459.     db    ' - Unknown error'
  460.     db    0
  461.     jp    exit
  462.  
  463.