10 REM      Hexer
20 REM    Mike Bibby
30 REM (c) AMSTRAD
40 REM     SEMANAL
50 CLEAR
60 ON ERROR GOTO 10
70 size = HIMEM
80 MEMORY &2FF8
90 WHILE -1
100 PRINT: PRINT "Opciones:-":PRINT
110 PRINT "1. Introducir codigo"
120 PRINT "2. Examinar codigo"
130 PRINT "3. Alterar  codigo"
140 PRINT "4. Ejecutar  codigo"
150 PRINT "5. Salir del programa":PRINT
160 b$ = INKEY$:IF b$="" GOTO 160
170 IF INSTR("12345",b$)=0 GOTO 160
180 b = VAL(b$) : ON b GOSUB 210,400,550,350,200
190 WEND
200 END
210 INPUT "Direccion de comienzo"; start$
220 IF start$="" THEN start$="3000":PRINT:PRINT"Direccion de comienzo = &3000"
230 start = VAL( "&"+start$ )
240 code$="":PRINT
250 WHILE code$ <> "S" AND code$ <>"s"
260 INPUT "byte"; code$
270 IF code$="" THEN PRINT CHR$(11);: GOTO 260
280 IF code$="S" OR code$="s" THEN GOTO 330
290 code$ = "&"+code$
300 code = VAL(code$)
310 POKE start, code
320 start = start + 1
330 WEND
340 RETURN
350 INPUT "Direccion de comienzo"; start$
360 IF start$ = "" THEN start$ = "3000"
370 start = VAL( "&" + start$ )
380 CALL start
390 RETURN
400 INPUT "Direccion de comienzo"; start$
410 IF start$ = "" THEN start$ = "2FF8"
420 start = VAL( "&" + start$ )
430 A$ = CHR$(32): PRINT
440 WHILE A$<>"s" AND A$<>"S"
450 PRINT RIGHT$( "   "+HEX$(start),4);" ";
460 FOR loop = 0 TO 7
470 code$="  " + HEX$( PEEK( start+loop) )
480 PRINT RIGHT$(code$,3);
490 NEXT
500 PRINT
510 A$=INKEY$ : IF A$="" GOTO 510
520 start = start + 8
530 WEND
540 RETURN
550 INPUT "Alterar desde"; start$
560 IF start$ = "" THEN start$ = "3000"
570 start = VAL("&"+start$)
580 code$ = "": PRINT
590 WHILE code$<>"S" AND code$<>"s"
600 PRINT RIGHT$("   " + HEX$(start),4);" ";RIGHT$("  "+HEX$(PEEK(start)),2);" ";
610 INPUT code$
620 IF code$="S" OR code$="s" THEN GOTO 670
630 IF code$ = "" THEN GOTO 660
640 code$ = "&"+code$
650 POKE start,VAL(code$)
660 start = start + 1
670 WEND
680 RETURN