home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / os / vms / 20645 < prev    next >
Encoding:
Internet Message Format  |  1993-01-09  |  2.7 KB

  1. Path: sparky!uunet!wupost!waikato.ac.nz!comp.vuw.ac.nz!zl2tnm!toyunix!don
  2. Newsgroups: comp.os.vms
  3. Subject: Re: Question: Reading keys with command procedures.
  4. Message-ID: <463008@zl2tnm.gen.nz>
  5. From: don@zl2tnm.gen.nz (Don Stokes)
  6. Date: 9 Jan 93 06:22:52 GMT
  7. Sender: news@zl2tnm.gen.nz (GNEWS Version 2.0 news poster.)
  8. References: <9301081933.AA16969@uu3.psi.com>
  9. Distribution: world
  10. Organization: The Wolery
  11. Lines: 60
  12.  
  13. leichter@lrw.com (Jerry Leichter) writes:
  14. > In theory, any undocumented language support routine is subject to change in
  15. > future versions of VMS.  In practice, since the VMS group and the language
  16. > groups try quite hard to ensure upward compatibility, it's essentially
  17. > impossible for them to remove any such routines, or change the semantics of
  18. > calls generated by older compilers.
  19.  
  20. Well, yes, but the implied support by not breaking existing code only
  21. goes as far as "normal" usage.  The BASIC subroutine I derived my code
  22. from goes:
  23.  
  24.     sub fred
  25.         x$ = inkey$(0%, wait)
  26.     end sub
  27.  
  28. and compiles to:
  29.  
  30.     FRED::    .word ^M<R2,R3,R4,R5,R6,R7,R8,R9.R10,R11,IV,DV>
  31.         movab .-3,R2        ; \
  32.         movab $PDATA+4,R0    ;  | This is BASIC's init code
  33.         movl R0,R1        ;  |
  34.         jsb BAS$INIT_R8        ; /
  35.     1$:    movab 1$, -4(FP)    ; This is for ERL handing
  36.         pushl #0        ; \
  37.         pushl #0        ;  |
  38.         pushl #0        ;  | I lifted this for my code
  39.         pushaq Z$(R11)        ;  |
  40.         calls #4, BAS$INKEY    ; /
  41.         movab $PDATA+4,R0    ; \
  42.         jsb BAS$END_R8        ;  | This is BASIC's exit code
  43.         movl #1, R0        ; /
  44.         ret
  45.  
  46. with data structures to match.  It happens that BAS$INKEY *in* *this* 
  47. *version* runs "standalone"; it's possible however that in the future, data
  48. structures may be set up for BAS$INKEY within BAS$INIT_R8.  Code compiled
  49. with BASIC will be fine, because it contains calls to BAS$INIT_R8, but
  50. direct calls to BAS$INKEY from languages other than BASIC wouldn't. 
  51.  
  52. BASIC is a particularly nasty example, because of the truly awful code
  53. the compiler generates....  (Nice language, cruddy pessimising compiler
  54. backend.)
  55.  
  56. > Mr. Stokes also says that "all bets are off on Alpha."  For native Alpha
  57.  
  58. <cringe>  "Don", please.  8-)
  59.  
  60. > code, that's certainly true, since there is no reason why a native Alpha
  61. > BASIC compiler should generate calls to the same RTL routines as a VAX
  62. > BASIC compiler.  However, to the degree that Alpha VMS continues to support
  63. > the running of VAX images, it will necessarily be subject to the same
  64. > constrains as I pointed out above.
  65.  
  66. ... and it's perhaps more likely that changes as outlined above may have
  67. been made.
  68.  
  69. --
  70. Don Stokes, ZL2TNM (DS555)                        don@zl2tnm.gen.nz (home)
  71. Network Manager, Computing Services Centre            don@vuw.ac.nz (work)
  72. Victoria University of Wellington, New Zealand              +64-4-495-5052
  73.