'-----------------------------------------------------------------
' mkimg.vbs
'
' Windows script to generate image file compatible with Atom SDDOS
' from AtomDOS formatted disk images.
' SCRIPT IS DESIGNED FOR AND TESTED WITH WINDOWS XP!!
'
' Usage:
' double click mkimg.vbs
' select list file
' select output binary file
'
' list file format:
'
' disk_image_filename, image description
' ....
' ....
'
' Description is capped at 13 characters.
'
' Script is quick and dirty - there is very little fancy
' error checking.
'
' You will see message indicating number of images found
' upon successful completion.
'
' The script is based upon a python script mkimg.py by SirMorris
' (C) KC 2010
'-----------------------------------------------------------------
dim a, b, info, intResult
function shortToFile (out,short)
a=int(short / 256) and 255
b=int(short) and 255
out.write chr(b) & chr(a)
end function
function stringToFile (out,info)
out.write info
end function
function infoToFile (out,info,state)
info=left(info & " ",13)
out.write info & chr(&h88) & chr(&h88) & chr(state)
end function
function showFileOpen()
Set objDialog = CreateObject("UserAccounts.CommonDialog")
objDialog.Filter = "Image list file|*.txt|All Files|*.*"
objDialog.FilterIndex = 1
objDialog.InitialDir = ""
intResult = objDialog.ShowOpen
If intResult = 0 Then
Wscript.Quit
Else
showFileOpen=objDialog.FileName
End If
end function
function showFileSave()
Set objDialog = CreateObject("SAFRCFileDlg.FileSave")
objDialog.FileName = "output.bin"
objDialog.FileType = "Image file"
intReturn = objDialog.OpenFileSaveDlg
If intReturn Then
showFileSave=objDialog.FileName
Else
Wscript.Quit
End If
end function
'-----------------------------------------------------------------
'Main
'-----------------------------------------------------------------
Dim ForReading, adTypeBinary, adSaveCreateOverwrite
Dim listfile, imagefile
Dim oFilesys, oFile_out, objFSO, oFile_in, out,title
Dim strLine, filenamedesc, filename, source, count, fCount
Dim copyBuffer, tmpBuffer
ForReading = 1
adTypeBinary = 1
adSaveCreateOverwrite = 2
listfile = showFileOpen
imagefile = showFileSave
Set oFilesys = CreateObject("Scripting.FileSystemObject")
Set oFile_out = oFilesys.CreateTextFile(imagefile, True)
shortToFile oFile_out,0
shortToFile oFile_out,1
shortToFile oFile_out,2
shortToFile oFile_out,3
stringToFile oFile_out,"SDDOS "
count = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set oFile_in = objFSO.OpenTextFile(listfile, ForReading)
Do While oFile_in.AtEndOfStream = False
strLine = oFile_in.ReadLine
filenamedesc = mid(strLine,instr(strLine,",") + 1)
filename = left(strLine,instr(strLine,",") - 1)
set source = WScript.CreateObject("ADODB.Stream")
source.Open
source.type = adTypeBinary
source.LoadFromFile filename
size = source.size
source.close
if size <> 102400 then
wscript.echo "** ERROR ** Disk image is not exactly 10240 bytes: " & filename
wscript.quit
end if
infoToFile oFile_out,filenamedesc,&h0F
count = count + 1
Loop
oFile_in.Close
fcount = count
while count < 1023
infoToFile oFile_out," ",&hF0
count = count + 1
wend
oFile_out.close
Set oFile_in = objFSO.OpenTextFile(listfile, ForReading)
Do While oFile_in.AtEndOfStream = False
strLine = oFile_in.ReadLine
filename = left(strLine,instr(strLine,",") - 1)
set source = WScript.CreateObject("ADODB.Stream")
source.Open
source.type = adTypeBinary
source.LoadFromFile filename
copyBuffer = source.Read()
source.close
set out = WScript.CreateObject("ADODB.Stream")
out.Open
out.type = adTypeBinary
out.LoadFromFile imagefile
tmpBuffer = out.Read()
out.Position = 0
out.SetEOS
out.write tmpBuffer
out.write copyBuffer
out.SaveToFile imagefile,adSaveCreateOverwrite
out.close
Loop
oFile_in.close
wscript.echo "OK! " & fcount & " images found and compiled to " & imagefile

|