home *** CD-ROM | disk | FTP | other *** search
/ Club Amiga de Montreal - CAM / CAM_CD_1.iso / files / 067.lha / Drw / consupp < prev    next >
Text File  |  1986-11-20  |  1KB  |  63 lines

  1. \
  2. \ Console device support module... turn normal IO into console IO
  3. \
  4. anew ConSupp.spot
  5. \
  6. Create SampleCons
  7. 0," CON:10/10/400/100/Console Screen"
  8. Variable ConErrata
  9. Variable ConHandle
  10. Variable OldConOut
  11. Variable OldConIn
  12.  
  13. : OpenDosCon ( 0$ or nothing --- )
  14. ?dup 0= if SampleCons then
  15. 1006 ( ModeNewFIle ) swap !D1 !D2 DOs@ 5 ( Open ) Dup Not
  16. IF ." Cant open console window!" 1 ConErrata ! Then
  17. ConHandle !
  18. ;
  19. : CloseDosCon
  20. ConHandle @ ?DUP IF !D1 Dos 6 ( Close ) THEN
  21. ;
  22.  
  23. : ZapDosCon ( 0$ or not --- )
  24. OpenDosCon
  25. OUTFILE Dup @ OldConOut ! ConHandle @ Swap !
  26. INFILE Dup @ OldConIn ! ConHandle @ Swap !
  27. ConErrata Off
  28. ;
  29. : UnzapDosCon
  30. OldCOnIn @ INFILE ! OldConOut @ OUTFILE ! CloseDosCon
  31. ;
  32. \
  33. \ all 4th output now goes to CON:... for input tho...
  34. \
  35. : Dosread
  36. !D1 !D3 !D2 Dos@ 7  ( Read )  
  37. ;
  38. : ConGet0$ ( Var expectedLen -- )
  39. locals| Vlen VVar |
  40. VVar Vlen  0 fill \ zero it first
  41. VVar Vlen ConHandle @ DosRead
  42. \ might have a LF at end...
  43.  VVar + 1- 0 swap  c!
  44. ;
  45. Create ConNumBuf 20 allot
  46. : ConGet# ( -- #/TRUE or FALSE )
  47. Connumbuf 20 0 fill
  48. ConnumBuf 20 ConHandle @ Dosread
  49. ConnumBuf Swap $>Number
  50. ;
  51. create confnam 40 allot
  52. : ConTEst
  53. 0 ZapDosCOn
  54. ." I am a console: gimme number:"
  55. ConGet# 
  56. cr ." FileName?" confnam 40 ConGet0$
  57. UnzapDosCon
  58. ." string is:" confnam dup 0$len type 
  59. cr IF hex . decimal ."  is it in hex" cr else ." not a number!" cr then 
  60. ;
  61. ." ConSUPP.." CR
  62.  
  63.