home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / apps / misc / zx_sp207 / source / zxu.gfa (.txt) < prev   
GFA-BASIC Atari  |  1993-05-27  |  2KB  |  66 lines

  1. $m2000
  2. '
  3. IF BYTE{BASEPAGE+129}=189
  4.   '
  5.   ' If called from emualtor, evaluate command-line
  6.   '
  7.   FOR j&=0 TO 5
  8.     x$=""
  9.     FOR i&=0 TO 7
  10.       x$=x$+CHR$(BYTE{BASEPAGE+130+j&*8+i&})
  11.     NEXT i&
  12.     x%=VAL("&h"+x$)
  13.     SELECT j&
  14.     CASE 0
  15.       setup%=x%+8                        ! adress of setup-area
  16.     CASE 1
  17.       zxpage%=x%                         ! adress of SPECTRUM 64K-Page
  18.     CASE 2
  19.       zxregs%=x%                         ! adress of emulator-variables
  20.     CASE 3
  21.       sstore%=x%                         ! adress of saved screen
  22.     CASE 4
  23.       sup_ret%=x%                        ! adress for return-value (if any)
  24.     CASE 5
  25.       set_nr%=x%                         ! adress of BYTE active set 0..4
  26.     ENDSELECT
  27.   NEXT j&
  28.   '
  29.   e_line%=@zx_peek(zxpage%+23641)        ! Adresse ZX Edit-Buffer (E-LINE)
  30.   prog%=@zx_peek(zxpage%+23635)          ! Adresse BASIC-Programm (PROG)
  31.   last_k%=zxpage%+23560                  ! Adresse LAST_K-Variable
  32.   flags%=zxpage%+23611                   ! Adresse FLAGS
  33.   pc%=WORD{zxregs%+38}                   ! Aktueller PC
  34.   '
  35.   ' Nur wenn im BASIC und wenn Programmspeicher leer
  36.   '
  37.   IF e_line%=prog%+1 AND pc%>0 AND pc%<16384
  38.     BYTE{zxpage%+e_line%}=239            ! LOAD
  39.     INC e_line%
  40.     BYTE{zxpage%+e_line%}=34             ! "
  41.     INC e_line%
  42.     BYTE{zxpage%+e_line%}=34             ! "
  43.     INC e_line%
  44.     @zx_poke(zxpage%+23643,e_line%)      ! Adresse des Cursors patchen
  45.     INC e_line%
  46.     BYTE{zxpage%+e_line%}=&HD
  47.     INC e_line%
  48.     BYTE{zxpage%+e_line%}=&H80
  49.     @zx_poke(zxpage%+23649,e_line%)      ! WORKSP
  50.     @zx_poke(zxpage%+23651,e_line%)      ! STKBOT
  51.     @zx_poke(zxpage%+23653,e_line%)      ! STKEND
  52.     BYTE{last_k%}=&HD                    ! Return als LAST_K eintragen
  53.     BYTE{flags%}=BSET(BYTE{flags%},5)    ! Flag 'Neue Taste'
  54.   ENDIF
  55. ENDIF
  56. END
  57. '
  58. FUNCTION zx_peek(adr%)
  59.   RETURN PEEK(adr%)+256*PEEK(adr%+1)
  60. ENDFUNC
  61. '
  62. PROCEDURE zx_poke(adr%,w%)
  63.   SPOKE adr%,w% MOD 256
  64.   SPOKE adr%+1,w% DIV 256
  65. RETURN
  66.