*SerialBinTest.prg parameters driveletter set talk off clear mp = chr(asc(upper(driveletter))-ASC("A")+1)+chr(0)+; space(22) && 24 bytes total load serial call serial with mp && execute binary code ? substr(mp,2+1) && First two bytes are always chr(0) cSerial1 = substr(mp,1+2,1) cSerial2 = substr(mp,2+2,1) cSerial3 = substr(mp,3+2,1) cSerial4 = substr(mp,4+2,1) ? asc(cSerial4) && Disk serial number ? asc(cSerial3) && is a doubleword ? asc(cSerial2) && So read in reverse order ? asc(cSerial1) && as shown in dir * Now print in hex format just like dir ? "Disk serial number is " ?? padl(dec2hex(asc(cSerial4)),2,"0") ?? padl(dec2hex(asc(cSerial3)),2,"0") ?? ":" ?? padl(dec2hex(asc(cSerial2)),2,"0") ?? padl(dec2hex(asc(cSerial1)),2,"0") ? function Dec2Hex parameters nDecimal n=0 do while floor(nDecimal/16^n) > 15 n = n+1 enddo cHEX = "" for ix=n to 0 step -1 cHEX = cHex + DecDigit2HexDigit(floor(nDecimal/16^ix)) nDecimal = nDecimal % 16 endfor return cHex function DecDigit2HexDigit parameters nDecimal return iif(ndecimal>9,chr(asc("A")+nDecimal%10),str(nDecimal,1))
*Create bin - run once handle=fcreate('Serial.Bin') =FWRITE(handle,CHR(83)+CHR(184)+; CHR(0)+CHR(105)+CHR(139)+CHR(211)+; CHR(139)+CHR(31)+CHR(205)+CHR(33)+; CHR(91)+CHR(203)) =fclose(handle)Cetin