⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 editor.frm

📁 ------ DebugAsm Editor使用说明 ------ 本软件是采用DEUBG作ASM程式设计的工具,采用本人 自创的工程方案,令你的ASM程式设计更方便.
💻 FRM
📖 第 1 页 / 共 3 页
字号:
fast:
        '置换行符/并作实际换行
        Print #2, Chr$(13) & Chr$(10);
        Print #2, "\par ";
        
        '行结束时,结束注释/字符串
        fgMarkStart = 0
        fgCharOrString = 0

      Loop Until EOF(1) = True
  
    Close #1
  
    '文件结束
    Print #2, "}"
    
  Close #2
  
  '清空文件名
  If Saved = 0 Then
    CommonDialog1.FileName = ""
  End If
  
  '载入自动着色并产生的工程文件
  RichTextBox1.LoadFile (App.Path & "\noname.rtf")
  
  '删除中间文件
  Kill App.Path & "\noname.rtf"

End Sub

Sub ConvetToRichText(KeyAsc As Integer)    '自动着色.ASM文件处理

  If KeyAsc = Asc(";") Then
  
     Print #2, "\cf4 ";                    'QBColor(3)注释开始色彩"
     fgMarkStart = 1
     
     fgDigital = 0
     fgInstruction = 0
     
  Else
  
     If fgMarkStart = 1 Then               '注释状态,不改变色彩
             
        '------
        
     Else                                  '非注释状态
                      
        If fgCharOrString = 1 Then
                    
           '字符串处理开始                 '字符串状态,不改变色彩
           If KeyAsc <> Asc("'") And KeyAsc <> 34 Then
           
              '------
              
           Else                            '字符串结束
              fgCharOrString = 0
           End If
          
        Else
       
           If KeyAsc >= 48 And KeyAsc <= 57 Then
         
              If fgDigital = 0 Then
                Print #2, "\cf13 ";        'QBColor(12)数字色彩
                fgDigital = 1
              End If
              
              fgInstruction = 0
            
           ElseIf KeyAsc = Asc(",") Then
         
              Print #2, "\cf10 ";          'QBColor(9) 分隔符
              
              fgDigital = 0
              fgInstruction = 0
            
           ElseIf KeyAsc = Asc("'") Or KeyAsc = 34 Then
            
              Print #2, "\cf9 ";           'QBColor(8) 字符标识符 ' or "
              fgCharOrString = 1
              
              fgDigital = 0
              fgInstruction = 0
            
           Else
           
              If fgInstruction = 0 Then
                Print #2, "\cf1 ";           'QBColor(0)
                fgInstruction = 1
              End If
              
              fgDigital = 0
              
           End If
       
        End If
       
     End If
     
  End If
  
  '字符输出处理
  If KeyAsc <> 0 Then
  
    If Len(Hex$(KeyAsc)) < 4 Then      '英文:??, 汉字:?? ??
    
      If fgCharSet = 1 Then
        Print #2, "\f0 ";              '切换字符集到英文
        fgCharSet = 0
      End If
    
      Print #2, Chr$(KeyAsc);
      
    Else
    
      If fgCharSet = 0 Then
        Print #2, "\f1 ";              '切换字符集到中文
        fgCharSet = 1
      End If
      
      Print #2, "\'"; Left$(LCase$(Hex$(KeyAsc)), 2); "\'"; Right$(LCase$(Hex$(KeyAsc)), 2);
      
    End If
    
  End If

End Sub

Private Sub paste_Click()                                  '贴上
  RichTextBox1.SelRTF = Clipboard.GetText
End Sub

Private Sub RichTextBox1_Change()                          '内容变更标志
  fgFileChange = 1
End Sub

Private Sub RichTextBox1_KeyPress(KeyAscii As Integer)     '自动着色处理
  
  If KeyAscii = Asc(";") Then
  
     RichTextBox1.SelColor = QBColor(3)    '注释开始色彩
     fgMarkStart = 1
     
  ElseIf KeyAscii = 13 Then
   
     RichTextBox1.SelColor = QBColor(0)    '行结束/注释结束/字符串结束色彩
     
     fgMarkStart = 0
     fgCharOrString = 0
     
  Else
  
     If fgMarkStart = 1 Then               '注释状态,不改变色彩
             
        '------
        
     Else                                  '非注释状态
                      
        If fgCharOrString = 1 Then
                    
           '字符串处理开始                 '字符串状态,不改变色彩
           If KeyAscii <> Asc("'") And KeyAscii <> 34 Then
           
              '------
              
           Else                            '字符串结束
              fgCharOrString = 0
           End If
          
        Else
       
           If KeyAscii >= 48 And KeyAscii <= 59 Then
         
              RichTextBox1.SelColor = QBColor(12)     '数字色彩
            
           ElseIf KeyAscii = Asc(",") Then
         
              RichTextBox1.SelColor = QBColor(9)      '分隔符
            
           ElseIf KeyAscii = Asc("'") Or KeyAscii = 34 Then
            
              RichTextBox1.SelColor = QBColor(8)      '字符标识符 ' or "
              fgCharOrString = 1
            
           Else
              RichTextBox1.SelColor = QBColor(0)
           End If
       
        End If
       
     End If
     
  End If

End Sub

Private Sub RichTextBox1_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)

  If Button = vbRightButton Then                           '显示右键菜单
    PopupMenu edit
  End If
  
End Sub

Private Sub save_Click()                                   '保存文件

 If CommonDialog1.FileName = "" Then
  CommonDialog1.DialogTitle = "保存文件"
  CommonDialog1.Filter = "DebugAsm工程文件|*.dap"
  CommonDialog1.InitDir = GetSetting(App.EXEName, "Setting", "Init_Dir", App.Path & "\project")
  CommonDialog1.ShowSave
 End If
 
 FileName = CommonDialog1.FileName
 
 If FileName = "" Then
   Exit Sub
 End If
 
 mainName = Left$(FileName, Len(FileName) - 4)             '取得主文件名
 Label1.Caption = mainName & ".dap"                        '显示工程文件名称
 
 '======================================================================
 Open mainName & ".dap" For Output As #1                   '保存.dap文件
   Print #1, "Compiler="; Trim$(Str$(0))
 Close #1
 
 DoEvents
 
 '======================================================================
 Open mainName & ".asm" For Output As #1
   Print #1, RichTextBox1.Text                             '保存.asm文件
 Close #1
 
 DoEvents
 
 '======================================================================
 Call LoadASMFile(mainName & ".asm", 1)                    '重新载入.asm,同时更新着色
 DoEvents
 
 '======================================================================
 SaveSetting App.EXEName, "Setting", "Init_Dir", CommonDialog1.FileName   '保存操作目录
 
 fgFileChange = 0     '还原文件更改标志
 
End Sub

Private Sub saveToMasm_Click()                             '输出为MASM格式

 Dim masmFileName As String

 CommonDialog3.DialogTitle = "输出为MASM格式"
 CommonDialog3.Filter = "MASM源代码文件(*.asm)|*.asm"
 CommonDialog3.InitDir = GetSetting(App.EXEName, "Setting", "Init_Dir2", App.Path)
 CommonDialog3.ShowSave
 
 masmFileName = CommonDialog3.FileName
 
 If masmFileName = "" Then
   Exit Sub
 End If
 
 '======================================================================
 Open masmFileName For Output As #1
 
   Print #1, ""
   Print #1, "CSEG SEGMENT    'CODE'"
   Print #1, ""
   Print #1, "ORG 100H   ;空出前256个字节"
   Print #1, ""
   Print #1, "START:"
   
   Print #1, RichTextBox1.Text                             '保存.asm文件
       
   Print #1, "CSEG ENDS"
   Print #1, ""
   Print #1, "END START"
   
 Close #1
 
 '======================================================================
 SaveSetting App.EXEName, "Setting", "Init_Dir2", CommonDialog3.FileName   '保存操作目录

 '======================================================================
 MsgBox "请将十六进数后面加上h, 例如:1C改为1Ch"

End Sub

Private Sub select_Click()                                 '全选

  RichTextBox1.SelStart = 0
  RichTextBox1.SelLength = Len(RichTextBox1.Text)
  
End Sub

Private Sub Splitter_MouseDown(Button As Integer, Shift As Integer, x As Single, Y As Single)

  If Button = vbLeftButton Then                            '如果是左键
    Splitter.BackColor = SPLT_COLOR
    CurrSplitPosY = CLng(Y)
  End If
  
End Sub

Private Sub Splitter_MouseMove(Button As Integer, Shift As Integer, x As Single, Y As Single)

  If CurrSplitPosY& <> &H7FFFFFFF Then
  
    If CLng(Y) <> CurrSplitPosY Then                       '如果上下位置有改变
      Splitter.Move CTRL_OFFSET, Splitter.Top + Y, Check1.Left - CTRL_OFFSET, SPLT_HEIGHT
      CurrSplitPosY = CLng(Y)
    End If
    
  End If
  
End Sub

Private Sub Splitter_MouseUp(Button As Integer, Shift As Integer, x As Single, Y As Single)

  If CurrSplitPosY <> &H7FFFFFFF Then
  
    If CLng(Y) <> CurrSplitPosY Then                       '如果上下位置有改变
      Splitter.Move CTRL_OFFSET, Splitter.Top + Y, Check1.Left - CTRL_OFFSET, SPLT_HEIGHT
    End If
    
    CurrSplitPosY = &H7FFFFFFF
    Splitter.BackColor = &H8000000F                        '恢复色彩
    
    RichTextBox1.Height = Splitter.Top - RichTextBox1.Top
    
    List1.Top = Splitter.Top + Splitter.Height
    List1.Height = Me.ScaleHeight - List1.Top
    
    Check1.Top = Splitter.Top
    Label4.Top = Splitter.Top
    
  End If
  
End Sub

Private Sub start_Click()                                  '运行

  If Dir$(mainName & ".com") <> "" Then
  
    Open App.Path & "\run.bat" For Output As #1
      Print #1, "@echo off"
      Print #1, mainName & ".com"
      Print #1, "pause"
    Close #1
    
    Shell App.Path & "\run.bat", vbNormalFocus                 '显示运行结果
    DoEvents
    
  Else
    MsgBox "请先编译工程!"
  End If
  
End Sub

Private Sub startLink_Click()                              '编译

  Dim tmpstr As String

  Call save_Click
  DoEvents
    
  tmpstr = App.Path & "\bin\ASM2COM " & mainName & ".ASM"
  
  If InStr(1, tmpstr, "桌面") > 0 Then
    MsgBox "请不要将工程放在「桌面」上编译!"
    Exit Sub
  End If
  
  List1.Clear
  
  Shell tmpstr, vbHide
  DoEvents
  
  If MsgBox("编译已完成,你是否要查看编译结果?", vbOKCancel, "完成") = vbCancel Then
    Exit Sub
  End If
    
  Open mainName & ".tmp" For Input As #1
  
     Do                                                    '将LINK结果显示到LINK区
        Line Input #1, tmpstr
        
        If Check1.Value = vbUnchecked Then
            List1.AddItem tmpstr
        Else
            If Trim$(tmpstr) <> "" Then                    '如果是紧凑显示
              List1.AddItem tmpstr
            End If
        End If
        
        List1.Selected(List1.ListCount - 1) = True         '选中最后行
        DoEvents
        
        If InStr(1, tmpstr, "^ Error") <> 0 Then
           Close #1
           Exit Sub                                        '如果编译出错停止
        End If
                
     Loop Until EOF(1) = True                              '将内容添加到LINK区一直到文件结束
     
  Close #1
  
  FileSize = FileLen(mainName & ".com")                    '取得生成.COM文件大小
  
  If FileSize <> 0 Then
    List1.AddItem "Created ..:" & mainName & ".COM"
    List1.AddItem "File Size :" & FileSize & " Bytes" & " - " & Format(FileSize / 1024, "0.00") & " KB -"
  End If
  
  If meuAutoClearTempFiles.Checked = True Then             '自动清除临时文件
    If Dir$(mainName & ".tmp") <> "" Then Kill mainName & ".tmp"
    If Dir$(mainName & ".txt") <> "" Then Kill mainName & ".txt"
  End If
  
  List1.Selected(List1.ListCount - 1) = True               '选中最后行
  
End Sub

Private Sub VisitMyWeb_Click()                             '浏览我的个人主页
  Call shellexecute(Me.hwnd, "open", "http://yxbasic.51.net", "", "", SW_SHOW)
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -