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