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

📄 e3.s

📁 e3 是一个全屏的用户友好的文本编辑器
💻 S
📖 第 1 页 / 共 5 页
字号:
.include "macros"				@@ ************ BEGIN including e3.h ************.equ WS,1.equ EM,2.equ PI,4.equ VI,8.equ NE,16.equ DEFAULT_MODE,1.equ MAKE_BACKUP,1 @(no value known).equ LESSWRITEOPS,1 @(no value known).equ BEEP_IN_VI,1 @(no value known).equ USE_BUILTINHELP,1 @(no value known).ifdef BEOS .else  .ifdef QNX .else  .ifdef ATHEOS .else  .ifdef LINUX .equ TERMIOS_SET,21506.equ TERMIOS_GET,21505.equ TERMIOS_WSIZE,21523.equ NCCS,19.equ VMIN,6.equ UIDGID_WORD,1 @(no value known).struct 0stat_struc.st_dev:.struct 4stat_struc.st_ino:.struct 8stat_struc.st_mode:.struct 10stat_struc.st_nlink:.struct 12stat_struc.st_uid:.struct 14stat_struc.st_gid:.struct 16stat_struc.st_rdev:.struct 20stat_struc.st_size:.struct 24stat_struc.st_blksize:.struct 28stat_struc.st_blocks:.struct 32stat_struc.st_atime:.struct 36stat_struc.__unused1:.struct 40stat_struc.st_mtime:.struct 44stat_struc.__unused2:.struct 48stat_struc.st_ctime:.struct 52stat_struc.__unused3:.struct 56stat_struc.__unused4:.struct 60stat_struc.__unused5:.struct 64.equ stat_struc_size,64.equ SYS_exit,1.equ SYS_fork,2.equ SYS_read,3.equ SYS_write,4.equ SYS_open,5.equ SYS_close,6.equ SYS_unlink,10.equ SYS_execve,11.equ SYS_lseek,19.equ SYS_utime,30.equ SYS_kill,37.equ SYS_rename,38.equ SYS_pipe,42.equ SYS_brk,45.equ SYS_ioctl,54.equ SYS_dup2,63.equ SYS_sigaction,67.equ SYS_readlink,85.equ SYS_fchown,95.equ SYS_fstat,108.equ SYS_wait4,114.equ SYS_select,142.ifndef ARMCPU .else  .struct 0utimbuf_struc.actime:.struct 4utimbuf_struc.modtime:.struct 8.equ utimbuf_struc_size,8.endif  .ifdef CRIPLED_ELF .endif  .equ CURSORMGNT,1 @(no value known).equ SIGCONT,18.equ SIGSTOP,19.equ CAPTURE_STDERR,1 @(no value known).ifdef EX .else  .purgem USE_EX_NO_SED .ifndef PERLPIPE .equ SEDPATH,0.else  .endif  .endif  .equ MAXERRNO,32.equ ERRNOMEM,12.equ ERRNOIO,5.equ ERRNOEXEC,31.macro errortext .ascii	"Op not permitted".byte	10.ascii	"No such file|directory".byte	10.byte	10.byte	10.ascii	"Input/output".byte	10.ascii	"No such device".byte	10.byte	10.byte	10.ascii	"Bad file descriptor".byte	10.ascii	"No child processes".byte	10.byte	10.ascii	"Memory exhausted".byte	10.ascii	"Permission denied".byte	10.byte	10.byte	10.ascii	"Device|resource busy".byte	10.ascii	"File exists".byte	10.byte	10.ascii	"No such device".byte	10.byte	10.ascii	"Is a directory".byte	10.ascii	"Invalid argument".byte	10.ascii	"Too many open files".byte	10.ascii	"Too many open files".byte	10.ascii	"Inappropriate ioctl".byte	10.ascii	"Text file busy".byte	10.ascii	"File too large".byte	10.ascii	"No space on device".byte	10.ascii	"Illegal seek".byte	10.ascii	"R/O file system".byte	10.ascii	"Can't exec ".ifdef USE_EX_NO_SED .else  .byte	'/','b','i','n','/','s','e','d',10.endif  .ascii	"Broken pipe".byte	10.endm  .ifdef LIBC .endif  .ifdef ARMCPU .purgem USE_MATH .purgem USE_UNDO .purgem USE_PIPE .endif  .else  .ifdef FREEBSD .ifdef EX .else  .ifndef PERLPIPE .else  .endif  .endif  .ifdef USE_EX_NO_SED .else  .endif  .ifdef LIBC .endif  .else  .ifdef W32 .else  .endif  .endif  .endif  .endif  .endif  .endif  .ifdef TERMIOS_SET .ifdef ARMCPU .struct 0termios_struc.c_iflag:.struct 4termios_struc.c_oflag:.struct 8termios_struc.c_cflag:.struct 12termios_struc.c_lflag:.struct 16termios_struc.c_line:.struct 17termios_struc.c_cc:.struct 36.equ termios_struc_size,36.else  .ifdef speed_t1 .endif  .ifdef speed_t2 .endif  .ifdef speed_t3 .endif  .endif  .struct 0winsize_struc.ws_row:.struct 2winsize_struc.ws_col:.struct 4winsize_struc.ws_xpixel:.struct 6winsize_struc.ws_ypixel:.struct 8.equ winsize_struc_size,8.ifndef IXON .endif  .endif  .ifndef LINUX .endif  .ifdef LESSWRITEOPS .equ LESSWRITEOPS_OR_CURSORMGNT,1 @(no value known).endif  .ifdef CURSORMGNT .equ LESSWRITEOPS_OR_CURSORMGNT,1 @(no value known).endif  .equ stdtxtlen,10.ifdef FREEBSD .else  .ifdef QNX .else  .equ O_WRONLY_CREAT_TRUNC,577.endif  .endif  .equ O_RDONLY,0.equ PERMS,420.equ stdin,0.equ stdout,1.equ optslen,124.equ TAB,8.equ TABCHAR,9.equ SPACECHAR,32.equ CHANGED,42.equ UNCHANGED,SPACECHAR.equ LINEFEED,10.equ NEWLINE,LINEFEED.equ RETURN,13.equ SEDBLOCK,4096.ifdef CRIPLED_ELF .endif  .ifndef ARMCPU .ifdef USE_SPECIAL_HEADER .ifdef TINLINK .else  .endif  .else  .endif  .endif  .ifdef DYN .endif  				@@ ************ END include ************.text.code 32ORGheader:.global _start_start:	CALL SetTermStruc.ifdef SELFTEST .else  .ifdef W32 .else  .ifdef BEOS .else  .ifdef DYN .else  .ifdef SYS_sigaction 	CALL SetSigHandler.endif  .ifdef ATHEOS .endif  	ldmfd r13!,{r3}	ldmfd r13!,{r5}	mov r7,#+1prog:	ldrb r12,[r5]	add r5,r5,r7	and r12,r12,#0xFF	bic r0,r0,#0xFF	orr r0,r0,r12	mov r12,r0	and r12,r12,#0xFF	mov r11,r0,lsl #24	mov r11,r11,lsr #24	orrs r11,r11,r12	and r11,r11,#0xFF	bic r0,r0,#0xFF	orr r0,r0,r11	bne prog	mov r9,r5	mov r10,#0x5	sub r9,r9,r10	mov r5,R9	CALL SetEditMode	beq prog1	ldr r11,= DEFAULT_MODE	strB r11,[r0]prog1:	ldmfd r13!,{r5}.endif  .endif  .endif  .endif  .ifdef CURSORMGNT 	orrs r5,r5,r5	beq moreenvmorearg:	ldmfd r13!,{r2}	orrs r2,r2,r2	bne moreargmoreenv:	ldmfd r13!,{r2}	cmp r2,#0	beq ReStart.ifndef ARMCPU .else  	mov r11,#0x54	ldrB r10,[r2]	cmp r10,r11	bne moreenv	mov r9,r2	mov r10,#0x1	add r9,r9,r10	mov r11,#0x45	ldrB r10,[R9]	cmp r10,r11	bne moreenv	mov r9,r2	mov r10,#0x2	add r9,r9,r10	mov r11,#0x52	ldrB r10,[R9]	cmp r10,r11	bne moreenv	mov r9,r2	mov r10,#0x3	add r9,r9,r10	mov r11,#0x4d	ldrB r10,[R9]	cmp r10,r11	bne moreenv	mov r9,r2	mov r10,#0x5	add r9,r9,r10	mov r11,#0x6c	ldrB r10,[R9]	cmp r10,r11	bne ReStart	mov r9,r2	mov r10,#0x6	add r9,r9,r10	mov r11,#0x69	ldrB r10,[R9]	cmp r10,r11	bne ReStart	mov r9,r2	mov r10,#0x7	add r9,r9,r10	mov r11,#0x6e	ldrB r10,[R9]	cmp r10,r11	bne ReStart	mov r9,r2	mov r10,#0x8	add r9,r9,r10	mov r11,#0x75	ldrB r10,[R9]	cmp r10,r11.endif  	bne ReStart	A_DR r12,revvoff	ldr r11,= boldlen	ldrB r10,[r12]	adds r10,r10,r11	strB r10,[r12].endif  ReStart:	CALL NewFile	blo E3exitMainCharLoop:	CALL ChkCursPos	CALL IsViMode	bne MCL	A_DR r12,blockbegin	ldr r2,[r12]	cmp r2,#0	beq MCL	stmfd r13!,{r4}	mov r4,r2	CALL KeyEnd	A_DR r12,blockende	str r4,[r12]	ldmfd r13!,{r4}	CALL ShowBl1MCL:	CALL DispNewScreen	CALL RestoreStatusLine	CALL HandleChar.ifdef W32LF .endif  	A_DR r1,endeedit	mov r11,#0x0	ldrB r10,[r1]	cmp r10,r11	beq MainCharLoop	eors r5,r5,r5	mov r11,#0x2	ldrB r10,[r1]	cmp r10,r11	beq ReStartE3exit:	CALL KursorStatusLine.ifdef W32 .endif  	A_DR r2,text	CALL WriteFile00	A_DR r1,tempfile2	CALL Unlink.ifdef W32 .else  	ldr r2,= TERMIOS_SET	CALL IOctlTerminal0	b Exit.endif  HandleChar:	CALL ReadChar	mov r12,#0xff	mov r11,r0,lsl #16	mov r11,r11,lsr #24	cmp r11,r12	bne ExtAscii	A_DR r5,mode	mov r11,#0x6	ldrB r10,[r5]	tst r10,r11	beq NO_EM01	mov r12,#0xb	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	beq IsCtrlK	A_DR r12,EmaCtrlK	mov r11,#0x0	strB r11,[r12]IsCtrlK:	mov r12,#0x13	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	beq IsCtrlS	mov r12,#0x12	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	beq IsCtrlS	A_DR r12,EmaCtrlS	mov r11,#0x0	strB r11,[r12]IsCtrlS:NO_EM01:	ldr r11,= VI	ldrB r10,[r5]	cmp r10,r11	beq ISVI1	mov r12,#0x20	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	bhs NormChar	mov r12,r0	and r12,r12,#0xFF	bic r1,r1,#0xFF	orr r1,r1,r12	ldr r12,= jumps1	mov r11,r1,lsl #24	mov r11,r11,lsr #24	adds r11,r11,r12	and r11,r11,#0xFF	bic r1,r1,#0xFF	orr r1,r1,r11	ldr r11,= WS	ldrB r10,[r5]	cmp r10,r11	beq CJump	mov r12,#0x20	mov r11,r1,lsl #24	mov r11,r11,lsr #24	adds r11,r11,r12	and r11,r11,#0xFF	bic r1,r1,#0xFF	orr r1,r1,r11	ldr r11,= EM	ldrB r10,[r5]	cmp r10,r11	beq CJump	mov r12,#0x20	mov r11,r1,lsl #24	mov r11,r11,lsr #24	adds r11,r11,r12	and r11,r11,#0xFF	bic r1,r1,#0xFF	orr r1,r1,r11	ldr r11,= PI	ldrB r10,[r5]	cmp r10,r11	beq CJump	mov r12,#0x20	mov r11,r1,lsl #24	mov r11,r11,lsr #24	adds r11,r11,r12	and r11,r11,#0xFF	bic r1,r1,#0xFF	orr r1,r1,r11CJump:	b CompJump2ISVI1:	mov r12,#0x7	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	beq KeyDel	mov r12,#0x8	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	beq KeyDell	ldr r12,= RETURN	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	beq KeyRetNormChar:	A_DR r12,mode	mov r11,#0x6	ldrB r10,[r12]	tst r10,r11	beq NOEM0	CALL ShowBl0NOEM0:	CALL CheckMode.ifdef USE_UNDO .else  	bne OverWriteChar.endif  NormCh2:	stmfd r13!,{r0}.ifdef W32LF .endif  	CALL Insert1Byte	ldmfd r13!,{r0}	blo InsWriteEndOverWriteChar:	mov r7,#+1	strb r0,[r4]	add r4,r4,r7SetChg:	A_DR r12,changed	ldr r11,= CHANGED	strB r11,[r12]InsWriteEnd:	RETKeyVICmdr:	CALL ReadOneChar	ldr r11,= NEWLINE	ldrB r10,[r4]	cmp r10,r11	beq InsWriteEnd	ldr r12,= RETURN	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	bne KeyVICmdr1	ldr r12,= NEWLINE	bic r0,r0,#0xFF	orr r0,r0,r12KeyVICmdr1:.ifdef USE_UNDO .endif  KeyVICmdr2:	strB r0,[r4]	b SetChgKeyEmaCtrlQ:	A_DR r5,asknumber	CALL GetOctalToInteger	bls InsWriteEnd	mov r12,r2	mov r2,r0	mov r0,r12	mov r11,#0x0	mov r8,#0x1	add r11,r11,r8,lsl #8	cmp r0,r11	blo NormCh2	RETCtrlKMenu:	A_DR r1,Ktable	mov r12,#0x4b	bic r0,r0,#0xFF	orr r0,r0,r12	b MenuCtrlQMenu:	A_DR r1,Qtable	b PicoQMPicoJMenu:	A_DR r1,PicoJtable	mov r12,#0x4a	bic r0,r0,#0xFF	orr r0,r0,r12	b MenuPicoQMenu:	A_DR r1,PicoQtablePicoQM:	mov r12,#0x51	bic r0,r0,#0xFF	orr r0,r0,r12	b MenuCtrlXMenu:	A_DR r1,Xtable	mov r12,#0x58	bic r0,r0,#0xFF	orr r0,r0,r12Menu:	mov r2,#0x5e	mov r8,#0x20	add r2,r2,r8,lsl #8	mov r8,#0x20	add r2,r2,r8,lsl #16	mov r8,#0x20	add r2,r2,r8,lsl #24	mov r12,r0	and r12,r12,#0xFF	bic r2,r2,#0xFF00	orr r2,r2,r12,lsl #8MakeScanCode:	CALL WriteTwo	stmfd r13!,{r1}	CALL GetChar	ldmfd r13!,{r1}	mov r12,#0x1f	mov r11,r0,lsl #24	mov r11,r11,lsr #24	ands r11,r11,r12	and r11,r11,#0xFF	bic r0,r0,#0xFF	orr r0,r0,r11	ldr r12,= Ktable_size	mov r11,r0,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	bhs InsWriteEnd	and r12,r0,#0xFF	ldrB r12,[r1,r12]	bic r0,r0,#0xFF	orr r0,r0,r12	mov r12,r0	and r12,r12,#0xFF	bic r0,r0,#0xFF00	orr r0,r0,r12,lsl #8ExtAscii:	mov r12,r0,lsr #8	and r12,r12,#0xFF	bic r1,r1,#0xFF	orr r1,r1,r12	ldr r12,= jumps1	mov r11,r1,lsl #24	mov r11,r11,lsr #24	cmp r11,r12	bhs InsWriteEnd	eors r0,r0,r0	A_DR r12,EmaCtrl	str r0,[r12]CompJump2:	mov r12,#0x0	bic r1,r1,#0xFF00	orr r1,r1,r12,lsl #8	mov r1,r1	mov r1,r1,lsl #16	mov r1,r1,lsr #16	mov r9,r1	mov r10,#0x2	mov r8,r9	mul r9,r8,r10	A_DR r10,jumptab1	add r9,r9,r10	ldrH r1,[R9]	A_DR r11,_start	adds r1,r1,r11	stmfd r13!,{r14}	add r14,pc,#4	mov pc,r1	mov r0,r0	mov r1,r1	mov r2,r2	mov r3,r3	ldmfd r13!,{r14}	A_DR r12,numeriere	mov r11,#0x1	ldrB r10,[r12]	cmp r10,r11	bne BZNret	stmfd r13!,{r4}	A_DR r5,sot	mov r12,r4	mov r4,r5	mov r5,r12	eors r3,r3,r3BZNLoop:	mrs r8,CPSR	and r8,r8,#0x20000000	mov r11,#0x1	adds r3,r3,r11	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12	CALL LookForward	mrs r8,CPSR	and r8,r8,#0x20000000	mov r11,#0x1	adds r4,r4,r11	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12	cmp r4,r5	bls BZNLoop	A_DR r12,linenr	str r3,[r12]	ldmfd r13!,{r4}	A_DR r12,numeriere	mov r11,#0x0	strB r11,[r12]BZNret:	RETKeyRetNoInd:	eors r0,r0,r0	b KeyRetNIndKeyRet:.ifndef NO_AUTO_INDENT .ifdef SELFTEST .else  	CALL CheckMode	bne OvrRet	CALL CountToLineBegin	mrs r8,CPSR	and r8,r8,#0x20000000	mov r11,#0x1	adds r5,r5,r11	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12	mrs r8,CPSR	and r8,r8,#0x20000000	mov r11,#0x1	adds r5,r5,r11	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12	orrs r0,r0,r0	beq KeyRetNInd	mov r1,r0	eors r0,r0,r0	mrs r8,CPSR	and r8,r8,#0x20000000	mov r11,#0x1	subs r0,r0,r11	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12KeyRetSrch:	mrs r8,CPSR	and r8,r8,#0x20000000	mov r11,#0x1	adds r0,r0,r11	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12	cmp r0,r1	bhs KeyRetNInd	mov r9,r5	add r9,r9,r0	ldr r11,= SPACECHAR	ldrB r10,[R9]	cmp r10,r11	beq KeyRetSrch	mov r9,r5	add r9,r9,r0	ldr r11,= TABCHAR	ldrB r10,[R9]	cmp r10,r11	beq KeyRetSrch.endif  .else  .endif  KeyRetNInd:	stmfd r13!,{r5}	stmfd r13!,{r0}	CALL GoDown	ldmfd r13!,{r0}	stmfd r13!,{r0}.ifdef W32LF .endif  	CALL InsertByte0	ldmfd r13!,{r2}	ldmfd r13!,{r5}	blo SimpleRet	mrs r8,CPSR	and r8,r8,#0x20000000	A_DR r12,linenr	mov r11,#0x1	ldr r10,[r12]	adds r10,r10,r11	str r10,[r12]	mrs r12,CPSR	orrcc r12,r12,r8	msr CPSR_f,r12	mov r7,#+1.ifdef W32LF .else  	ldr r12,= NEWLINE	bic r0,r0,#0xFF	orr r0,r0,r12	strb r0,[r4]	add r4,r4,r7.endif  	cmp r2,#0	beq SimpleRet	cmps r2,#0	addeq pc,pc,#16@reploop:	ldrb r12,[r5]	add r5,r5,r7

⌨️ 快捷键说明

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