📄 e3.s
字号:
A_DR r12,linenr ldr r10,[r12] subs r10,r10,r2 str r10,[r12] mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12LookPU2: CALL LookBackward 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 blo LookPUEnd subs r2,r2,#1 bne LookPU2LookPUEnd: 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 RETLookScrDn: eors r2,r2,r2 mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 b LookPD1LookScrUp: eors r2,r2,r2 mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 b LookPU1LookHalfPgUp: A_DR r12,lines ldr r2,[r12] mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 subs r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 mov r2,r2,lsr #1 b LookPU1LookHalfPgDn: A_DR r12,lines ldr r2,[r12] mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 subs r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 mov r2,r2,lsr #1 b LookPD1LookPgDown: A_DR r12,lines ldr r2,[r12] mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 subs r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12LookPD1: A_DR r12,linenr ldr r10,[r12] adds r10,r10,r2 str r10,[r12] mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12LookPD2: CALL LookForward beq LookPDEnd 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 subs r2,r2,#1 bne LookPD2 mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 subs r4,r4,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12LookPDEnd: subs r4,r4,r0 RETCheckBlock: A_DR r12,showblock mov r11,#0x1 ldrB r10,[r12] cmp r10,r11 blo CheckBlockEnd A_DR r12,blockende ldr r5,[r12] A_DR r11,sot cmp r5,r11 blo CheckBlockEnd A_DR r12,blockbegin ldr r5,[r12] A_DR r11,sot cmp r5,r11 blo CheckBlockEnd A_DR r12,blockende ldr r10,[r12] cmp r10,r5CheckBlockEnd: RETCheckImBlock: A_DR r12,blockbegin ldr r10,[r12] cmp r10,r4 bhi CImBlockEnd A_DR r12,blockende ldr r10,[r12] cmp r4,r10CImBlockEnd: RETCheckMode: ldr r11,= NEWLINE ldrB r10,[r4] cmp r10,r11 beq ChModeEnd A_DR r12,insstat mov r11,#0x1 ldrB r10,[r12] cmp r10,r11ChModeEnd: RETCheckMarker: cmp r4,r3 bhi CMEnd cmp r1,r3 blo CMEnd mov r3,r4CMEnd: RETCountToLineEnd: stmfd r13!,{r4} CALL LookForward ldmfd r13!,{r4} RETCountColToLineBeginVis: CALL CountToLineBegin stmfd r13!,{r5} eors r3,r3,r3 mov r5,r4 subs r5,r5,r0 mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 subs r5,r5,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12CCV1: 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 cmp r5,r4 bhs CCVend ldr r11,= TABCHAR ldrB r10,[r5] cmp r10,r11 beq CCVTab 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 b CCV1CCVTab: CALL SpacesForTab mov r12,r0,lsr #8 and r12,r12,#0xFF mov r11,r3,lsl #24 mov r11,r11,lsr #24 adds r11,r11,r12 and r11,r11,#0xFF bic r3,r3,#0xFF orr r3,r3,r11 b CCV1CCVend: A_DR r12,ch2linebeg str r3,[r12] mov r0,r3 ldmfd r13!,{r5}.ifdef W32LF .endif RETCountToLineBegin: stmfd r13!,{r4} CALL LookBackward mov r5,r4 ldmfd r13!,{r4} RETCountToWordBeginVIstyle: mov r5,r4 ldr r11,= SPACECHAR ldrB r10,[r5] cmp r10,r11 bhi CtWviStyleCountToWordBegin: mov r5,r4CountNLoop: 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.ifdef W32LF .else ldr r11,= NEWLINE ldrB r10,[r5] cmp r10,r11.endif beq CTWend ldr r11,= SPACECHAR ldrB r10,[r5] cmp r10,r11 bls CountNLoop mov r9,r5 mov r10,#0x1 sub r9,r9,r10 mov r11,#0x2f ldrB r10,[R9] cmp r10,r11 bhi CountNLoopCTWend: mov r0,r5 subs r0,r0,r4Goret: RETCtWviStyle: 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.ifdef W32LF .else ldr r11,= NEWLINE ldrB r10,[r5] cmp r10,r11.endif beq CTWend mov r11,#0x2f ldrB r10,[r5] cmp r10,r11 bhi CtWviStyle b CountNLoopKeyHelp:.ifdef USE_BUILTINHELP A_DR r12,kurspos ldr r12,[r12] stmfd r13!,{r12} stmfd r13!,{r0-r6} eors r0,r0,r0 A_DR r12,showblock ldr r10,[r12] str r0,[r12] mov r0,r10 stmfd r13!,{r0} mov r7,#+1 A_DR r5,sot A_DR r4,buffercopy ldr r2,= buffercopysize stmfd r13!,{r4} stmfd r13!,{r2} stmfd r13!,{r5} cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsb CALL GetHelpText ldmfd r13!,{r4} stmfd r13!,{r4} stmfd r13!,{r4} cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsb A_DR r5,helpfoot ldr r12,= helpfootsize stmfd r13!,{r12} ldmfd r13!,{r2} cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsb mov r6,r4 ldmfd r13!,{r4} CALL DispNewScreen CALL ReadOneChar ldmfd r13!,{r4} ldmfd r13!,{r2} ldmfd r13!,{r5} mov r7,#+1 cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsb ldmfd r13!,{r12} A_DR r11,showblock str r12,[r11] ldmfd r13!,{r0-r6} ldmfd r13!,{r3} b SetKursPos.else .endif GoUp: eors r0,r0,r0 b UpDownGoDown: A_DR r10,lines ldrB r12,[r10] bic r0,r0,#0xFF orr r0,r0,r12 mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 subs r0,r0,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 mov r12,#0xff bic r0,r0,#0xFF00 orr r0,r0,r12,lsl #8UpDown: A_DR r12,kurspos2 ldr r3,[r12] mov r12,r3,lsr #8 and r12,r12,#0xFF mov r11,r0,lsl #24 mov r11,r11,lsr #24 cmp r11,r12 beq Goret mov r12,r0,lsr #8 and r12,r12,#0xFF mov r11,r3,lsl #16 mov r11,r11,lsr #24 sbcs r11,r11,r12 and r11,r11,#0xFF bic r3,r3,#0xFF00 orr r3,r3,r11,lsl #8 b SetKursPosKeyVICmdz: CALL ReadOneChar mov r12,#0x2e mov r11,r0,lsl #24 mov r11,r11,lsr #24 cmp r11,r12 beq KeyEmaCtrlL RETKeyVI_M: CALL LookPgBegin CALL LookHalfPgDn A_DR r12,lines mov r11,#0x1 ldrB r10,[r12] tst r10,r11 bne KeyEmaCtrlL CALL LookLineDownKeyEmaCtrlL: CALL CountToLineBegin A_DR r10,lines ldrB r12,[r10] bic r3,r3,#0xFF00 orr r3,r3,r12,lsl #8 mov r12,r3 and r12,r12,#0xFF mov r12,r12,lsr #1 and r12,r12,#0xFF bic r3,r3,#0xFF00 orr r3,r3,r12,lsl #8 mov r12,r0 and r12,r12,#0xFF bic r3,r3,#0xFF orr r3,r3,r12 b SetKursPosKursorFirstLine: eors r3,r3,r3 b SetKursPosKursorLastLine: A_DR r10,lines ldrB r12,[r10] bic r3,r3,#0xFF00 orr r3,r3,r12,lsl #8 mrs r8,CPSR and r8,r8,#0x20000000 mov r12,#0x1 mov r11,r3,lsl #16 mov r11,r11,lsr #24 subs r11,r11,r12 and r11,r11,#0xFF bic r3,r3,#0xFF00 orr r3,r3,r11,lsl #8 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 mov r12,#0x0 bic r3,r3,#0xFF orr r3,r3,r12 b SetKursPosKursorStatusLine: A_DR r10,lines ldrB r12,[r10] bic r3,r3,#0xFF00 orr r3,r3,r12,lsl #8 ldr r12,= stdtxtlen bic r3,r3,#0xFF orr r3,r3,r12 b SetKursPosRestKursPos: A_DR r12,kurspos ldr r3,[r12]SetKursPos: A_DR r12,kurspos2 str r3,[r12]sys_writeKP: stmfd r13!,{r0-r6}.ifdef W32 .else CALL make_KPstr A_DR r2,setkp ldr r12,= setkplen stmfd r13!,{r12} ldmfd r13!,{r3} CALL WriteFile0.endif ldmfd r13!,{r0-r6} RET.ifndef W32 make_KPstr: mov r7,#+1 A_DR r4,setkp mov r12,#0x1b bic r0,r0,#0xFF orr r0,r0,r12 strb r0,[r4] add r4,r4,r7.ifndef ARMCPU .else mov r12,#0x5b bic r0,r0,#0xFF orr r0,r0,r12 strb r0,[r4] add r4,r4,r7 mov r12,#0x30 bic r0,r0,#0xFF orr r0,r0,r12 strb r0,[r4] add r4,r4,r7 strb r0,[r4] add r4,r4,r7 strb r0,[r4] add r4,r4,r7 mov r12,#0x3b bic r0,r0,#0xFF orr r0,r0,r12 strb r0,[r4] add r4,r4,r7 mov r12,#0x30 bic r0,r0,#0xFF orr r0,r0,r12 strb r0,[r4] add r4,r4,r7 strb r0,[r4] add r4,r4,r7 strb r0,[r4] add r4,r4,r7.endif mov r12,#0x48 bic r0,r0,#0xFF orr r0,r0,r12 strb r0,[r4] add r4,r4,r7 mov r9,r4 mov r10,#0x6 sub r9,r9,r10 mov r4,R9 mov r0,r3,lsl #16 mov r0,r0,lsr #24 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 stmfd r13!,{r3} CALL IntegerToAscii ldmfd r13!,{r3} A_DR r4,setkp+1+3+4 mov r0,r3,lsl #24 mov r0,r0,lsr #24 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.endif IntegerToAscii: orrs r0,r0,r0 bpl ItoA1 eors r0,r0,r0 mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r0,r0,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12ItoA1: mov r12,#0xa stmfd r13!,{r12} ldmfd r13!,{r2} mov r7,#-1 mov r12,r1 mov r1,r0 mov r0,r12Connum1: mov r12,r1 mov r1,r0 mov r0,r12 orrs r0,r0,r0 movpl r3,#0 submi r3,r0,#1 mov r9,r0 mov r10,r2 stmfd r13!,{r14} bl _DIV ldmfd r13!,{r14} mov r3,r9 mov r0,r12 mov r12,r1 mov r1,r0 mov r0,r12 mov r12,r3 and r12,r12,#0xFF bic r0,r0,#0xFF orr r0,r0,r12 mov r12,#0xf 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 mov r12,#0x30 mov r11,r0,lsl #24 mov r11,r11,lsr #24 adds r11,r11,r12 and r11,r11,#0xFF bic r0,r0,#0xFF orr r0,r0,r11 strb r0,[r4] add r4,r4,r7 orrs r1,r1,r1 bne Connum1 mov r7,#+1ITAret: RETDeleteByteCheckMarker: A_DR r12,mode mov r11,#0x9 ldrB r10,[r12] tst r10,r11 beq DeleteByte mov r9,r4 add r9,r9,r0 mov r1,R9 A_DR r12,blockbegin ldr r3,[r12] CALL CheckMarker A_DR r12,blockbegin str r3,[r12] A_DR r12,blockende ldr r3,[r12] CALL CheckMarker A_DR r12,blockende str r3,[r12]DeleteByte: orrs r0,r0,r0 beq ITAret.ifdef USE_UNDO .endif stmfd r13!,{r4} mov r2,r6 subs r2,r2,r4 mov r9,r4 add r9,r9,r0 mov r5,R9 subs r2,r2,r0 A_DR r12,mode ldr r11,= WS ldrB r10,[r12] cmp r10,r11 beq No_WS8 A_DR r12,EmaKiSize ldr r10,[r12] adds r2,r2,r10No_WS8: mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r2,r2,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12 mov r7,#+1 cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsb rsbs r0,r0,#0 b Ins0Insert1Byte: eors r0,r0,r0InsertByte0: mrs r8,CPSR and r8,r8,#0x20000000 mov r11,#0x1 adds r0,r0,r11 mrs r12,CPSR orrcc r12,r12,r8 msr CPSR_f,r12InsertByte: orrs r0,r0,r0 beq ITAret A_DR r12,maxlen ldr r2,[r12] A_DR r11,sot adds r2,r2,r11 subs r2,r2,r6 A_DR r12,EmaKiSize ldr r3,[r12] subs r2,r2,r3 cmp r2,r0 bhs SpaceAva ldr r12,= ERRNOMEM stmfd r13!,{r12} ldmfd r13!,{r12} A_DR r11,ErrNr str r12,[r11] CALL OSerror CALL RestKursPos mrs r12, CPSR and r12,r12,#0xDFFFFFFF msr CPSR_f,r12 RETSpaceAva: stmfd r13!,{r4}.ifdef USE_UNDO .endif mov r5,r6 mov r9,r6 mov r10,#0x1 add r9,r9,r10 mov r2,R9 subs r2,r2,r4 mov r9,r6 add r9,r9,r0 mov r4,R9 A_DR r12,mode ldr r11,= WS ldrB r10,[r12] cmp r10,r11 beq ISWS8 adds r2,r2,r3 adds r4,r4,r3 adds r5,r5,r3ISWS8: mov r7,#-1 cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsbIns0: ldmfd r13!,{r4} CALL SetChg adds r6,r6,r0 A_DR r12,mode mov r11,#0x9 ldrB r10,[r12] tst r10,r11 beq NOWS8 A_DR r12,blockende ldr r10,[r12] cmp r4,r10 bhs Ins1 A_DR r12,blockende ldr r10,[r12] adds r10,r10,r0 str r10,[r12]Ins1: A_DR r12,blockbegin ldr r10,[r12] cmp r4,r10 bhs Ins2 A_DR r12,blockbegin ldr r10,[r12] adds r10,r10,r0 str r10,[r12]NOWS8: A_DR r12,mode mov r11,#0x6 ldrB r10,[r12] tst r10,r11 beq NO_EM02 A_DR r12,EmaMark ldr r10,[r12] cmp r4,r10 bhs Ins2 A_DR r12,EmaMark ldr r10,[r12] adds r10,r10,r0 str r10,[r12]NO_EM02:Ins2: mrs r12, CPSR orr r12,r12,#0x20000000 msr CPSR_f,r12 RETCopyBlock: CALL CheckBlock blo MoveBlEnd CALL CheckImBlock blo MoveBlEnd A_DR r12,blockende ldr r0,[r12] subs r0,r0,r5 CALL InsertByte blo MoveBlEnd A_DR r12,blockbegin ldr r5,[r12]MoveBlock: stmfd r13!,{r4} mov r2,r0 mov r7,#+1 cmps r2,#0 addeq pc,pc,#16@reploop: ldrb r12,[r5] add r5,r5,r7 strb r12,[r4] add r4,r4,r7 subs r2,r2,#1 subne pc,pc,#28 @rep movsb ldmfd r13!,{r4} mrs r12, CPSR orr r12,r12,#0x20000000 msr CPSR_f,r12MoveBlEnd: RETKeyVICmdyy: stmfd r13!,{r4} CALL KeyHome A_DR r12,EmaMark str r4,[r12] CALL KeyEnd 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 CALL KeyEmaAltW ldmfd r13!,{r4}KviRet: RETKeyVICmdy: CALL ReadOneChar mov r12,#0x79 mov r11,r0,lsl #24 mov r11,r11,lsr #24 cmp r11,r12 beq KeyVICmdyy mov r12,#0x27 mov r11,r0,lsl #24
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -