0 Members and 2 Guests are viewing this topic.
Mk, I'll look into that. And definitely. That's one of the things i'll be working on next...
Private Sub SaveFile() Handles SaveToolStripButton.Click, SaveToolStripMenuItem.Click If Not String.IsNullOrEmpty(CurrentFilePath) Then SaveFileRoutine(CurrentFilePath) Else If SaveTIFile.ShowDialog = DialogResult.OK Then SaveFileRoutine(SaveTIFile.FileName) UpdateInfo(1) = SaveTIFile.FileName UpdateInfo(2) = "1" End If End If End Sub Private Sub SaveAsToolStripMenuItem_Click() Handles SaveAsToolStripMenuItem.Click If SaveTIFile.ShowDialog = DialogResult.OK Then SaveFileRoutine(SaveTIFile.FileName) UpdateInfo(1) = SaveTIFile.FileName UpdateInfo(2) = "1" End If End Sub Private Function SaveFileRoutine(ByVal FilePath As String) Dim FileBytes(1048576) As Byte Dim FileBytesCounter1 As Integer = 0 Dim y As Integer Dim CurrentByte As String Dim CurrentString As String = "" Dim SecondByte As String Dim TempContents As String = ProgramContents(CurrentFileNumber) While True If InStr(TempContents, vbCrLf) Then TempContents = Mid(TempContents, 1, InStr(TempContents, vbCrLf) - 1) + "{vbCrLf}" + Mid(TempContents, InStr(TempContents, vbCrLf) + 2, TempContents.Length - InStr(TempContents, vbCrLf)) Else Exit While End If End While For x As Integer = 1 To TempContents.Length y = 15 SecondByte = "" CurrentHex = Mid(TempContents, x, y) CurrentByte = myTITools.TokenToHex(CurrentHex, SecondByte) While CurrentByte = "" SecondByte = "" CurrentHex = Mid(TempContents, x, y) CurrentByte = myTITools.TokenToHex(CurrentHex, SecondByte) If y < 1 Then MsgBox("Invalid Character Detected!" & vbCrLf & """" & CurrentHex & """" & vbCrLf & "is not recognized as a usable token for the TI 83+/84+ Series of calculators.") FileBytesCounter1 -= 1 GoTo Skip End If y -= 1 End While If SecondByte = "" Then FileBytes(74 + FileBytesCounter1) = cInteger(CurrentByte) Else FileBytes(74 + FileBytesCounter1) = cInteger(CurrentByte) FileBytes(75 + FileBytesCounter1) = cInteger(SecondByte) FileBytesCounter1 += 1 End IfSkip: FileBytesCounter1 += 1 x += y Next '**TI83F* FileBytes(0) = 42 FileBytes(1) = 42 FileBytes(2) = 84 FileBytes(3) = 73 FileBytes(4) = 56 FileBytes(5) = 51 FileBytes(6) = 70 FileBytes(7) = 42 '1A,0A,00 FileBytes(8) = 26 FileBytes(9) = 10 FileBytes(10) = 0 'Comment FileComment(CurrentFileNumber).PadRight(42) For x As Integer = 0 To 41 FileBytes(x + 11) = AscW(FileComment(CurrentFileNumber).Chars(x)) Next 'Data Size If FileBytesCounter1 + 19 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 19, 4) FileBytes(54) = cInteger(Mid(TempHex, 1, 2)) FileBytes(53) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(54) = 0 FileBytes(53) = FileBytesCounter1 + 19 End If 'Random Flag (either B or D) FileBytes(55) = 13 FileBytes(56) = 0 'Variable Size If FileBytesCounter1 + 2 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 2, 4) FileBytes(58) = cInteger(Mid(TempHex, 1, 2)) FileBytes(57) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(58) = 0 FileBytes(57) = FileBytesCounter1 + 2 End If 'Type ID FileBytes(59) = 5 'Name FileName(CurrentFileNumber).PadRight(8) For x As Integer = 0 To 7 FileBytes(60 + x) = AscW(FileName(CurrentFileNumber).Chars(x)) Next 'Version FileBytes(68) = 0 'Archived FileBytes(69) = 0 'Variable Size Again If FileBytesCounter1 + 2 > 255 Then Dim TempHex = cHex(FileBytesCounter1 + 2, 4) FileBytes(71) = cInteger(Mid(TempHex, 1, 2)) FileBytes(70) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(71) = 0 FileBytes(70) = FileBytesCounter1 + 2 End If 'Total Token Count If FileBytesCounter1 > 255 Then Dim TempHex = cHex(FileBytesCounter1, 4) FileBytes(73) = cInteger(Mid(TempHex, 1, 2)) FileBytes(72) = cInteger(Mid(TempHex, 3, 2)) Else FileBytes(73) = 0 FileBytes(72) = FileBytesCounter1 End If 'Totals data Dim Counter = 0 For x As Integer = 0 To FileBytesCounter1 + 19 Counter += FileBytes(x + 55) Next 'Lower 16 bits of data totalled together If Hex(Counter).Length > 4 Then Counter = cInteger(Mid(cHex(Counter, 4), cHex(Counter, 4).Length - 4, 4)) If Counter > 255 Then FileBytes(FileBytesCounter1 + 75) = cInteger(Mid(cHex(Counter, 4), 1, 2)) FileBytes(FileBytesCounter1 + 74) = cInteger(Mid(cHex(Counter, 4), 3, 2)) Else FileBytes(FileBytesCounter1 + 75) = 0 FileBytes(FileBytesCounter1 + 74) = Counter End If Dim FinalBytes(FileBytesCounter1 + 75) As Byte For x As Integer = 0 To FileBytesCounter1 + 75 FinalBytes(x) = FileBytes(x) Next File.WriteAllBytes(FilePath, FinalBytes) CurrentBytes = FileBytes End Function