463 lines
18 KiB
QBasic
Executable File
463 lines
18 KiB
QBasic
Executable File
REM **** FILED.BAS file editor ****
|
|
REM **** By Danny Keck ****
|
|
REM **** version 1.51 ****
|
|
REM **** Last revised 10/22/97 ****
|
|
|
|
DIM aa2(64) AS STRING * 1
|
|
DIM b(64), c$(64)
|
|
DIM theseg, theaddr, thisis, sa, ae AS LONG
|
|
DIM a(8) AS STRING * 1
|
|
DIM aa AS STRING * 1
|
|
ON ERROR GOTO 3
|
|
erp = 1
|
|
GOTO 2
|
|
|
|
|
|
' **** Errorhandling *******************************************************
|
|
|
|
3 REM errorhandling
|
|
IF ERR = 71 THEN LOCATE 22, 1: PRINT " ": LOCATE 23, 1: PRINT "Drive not ready. ": BLEH = 1: IF nwdr = 1 THEN RESUME 81 ELSE LOCATE 5, 1: PRINT "Drive not ready. ": RESUME 27 ELSE og = 0
|
|
IF ERR = 76 THEN LOCATE 22, 1: PRINT " ": LOCATE 23, 1: PRINT "This directory does not exist.": BLEH = 1: IF nwdr = 1 THEN RESUME 81 ELSE LOCATE 5, 1: PRINT "This directory does not exist.": RESUME 27 ELSE og = 0
|
|
IF ERR = 68 THEN LOCATE 22, 1: PRINT " ": LOCATE 23, 1: PRINT "The drive does not exist. ": BLEH = 1: IF nwdr = 1 THEN RESUME 81 ELSE LOCATE 5, 1: PRINT "The drive does not exist. ": RESUME 27 ELSE og = 0
|
|
IF ERR = 75 THEN LOCATE 3, 50: PRINT "The filename is invalid. ": RESUME 27
|
|
IF ERR = 64 THEN LOCATE 3, 50: PRINT "The filename is invalid. ": RESUME 27
|
|
IF ERR = 52 THEN RESUME 27
|
|
IF ERR = 57 THEN LOCATE 23, 1: PRINT "The directory will not access. ": BLEH = 1: RESUME 81
|
|
IF ERR = 6 THEN PRINT "Overflow": END
|
|
PRINT : PRINT "Unexpected error:"; ERR; " ; dumping you out": END
|
|
END
|
|
|
|
|
|
' **** Quit or Load File ***************************************************
|
|
|
|
28 LOCATE 23, 1: PRINT "Are you sure? (Y/N)"
|
|
DO: ch2$ = INKEY$: LOOP UNTIL ch2$ = "Y" OR ch2$ = "y" OR ch2$ = "n" OR ch2$ = "N"
|
|
IF ch2$ = "n" OR ch2$ = "N" THEN LOCATE 23, 1: PRINT " ": LOCATE 23, 1: GOTO 8
|
|
IF ch$ = "q" OR ch$ = "Q" THEN CLOSE #1: CLS : : END
|
|
CLOSE #1
|
|
GOTO 2
|
|
|
|
|
|
' **** Load file ***********************************************************
|
|
|
|
2 CLS
|
|
27 LOCATE 20, 1: PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
|
|
'LOCATE 21, 1: PRINT "Current directory: "; : SHELL ("CD")
|
|
LOCATE 22, 1: PRINT ". to change the directory / Edit the first 1MB of memory"
|
|
LOCATE 23, 1: PRINT ".. to view the directory // Edit the I/O ports"
|
|
LOCATE 1, 1: PRINT "FilEd File Editor BASIC 6/15/97 Danny Keck ae908@seorf.ohiou.edu"
|
|
PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
|
|
PRINT " "
|
|
LOCATE 3, 1: INPUT "File to edit"; fln$
|
|
memed = 0: ported = 0
|
|
IF fln$ = "." THEN GOTO 80
|
|
IF fln$ = ".." THEN GOTO 83
|
|
IF fln$ = "/" THEN
|
|
LOCATE 3, 15: PRINT "Memory"
|
|
memed = 1: erp = 1
|
|
LOCATE 5, 40: PRINT "Length of file: 1048576 bytes": GOTO 5
|
|
END IF
|
|
IF fln$ = "//" THEN
|
|
LOCATE 3, 15: PRINT "I/O ports"
|
|
ported = 1: erp = 1
|
|
LOCATE 5, 40: PRINT "Length of file: 65535 bytes": GOTO 5
|
|
END IF
|
|
erp = 1
|
|
OPEN fln$ FOR BINARY AS #1 LEN = 1
|
|
IF LOF(1) = 0 THEN GOTO 34
|
|
LOCATE 5, 40: PRINT "Length of file:"; LOF(1); "bytes"
|
|
GOTO 5
|
|
|
|
34 LOCATE 5, 40: PRINT "File does not exist!! Create(Y/N)?"
|
|
a$ = INKEY$: IF a$ = "y" OR a$ = "Y" THEN a$ = "": GOTO 5
|
|
IF a$ = "n" OR a$ = "N" THEN a$ = "": CLOSE 1: KILL fln$: GOTO 2
|
|
GOTO 34
|
|
|
|
|
|
' **** View Directory ******************************************************
|
|
|
|
83 CLS
|
|
PRINT "Directory of "; : SHELL ("cd")
|
|
PRINT "Press control-C to cancel"
|
|
DO: ch$ = INKEY$: LOOP UNTIL ch$ <> ""
|
|
SHELL ("dir/p")
|
|
PRINT "Press any key to return"
|
|
DO: ch$ = INKEY$: LOOP UNTIL ch$ <> ""
|
|
GOTO 2
|
|
|
|
|
|
' **** New Directory *******************************************************
|
|
|
|
80 LOCATE 23, 1: PRINT " "
|
|
81 nwdr = 1
|
|
erp = 2
|
|
LOCATE 22, 1: PRINT " "
|
|
IF BLEH = 1 THEN BLEH = 0 ELSE LOCATE 23, 1: PRINT " "
|
|
LOCATE 22, 1: INPUT "Type in your new directory"; nd$
|
|
CHDIR nd$
|
|
nwdr = 0
|
|
GOTO 2
|
|
|
|
|
|
' **** Starting Address ****************************************************
|
|
|
|
29 LOCATE 23, 1: INPUT "New address "; sa
|
|
GOTO 10
|
|
5 LOCATE 5, 1: INPUT "Starting address "; sa
|
|
10 GOSUB 53: GOTO 52
|
|
53 IF memed = 0 AND ported = 0 THEN IF sa < 1 THEN sa = 1
|
|
IF ported = 1 OR memed = 1 THEN IF sa < 0 THEN sa = 0
|
|
IF memed = 1 THEN
|
|
IF d = 0 AND sa > 1048448 THEN sa = 1048448
|
|
IF d = -1 AND sa > 1047552 THEN sa = 1047552
|
|
END IF
|
|
IF ported = 1 THEN
|
|
IF d = 0 AND sa > 65407 THEN sa = 65407
|
|
IF d = -1 AND sa > 64511 THEN sa = 64511
|
|
END IF
|
|
RETURN
|
|
|
|
|
|
' **** Display *************************************************************
|
|
|
|
31 IF cupd = 0 THEN CLS
|
|
LOCATE 20, 1: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
|
|
LOCATE 21, 1: PRINT " B back F forward N new addr S search E edit T type string"
|
|
IF memed = 0 AND ported = 0 THEN LOCATE 22, 1: PRINT " Q quit C compare L new file D dos M mode H ";
|
|
IF memed = 1 OR ported = 1 THEN LOCATE 22, 1: PRINT " Q quit C constnt L new file D dos M mode H ";
|
|
IF hmode = 0 THEN PRINT "hex" ELSE PRINT "decimal"
|
|
LOCATE 1, 2: PRINT fln$
|
|
IF memed = 0 AND ported = 0 THEN LOCATE 1, 40: PRINT "Length of file:"; LOF(1); "bytes"
|
|
IF memed = 1 THEN LOCATE 1, 2: PRINT "MemEd": LOCATE 1, 40: PRINT "Length of file: 1048576 bytes"
|
|
IF ported = 1 THEN LOCATE 1, 2: PRINT "PortEd": LOCATE 1, 40: PRINT "Length of file: 65536 bytes"
|
|
LOCATE 1, 74: PRINT "FilEd"
|
|
|
|
LOCATE 2, 1: IF d = 0 THEN PRINT sa; "-"; sa + 128 ELSE PRINT sa; "-"; sa + 1024
|
|
IF d = 0 THEN d1 = 8: d2 = 70 ELSE d1 = 64: d2 = 12
|
|
LOCATE 3, 1: PRINT " ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ"
|
|
IF memed = 0 AND ported = 0 THEN FOR ia = 1 TO 16
|
|
I = sa + (ia - 1)
|
|
FOR j = 1 TO d1
|
|
IF cupd = -1 THEN liu$ = INKEY$: IF liu$ <> "" THEN ch$ = liu$
|
|
GET #1, I - ia + ((ia - 1) * d1) + 1 + (j - 1), aa2(j)
|
|
b(j) = VAL("&h" + (RIGHT$("0" + HEX$(ASC(aa2(j))), 2))): c$(j) = HEX$(b(j))
|
|
IF LEN(c$(j)) = 1 THEN c$(j) = "0" + c$(j)
|
|
NEXT j
|
|
|
|
LOCATE ia + 3, 1: PRINT I - ia + ((ia - 1) * d1) + 1
|
|
|
|
FOR j = 1 TO d1
|
|
IF cupd = -1 THEN liu$ = INKEY$: IF liu$ <> "" THEN ch$ = liu$
|
|
IF d = 0 THEN LOCATE ia + 3, (j * 7) + 6: IF hmode = 0 THEN PRINT USING "###"; b(j) ELSE PRINT " "; c$(j)
|
|
IF aa2(j) = CHR$(12) OR aa2(j) = CHR$(7) THEN aa2(j) = CHR$(0)
|
|
LOCATE ia + 3, d2 + j: PRINT aa2(j)
|
|
NEXT j
|
|
NEXT ia
|
|
RETURN
|
|
ELSE
|
|
FOR ia = 1 TO 16
|
|
I = sa + (ia - 1)
|
|
FOR j = 1 TO d1
|
|
IF cupd = -1 THEN liu$ = INKEY$: IF liu$ <> "" THEN ch$ = liu$
|
|
thisis = I - ia + ((ia - 1) * d1) + 1 + (j - 1)
|
|
theseg = INT(thisis / 16)
|
|
DEF SEG = theseg
|
|
theaddr = thisis - (theseg * 16)
|
|
IF memed = 1 THEN b(j) = PEEK(theaddr)
|
|
IF ported = 1 THEN IF thisis < 65536 THEN b(j) = INP(thisis) ELSE
|
|
aa2(j) = CHR$(b(j))
|
|
REM b(j) = VAL("&h" + (RIGHT$("0" + HEX$(ASC(aa2(j))), 2)))
|
|
c$(j) = HEX$(b(j))
|
|
IF LEN(c$(j)) = 1 THEN c$(j) = "0" + c$(j)
|
|
NEXT j
|
|
|
|
LOCATE ia + 3, 1: PRINT I - ia + ((ia - 1) * d1) + 1
|
|
|
|
FOR j = 1 TO d1
|
|
IF cupd = -1 THEN liu$ = INKEY$: IF liu$ <> "" THEN ch$ = liu$
|
|
IF d = 0 THEN LOCATE ia + 3, (j * 7) + 6: IF hmode = 0 THEN PRINT USING "###"; b(j) ELSE PRINT " "; c$(j)
|
|
IF aa2(j) = CHR$(12) OR aa2(j) = CHR$(7) THEN aa2(j) = CHR$(0)
|
|
LOCATE ia + 3, d2 + j: PRINT aa2(j)
|
|
NEXT j
|
|
NEXT ia
|
|
RETURN
|
|
|
|
|
|
|
|
' **** Choose Option *******************************************************
|
|
|
|
52 GOSUB 31
|
|
LOCATE 24, 1
|
|
8
|
|
IF cupd = 0 THEN DO
|
|
ch$ = INKEY$: LOOP UNTIL ch$ <> ""
|
|
IF ch$ = "f" OR ch$ = "F" THEN IF d = 0 THEN sa = sa + 128: GOTO 10 ELSE sa = sa + 1024: GOSUB 53: GOTO 10
|
|
IF ch$ = "q" OR ch$ = "Q" THEN GOTO 28
|
|
IF ch$ = "n" OR ch$ = "N" THEN GOTO 29
|
|
IF ch$ = "e" OR ch$ = "E" THEN GOTO 30
|
|
IF ch$ = "h" OR ch$ = "H" THEN IF hmode = 0 THEN hmode = 1: GOTO 10 ELSE hmode = 0: GOTO 10
|
|
IF ch$ = "s" OR ch$ = "S" THEN GOSUB 32: GOTO 10
|
|
IF ch$ = "t" OR ch$ = "T" THEN GOTO 60
|
|
IF ch$ = "c" OR ch$ = "C" THEN IF memed = 0 AND ported = 0 THEN GOTO 70 ELSE cupd = NOT cupd
|
|
IF ch$ = "l" OR ch$ = "L" THEN GOTO 28
|
|
IF ch$ = "d" OR ch$ = "D" THEN PRINT "Type EXIT to return to FilEd.": SHELL: GOTO 10
|
|
IF ch$ = "m" OR ch$ = "M" THEN d = NOT d: GOTO 10
|
|
IF ch$ = "b" OR ch$ = "B" THEN
|
|
IF d = 0 THEN
|
|
sa = sa - 128: GOSUB 53: GOTO 10
|
|
ELSE sa = sa - 1024: GOSUB 53: GOTO 10
|
|
END IF
|
|
END IF
|
|
IF cupd = -1 THEN ch$ = "": GOTO 10
|
|
GOTO 8
|
|
|
|
|
|
' **** Editing *************************************************************
|
|
|
|
30
|
|
LOCATE 21, 1: PRINT " "
|
|
LOCATE 22, 1: PRINT " "
|
|
LOCATE 22, 1: INPUT "Address to edit"; aed$
|
|
ae = VAL(aed$)
|
|
IF ae <> INT(ae) OR ae < 0 THEN GOTO 30
|
|
IF memed = 1 AND ae > 1048576 THEN GOTO 30
|
|
IF ported = 1 AND ae > 65535 THEN GOTO 30
|
|
sa = ae - 8: IF sa < 1 THEN sa = 1
|
|
GOSUB 53
|
|
GOSUB 31
|
|
40 LOCATE 21, 1: PRINT " "
|
|
LOCATE 22, 1: PRINT ae; " "
|
|
LOCATE 22, 15: INPUT "change to"; nae$
|
|
IF nae$ = "" THEN GOTO 10
|
|
nae = VAL(nae$)
|
|
IF nae < 0 OR nae > 255 OR nae <> INT(nae) THEN 40
|
|
a(1) = CHR$(nae)
|
|
|
|
IF memed = 0 AND ported = 0 AND ae <> 0 THEN PUT #1, ae, a(1)
|
|
thisis = ae
|
|
theseg = INT(thisis / 16)
|
|
DEF SEG = theseg
|
|
theaddr = thisis - (theseg * 16)
|
|
IF memed = 1 THEN POKE theaddr, nae
|
|
IF ported = 1 THEN OUT thisis, nae
|
|
GOTO 10
|
|
|
|
|
|
' **** Type String Editing *************************************************
|
|
|
|
60
|
|
LOCATE 21, 1: PRINT " "
|
|
LOCATE 22, 1: PRINT " "
|
|
LOCATE 22, 1: INPUT "First address of string to edit"; aed$
|
|
ae = VAL(aed$)
|
|
IF ae <> INT(ae) OR ae < 0 THEN GOTO 60
|
|
IF memed = 1 AND ae > 1048576 THEN GOTO 60
|
|
IF ported = 1 AND ae > 65535 THEN GOTO 60
|
|
sa = ae - 8: IF sa < 1 THEN sa = 1
|
|
GOSUB 53
|
|
GOSUB 31
|
|
61 LOCATE 22, 1: PRINT ae; " "
|
|
LOCATE 21, 1: PRINT " "
|
|
LOCATE 22, 15: INPUT "change to"; nae$
|
|
IF nae$ = "" THEN GOTO 10
|
|
FOR I = 1 TO LEN(nae$)
|
|
a(1) = CHR$(ASC(MID$(nae$, I, 1)))
|
|
IF memed = 0 AND ported = 0 AND ae <> 0 THEN PUT #1, ae + (I - 1), a(1)
|
|
thisis = ae + (I - 1)
|
|
theseg = INT(thisis / 16)
|
|
DEF SEG = theseg
|
|
theaddr = thisis - theseg * 16
|
|
IF memed = 1 THEN POKE theaddr, ASC(a(1))
|
|
IF ported = 1 THEN OUT thisis, ASC(a(1))
|
|
NEXT I
|
|
GOTO 10
|
|
|
|
|
|
' **** Comparisons *********************************************************
|
|
|
|
70
|
|
LOCATE 21, 1: PRINT " "
|
|
LOCATE 22, 1: PRINT " "
|
|
LOCATE 21, 1: PRINT fln$; " "
|
|
LOCATE 22, 1: INPUT " Name of file to compare with"; fl2$
|
|
IF fl2$ = "" THEN 10
|
|
OPEN fl2$ FOR BINARY AS #2 LEN = 1
|
|
CLS
|
|
fl1 = LOF(1): fl2 = LOF(2)
|
|
IF fl1 > fl2 THEN fle = fl1 ELSE fle = fl2
|
|
PRINT "Look for:": PRINT
|
|
PRINT "1) Any difference in values"
|
|
PRINT "2) A change from one specific value to another"
|
|
PRINT "3) A specific amount of change"
|
|
PRINT "4) Return to main menu"
|
|
DO
|
|
whone$ = INKEY$
|
|
LOOP UNTIL whone$ = "1" OR whone$ = "2" OR whone$ = "3" OR whone$ = "4"
|
|
IF whone$ = "4" THEN PRINT "Comparison cancelled": GOTO 71
|
|
whone = VAL(whone$)
|
|
ON whone GOTO 100, 101, 102
|
|
GOTO 71
|
|
|
|
100 CLS
|
|
PRINT "In "; fln$; " and "; fl2$
|
|
PRINT " the following addresses hold different values:"
|
|
PRINT
|
|
FOR I = 1 TO fle
|
|
a$ = INKEY$: IF a$ <> "" THEN PRINT "Comparison cancelled": GOTO 71
|
|
GET #1, I, a(1)
|
|
GET #2, I, aa
|
|
IF a(1) <> aa THEN PRINT I,
|
|
NEXT I
|
|
PRINT : PRINT "Comparison complete": GOTO 71
|
|
|
|
101 PRINT
|
|
PRINT fln$; : INPUT " What value in this file"; v1$
|
|
v1 = VAL(v1$)
|
|
PRINT fl2$; : INPUT " What value in this file"; v2$
|
|
v2 = VAL(v2$)
|
|
CLS
|
|
PRINT "In "; fln$; " and "; fl2$
|
|
PRINT " the following addresses have a change from"; v1; " to "; v2; ":"
|
|
PRINT
|
|
FOR I = 1 TO fle
|
|
a$ = INKEY$: IF a$ <> "" THEN PRINT "Comparison cancelled": GOTO 71
|
|
GET #1, I, a(1)
|
|
GET #2, I, aa
|
|
b = VAL("&h" + (RIGHT$("0" + HEX$(ASC(a(1))), 2)))
|
|
bb = VAL("&h" + (RIGHT$("0" + HEX$(ASC(aa)), 2)))
|
|
IF v1 = b AND v2 = bb THEN PRINT I,
|
|
NEXT I
|
|
PRINT : PRINT "Comparison complete": GOTO 71
|
|
|
|
102 PRINT
|
|
PRINT "From "; fln$; " to "; fl2$; " ,"
|
|
INPUT "how much change (positive or negative)"; v1$
|
|
v1 = VAL(v1$)
|
|
CLS
|
|
PRINT "From "; fln$; " to "; fl2$
|
|
PRINT " the following addresses have a change of"; v1
|
|
PRINT
|
|
FOR I = 1 TO fle
|
|
a$ = INKEY$: IF a$ <> "" THEN PRINT "Comparison cancelled": GOTO 71
|
|
GET #1, I, a(1)
|
|
GET #2, I, aa
|
|
b = VAL("&h" + (RIGHT$("0" + HEX$(ASC(a(1))), 2)))
|
|
bb = VAL("&h" + (RIGHT$("0" + HEX$(ASC(aa)), 2)))
|
|
IF b + v1 = bb THEN PRINT I,
|
|
NEXT I
|
|
PRINT : PRINT "Comparison complete": GOTO 71
|
|
71 CLOSE #2: a$ = INKEY$: IF a$ = "" THEN 71 ELSE GOTO 10
|
|
|
|
|
|
' **** Search **************************************************************
|
|
|
|
32
|
|
DIM aa3 AS STRING * 1
|
|
IF memed = 0 AND ported = 0 THEN fl# = LOF(1)
|
|
IF memed = 1 THEN fl# = 1048576
|
|
IF ported = 1 THEN fl# = 65535
|
|
fbch = fl# / 100: fch = fbch: fco = 1
|
|
49 LOCATE 21, 1: PRINT " "
|
|
LOCATE 22, 1: PRINT " "
|
|
LOCATE 22, 1: INPUT "Start at address:"; aed$
|
|
IF aed$ = "" THEN
|
|
ae = 1
|
|
ELSE
|
|
ae = VAL(aed$)
|
|
IF ae <> INT(ae) OR ae < 0 THEN GOTO 49
|
|
IF memed = 1 AND ae > 1048576 THEN GOTO 49
|
|
IF ported = 1 AND ae > 65535 THEN GOTO 49
|
|
END IF
|
|
62 LOCATE 22, 1: PRINT "Search for: (S)tring or (N)umber? Push (C) to cancel"
|
|
DO
|
|
se$ = INKEY$
|
|
LOOP UNTIL se$ = "s" OR se$ = "S" OR se$ = "n" OR se$ = "N" OR se$ = "c" OR se$ = "C"
|
|
IF se$ = "c" OR se$ = "C" THEN RETURN
|
|
IF se$ = "s" OR se$ = "S" THEN GOSUB 1000
|
|
IF se$ = "n" OR se$ = "N" THEN GOSUB 2000
|
|
GOTO 49
|
|
1000 REM string search
|
|
LOCATE 22, 1: PRINT " "
|
|
LOCATE 22, 1: INPUT "String to search for (in exact case)"; ses$
|
|
CLS
|
|
PRINT "Press a key to finish searching."
|
|
PRINT ses$; " at:"
|
|
sl = LEN(ses$)
|
|
I = ae
|
|
47 FOR j = 1 TO sl
|
|
a$ = INKEY$: IF a$ <> "" THEN PRINT "Search cancelled": GOTO 45
|
|
thisis = I
|
|
theseg = INT(thisis / 16)
|
|
DEF SEG = theseg
|
|
theaddr = thisis - (theseg * 16)
|
|
IF memed = 1 THEN dee = PEEK(theaddr): aa3 = CHR$(dee)
|
|
IF ported = 1 THEN aa3 = CHR$(INP(I))
|
|
IF memed = 0 AND ported = 0 THEN GET #1, I, aa3
|
|
b = VAL("&h" + (RIGHT$("0" + HEX$(ASC(aa3)), 2))): c$ = HEX$(b)
|
|
IF aa3 <> MID$(ses$, j, 1) THEN GOTO 48
|
|
IF j = 1 THEN ga = I
|
|
I = I + 1
|
|
NEXT j
|
|
PRINT ga,
|
|
48 '
|
|
'IF i = INT(fch) THEN
|
|
ci = (fl# / 100) * fco
|
|
IF I = INT(ci) THEN
|
|
fco = fco + 1
|
|
myrow = CSRLIN: mycol = POS(0)
|
|
LOCATE 2, 30: : PRINT (fco - 1); "% complete"
|
|
LOCATE myrow, mycol
|
|
fco = INT(fco)
|
|
'fch = fbch * fco
|
|
'fch = fch + fbch
|
|
END IF
|
|
I = I + 1: IF I <= fl# THEN 47
|
|
IF memed = 1 THEN 47
|
|
PRINT : PRINT "Search complete"
|
|
45 a$ = INKEY$: IF a$ = "" THEN 45 ELSE GOTO 10
|
|
GOTO 10
|
|
2000 REM number search
|
|
LOCATE 22, 1: PRINT " "
|
|
LOCATE 22, 1: INPUT "Value to search for"; ses$
|
|
ses = VAL(ses$): ns$ = HEX$(ses)
|
|
IF LEN(ns$) / 2 <> INT(LEN(ns$) / 2) THEN ns$ = "0" + ns$
|
|
ns = LEN(ns$)
|
|
CLS
|
|
PRINT "Press a key to finish searching."
|
|
PRINT ses; " at:"
|
|
I = ae
|
|
43 FOR j = 1 TO ns STEP 2
|
|
a$ = INKEY$: IF a$ <> "" THEN PRINT "Search cancelled": GOTO 42
|
|
thisis = I
|
|
theseg = INT(thisis / 16)
|
|
DEF SEG = theseg
|
|
theaddr = thisis - (theseg * 16)
|
|
IF memed = 1 THEN dee = PEEK(theaddr): aa3 = CHR$(dee)
|
|
IF ported = 1 THEN aa3 = CHR$(INP(I))
|
|
IF memed = 0 AND ported = 0 THEN GET #1, I, aa3
|
|
b = VAL("&h" + (RIGHT$("0" + HEX$(ASC(aa3)), 2))): c$ = HEX$(b): IF LEN(c$) = 1 THEN c$ = "0" + c$
|
|
IF c$ <> MID$(ns$, j, 2) THEN GOTO 44
|
|
IF j = 1 THEN ga = I
|
|
I = I + 1
|
|
NEXT j
|
|
PRINT ga,
|
|
44 '
|
|
ci = (fl / 100) * fco
|
|
IF I = INT(ci) THEN
|
|
fco = fco + 1
|
|
myrow = CSRLIN: mycol = POS(0)
|
|
LOCATE 2, 30: : PRINT (fco - 1); "% complete"
|
|
LOCATE myrow, mycol
|
|
fco = INT(fco)
|
|
'fch = fbch * fco
|
|
'fch = fch + fbch
|
|
END IF
|
|
|
|
I = I + 1: IF I <= fl# THEN 43
|
|
IF memed = 1 THEN GOTO 43
|
|
PRINT : PRINT "Search complete"
|
|
42 a$ = INKEY$: IF a$ = "" THEN 42 ELSE GOTO 10
|
|
GOTO 10
|
|
RETURN
|
|
|