>*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