⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sphe82checksum.bas

📁 SPHE82XX CRC CALC SOURCE CODE
💻 BAS
字号:
REM This program calculates the checksum for a Sunplus ROM.
REM It uses the same algorithm as checksum8200.exe and
REM checksum.exe

REM It sums 16bit words, low byte first, starting from byte
REM offset 0x50 (checksum8200.exe) or 0x20 (checksum.exe)

CLS

OPEN "manta.bin" FOR RANDOM AS #1 LEN = 2

FIELD #1, 1 AS lo$, 1 AS hi$


PRINT "Stored checksum at 0x20 = ";

GET #1, &H11
 lobyt = ASC(lo$)
 hibyt = ASC(hi$)
 xl = lobyt + hibyt * 256
GET #1
 lobyt = ASC(lo$)
 hibyt = ASC(hi$)
 xh = lobyt + hibyt * 256
 l$ = HEX$(xl)
 h$ = HEX$(xh)
PRINT STRING$(4 - LEN(h$), "0"); h$; STRING$(4 - LEN(l$), "0"); l$


PRINT "Stored checksum at 0x14 = ";

GET #1, &HB
 lobyt = ASC(lo$)
 hibyt = ASC(hi$)
 xl = lobyt + hibyt * 256
GET #1
 lobyt = ASC(lo$)
 hibyt = ASC(hi$)
 xh = lobyt + hibyt * 256
 l$ = HEX$(xl)
 h$ = HEX$(xh)
PRINT STRING$(4 - LEN(h$), "0"); h$; STRING$(4 - LEN(l$), "0"); l$


PRINT
PRINT "Start summing ..."
PRINT

suml& = 0: sumh& = 0

GET #1, &H10

FOR i = &H20 TO &H4E STEP 2
 GET #1
 lobyt = ASC(lo$)
 hibyt = ASC(hi$)
 suml& = suml& + lobyt
 sumh& = sumh& + hibyt
NEXT i

sumlo& = 0: sumhi& = 0

WHILE NOT EOF(1)
 GET #1
 IF EOF(1) THEN GOTO 100
 lobyt = ASC(lo$)
 hibyt = ASC(hi$)
 sumlo& = sumlo& + lobyt
 sumhi& = sumhi& + hibyt
100 WEND

CLOSE

hisum& = sumhi& + INT(sumlo& / 256)
x$ = HEX$(sumlo& MOD 256)
PRINT "Computed checksum (offset 0x50) = "; HEX$(hisum&); STRING$(2 - LEN(x$), "0"); x$

sumhi& = sumhi& + sumh&
sumlo& = sumlo& + suml&

hisum& = sumhi& + INT(sumlo& / 256)
x$ = HEX$(sumlo& MOD 256)
PRINT "Computed checksum (offset 0x20) = "; HEX$(hisum&); STRING$(2 - LEN(x$), "0"); x$

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -