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

  1. $m5000
  2. '
  3. CLS
  4. DEFMOUSE 0
  5. HIDEM
  6. PRINT "ZXM - ZX-Spectrum Monitor"
  7. PRINT "* Demonstration-Version *"
  8. PRINT "(c) 1993 Christian Gandler"
  9. PRINT
  10. '
  11. IF BYTE{BASEPAGE+129}=189
  12.   '
  13.   ' If called from emualtor, evaluate command-line
  14.   '
  15.   FOR j&=0 TO 5
  16.     x$=""
  17.     FOR i&=0 TO 7
  18.       x$=x$+CHR$(BYTE{BASEPAGE+130+j&*8+i&})
  19.     NEXT i&
  20.     x%=VAL("&h"+x$)
  21.     SELECT j&
  22.     CASE 0
  23.       setup%=x%+8                        ! adress of setup-area
  24.     CASE 1
  25.       zxpage%=x%                         ! adress of SPECTRUM 64K-Page
  26.     CASE 2
  27.       zxregs%=x%                         ! adress of emulator-variables
  28.     CASE 3
  29.       sstore%=x%                         ! adress of saved screen
  30.     CASE 4
  31.       sup_ret%=x%                        ! adress for return-value (if any)
  32.     CASE 5
  33.       set_nr%=x%                         ! adress of BYTE active set 0..4
  34.     ENDSELECT
  35.   NEXT j&
  36.   '
  37.   ' For this example, only display some of the Z80-Registers
  38.   '
  39.   RESTORE reg_struc
  40.   DO
  41.     READ r$
  42.     EXIT IF r$="*"
  43.     READ offs&
  44.     IF LEN(r$)=1
  45.       PRINT " ";r$;" = ";
  46.       w%=BYTE{zxregs%+offs&}
  47.     ELSE
  48.       PRINT r$;" = ";
  49.       w%=PEEK(zxregs%+offs&)*256+PEEK(zxregs%+offs&+1)
  50.     ENDIF
  51.     w$=HEX$(w%)
  52.     w$=RIGHT$(w$,MIN(4,LEN(w$)))
  53.     w$=STRING$(LEN(r$)*2-LEN(w$),"0")+w$
  54.     PRINT w$;" (";w%;")  ";
  55.     IF LEN(r$)=1
  56.       IF w%>32 AND w%<127
  57.         PRINT CHR$(w%)
  58.       ELSE
  59.         PRINT
  60.       ENDIF
  61.     ELSE
  62.       PRINT SPACE$(25-CRSCOL);
  63.       FOR i&=0 TO 7
  64.         p%=BYTE{zxpage%+w%+i&}
  65.         IF p%>32 AND p%<127
  66.           PRINT CHR$(p%);
  67.         ELSE
  68.           PRINT ".";
  69.         ENDIF
  70.       NEXT i&
  71.       PRINT
  72.     ENDIF
  73.   LOOP
  74.   PRINT
  75.   PRINT "PRESS ANY KEY TO RETURN TO EMULATOR"
  76.   PRINT "HIT <ESC> TO RESET THE Z80-PROZESSOR"
  77.   REPEAT
  78.     k$=INKEY$
  79.   UNTIL k$<>""
  80.   IF k$=CHR$(27)
  81.     WORD{zxregs%+38}=0           ! PC=0 ( -> Spectrum will reset)
  82.   ENDIF
  83. ELSE
  84.   PRINT "Can only run from emulator!"
  85.   REPEAT
  86.   UNTIL INKEY$<>""
  87. ENDIF
  88. END
  89. '
  90. reg_struc:
  91. DATA "A",12
  92. DATA "HL",0,"DE",2,"BC",4
  93. DATA "IX",6,"IY",8,"IR",10
  94. DATA "SP",36
  95. DATA "PC",38
  96. DATA "*"
  97.