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

📄 main.asm

📁 一个DOS下的文本编辑器
💻 ASM
字号:
EXTRN   GET_INPUT:FAR
EXTRN   DARW_WIN:FAR
EXTRN   SAVE_DOS_SCR:FAR
EXTRN   RESET_DOS_SCR:FAR
EXTRN   SHOW_M1:FAR
EXTRN   SHOW_M2:FAR
EXTRN   SAVE_FILE:FAR
EXTRN   NEW_FILE:FAR
EXTRN   EDIT_WORKSPACE:FAR

STACK   SEGMENT PARA    STACK
        DW      200H    DUP(?)
STACK   ENDS

DATA    SEGMENT PARA
NO_IN	DW	0000H
ALT_F   DW      2100H
ALT_H   DW      2300H
ALT_X   DW      2D00H
WORK_STATE      DB      00H     ;00H -WAIT FOR COMMAND, 01H -EDIT
DATA    ENDS

CODE	SEGMENT PARA	'CODE'
        ASSUME  CS:CODE,SS:STACK,DS:DATA

;---------------------------MAIN LOOP--------------------------------------
MAIN    PROC    FAR
	MOV	AX,DATA
	MOV	DS,AX
        MOV     AX,STACK
        MOV     SS,AX

        CALL    SAVE_DOS_SCR
        CALL    DARW_WIN
        ;CALL    NEW_FILE
MLP:
        CALL    GET_INPUT
	
        ;CMP     AX,NO_IN        ;NO INPUT: DO NOTHING
        ;JZ      MLP
	CMP	AL,'Q'
        JZ      EXIT@@
        CMP     AX,ALT_X        ;ALT+X: EXIT
        JZ      EXIT@@
CONT1:  CMP     AX,ALT_F        ;ALT+F: SHOW MENU 1 -FILE
        JNZ     CONT2
        CALL    SHOW_M1

        ;------------SEE WHAT TO DO NEXT-----------
SEE_M1: CMP     BX,0000H        ;LOOK AT SHOW_M1 IN GUI.ASM  
        JZ      EXIT@@
        CMP     BX,0100H
        JZ      MLP
        CMP     BX,0202H
        JNZ     SM1_C1
        CALL    SHOW_M2
        JMP     SEE_M2
SM1_C1: CMP     BX,0301H        ;'New'SELECTED
        JNZ     SM1_C2
        CALL    NEW_FILE
        MOV     WORK_STATE,1
        JMP     MLP
SM1_C2: CMP     BX,0302H        ;'Save'SELECTED
        JNZ     SM1_C3
        CALL    SAVE_FILE
        JMP     MLP
SM1_C3: CMP     BX,0303H        ;'Exit'SELECTED
        JNZ     MLP     ;??THIS WILL NEVER HAPPEN
        JMP     EXIT@@
        ;------------------------------------------

CONT2:  CMP     AX,ALT_H	;ALT+H: SHOW MENU 2 -HELP
        JNZ     CONT3
        CALL    SHOW_M2
        JMP     SEE_M2
MLP@@:  JMP     MLP     ;@@!!WAHAHAHAHAHA...
EXIT@@: JMP     EXIT
        ;------------SEE WHAT TO DO NEXT-----------
SEE_M2: CMP     BX,0000H        ;LOOK AT SHOW_M1 IN GUI.ASM  
        JZ      EXIT
        CMP     BX,0100H
        JZ      MLP@@
        CMP     BX,0201H
        JNZ     SM2_C1
        CALL    SHOW_M1
        JMP     SEE_M1
SM2_C1: CMP     BX,0301H        ;'Short Cut'SELECTED
        JNZ     SM2_C2
        ;CALL    SHORT_CUT_DLG
        JMP     MLP@@
SM2_C2: CMP     BX,0302H        ;'About'SELECTED
        JNZ     MLP@@     ;??THIS WILL NEVER HAPPEN
        ;CALL    ABOUT_DLG
        JMP     MLP@@
        ;------------------------------------------

CONT3:  ;TODO: CONTINUE COMPARE
        MOV     BL,WORK_STATE
        CMP     BL,00H  
        JZ      MLP@@   ;WAIT
        ;OTHERWISE EDIT
        PUSH    AX
        CALL    EDIT_WORKSPACE
        JMP     MLP@@             ;OTHER: DO NOTHING

EXIT:   CALL    RESET_DOS_SCR
        MOV     AX,4C00H
        INT     21H
MAIN    ENDP
;---------------------------------------------------------------------

CODE	ENDS
        END     MAIN

⌨️ 快捷键说明

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