📄 listsort.lst
字号:
\ 0295 5E LD E,(HL)
\ 0296 57 LD D,A
\ 0297 3E00 LD A,BYTE3 compare_string
\ 0299 210000 LD HL,LWRD compare_string
\ 029C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 029F 4D LD C,L
\ 02A0 44 LD B,H
\ 02A1 210000 LD HL,0
\ 02A4 F680 OR 128
\ 02A6 ED42 SBC HL,BC
\ 02A8 E2AC02 JP PO,?0070
\ 02AB AC XOR H
\ 02AC ?0070:
\ 02AC F27102 JP P,?0038
\ 02AF ?0039:
\ 02AF ?0046:
87 do {
88 higuy -= width;
\ 02AF 210200 LD HL,2
\ 02B2 39 ADD HL,SP
\ 02B3 7E LD A,(HL)
\ 02B4 DD9608 SUB (IX+8)
\ 02B7 77 LD (HL),A
\ 02B8 23 INC HL
\ 02B9 7E LD A,(HL)
\ 02BA DD9E09 SBC A,(IX+9)
\ 02BD 77 LD (HL),A
89 } while (higuy > lo && compare_string(higuy, lo) >= 0);
\ 02BE 2B DEC HL
\ 02BF 4E LD C,(HL)
\ 02C0 47 LD B,A
\ 02C1 FDE5 PUSH IY
\ 02C3 E1 POP HL
\ 02C4 A7 AND A
\ 02C5 ED42 SBC HL,BC
\ 02C7 3015 JR NC,?0044
\ 02C9 FDE5 PUSH IY
\ 02CB C1 POP BC
\ 02CC 210200 LD HL,2
\ 02CF 39 ADD HL,SP
\ 02D0 5E LD E,(HL)
\ 02D1 57 LD D,A
\ 02D2 3E00 LD A,BYTE3 compare_string
\ 02D4 210000 LD HL,LWRD compare_string
\ 02D7 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 02DA CB7C BIT 7,H
\ 02DC 28D1 JR Z,?0039
\ 02DE ?0044:
90
91 if (higuy < loguy)
\ 02DE 210400 LD HL,4
\ 02E1 39 ADD HL,SP
\ 02E2 4E LD C,(HL)
\ 02E3 23 INC HL
\ 02E4 46 LD B,(HL)
\ 02E5 2B DEC HL
\ 02E6 2B DEC HL
\ 02E7 2B DEC HL
\ 02E8 56 LD D,(HL)
\ 02E9 23 INC HL
\ 02EA 66 LD H,(HL)
\ 02EB 6A LD L,D
\ 02EC A7 AND A
\ 02ED ED42 SBC HL,BC
\ 02EF 210200 LD HL,2
\ 02F2 380E JR C,?0037
\ 02F4 ?0049:
92 break;
\ 02F4 ?0050:
93 swap(loguy, higuy);
\ 02F4 39 ADD HL,SP
\ 02F5 4A LD C,D
\ 02F6 23 INC HL
\ 02F7 46 LD B,(HL)
\ 02F8 23 INC HL
\ 02F9 5E LD E,(HL)
\ 02FA 23 INC HL
\ 02FB 56 LD D,(HL)
\ 02FC CD8B01 CALL LWRD ?0078
\ 02FF C37102 JP LWRD ?0038
\ 0302 ?0037:
94 }
95 swap(lo, higuy); // put partition element in place
\ 0302 39 ADD HL,SP
\ 0303 4A LD C,D
\ 0304 23 INC HL
\ 0305 46 LD B,(HL)
\ 0306 CD8801 CALL LWRD ?0077
96 if ( higuy - 1 - lo >= hi - loguy ) {
\ 0309 210400 LD HL,4
\ 030C 39 ADD HL,SP
\ 030D 4E LD C,(HL)
\ 030E 23 INC HL
\ 030F 46 LD B,(HL)
\ 0310 23 INC HL
\ 0311 56 LD D,(HL)
\ 0312 23 INC HL
\ 0313 66 LD H,(HL)
\ 0314 6A LD L,D
\ 0315 A7 AND A
\ 0316 ED42 SBC HL,BC
\ 0318 4D LD C,L
\ 0319 44 LD B,H
\ 031A FDE5 PUSH IY
\ 031C D1 POP DE
\ 031D 210200 LD HL,2
\ 0320 39 ADD HL,SP
\ 0321 7E LD A,(HL)
\ 0322 23 INC HL
\ 0323 66 LD H,(HL)
\ 0324 6F LD L,A
\ 0325 2B DEC HL
\ 0326 A7 AND A
\ 0327 ED52 SBC HL,DE
\ 0329 F680 OR 128
\ 032B ED42 SBC HL,BC
\ 032D E23103 JP PO,?0071
\ 0330 AC XOR H
\ 0331 ?0071:
\ 0331 FAB903 JP M,?0052
\ 0334 ?0051:
97 if (lo + width < higuy) {
\ 0334 DD6E08 LD L,(IX+8)
\ 0337 DD6609 LD H,(IX+9)
\ 033A FDE5 PUSH IY
\ 033C C1 POP BC
\ 033D 09 ADD HL,BC
\ 033E E5 PUSH HL
\ 033F 210400 LD HL,4
\ 0342 39 ADD HL,SP
\ 0343 4E LD C,(HL)
\ 0344 23 INC HL
\ 0345 46 LD B,(HL)
\ 0346 E1 POP HL
\ 0347 A7 AND A
\ 0348 ED42 SBC HL,BC
\ 034A 304B JR NC,?0072
\ 034C ?0053:
98 lostk[stkptr] = lo;
\ 034C 210000 LD HL,0
\ 034F 39 ADD HL,SP
\ 0350 46 LD B,(HL)
\ 0351 23 INC HL
\ 0352 66 LD H,(HL)
\ 0353 68 LD L,B
\ 0354 29 ADD HL,HL
\ 0355 E5 PUSH HL
\ 0356 214A00 LD HL,74
\ 0359 39 ADD HL,SP
\ 035A 4D LD C,L
\ 035B 44 LD B,H
\ 035C E1 POP HL
\ 035D 09 ADD HL,BC
\ 035E FDE5 PUSH IY
\ 0360 C1 POP BC
\ 0361 71 LD (HL),C
\ 0362 23 INC HL
\ 0363 70 LD (HL),B
99 histk[stkptr] = higuy - width;
\ 0364 210000 LD HL,0
\ 0367 39 ADD HL,SP
\ 0368 46 LD B,(HL)
\ 0369 23 INC HL
\ 036A 66 LD H,(HL)
\ 036B 68 LD L,B
\ 036C 29 ADD HL,HL
\ 036D E5 PUSH HL
\ 036E 210E00 LD HL,14
\ 0371 39 ADD HL,SP
\ 0372 4D LD C,L
\ 0373 44 LD B,H
\ 0374 E1 POP HL
\ 0375 09 ADD HL,BC
\ 0376 E5 PUSH HL
\ 0377 DD4E08 LD C,(IX+8)
\ 037A DD4609 LD B,(IX+9)
\ 037D 210400 LD HL,4
\ 0380 39 ADD HL,SP
\ 0381 56 LD D,(HL)
\ 0382 23 INC HL
\ 0383 66 LD H,(HL)
\ 0384 6A LD L,D
\ 0385 A7 AND A
\ 0386 ED42 SBC HL,BC
\ 0388 4D LD C,L
\ 0389 44 LD B,H
\ 038A E1 POP HL
\ 038B 71 LD (HL),C
\ 038C 23 INC HL
\ 038D 70 LD (HL),B
100 ++stkptr;
\ 038E 210000 LD HL,0
\ 0391 39 ADD HL,SP
\ 0392 34 INC (HL)
\ 0393 23 INC HL
\ 0394 2001 JR NZ,?0072
\ 0396 34 INC (HL)
\ 0397 ?0072:
\ 0397 ?0054:
101 } //save big recursion for later
102
103 if (loguy < hi) {
\ 0397 210600 LD HL,6
\ 039A 39 ADD HL,SP
\ 039B 4E LD C,(HL)
\ 039C 23 INC HL
\ 039D 46 LD B,(HL)
\ 039E 2B DEC HL
\ 039F 2B DEC HL
\ 03A0 2B DEC HL
\ 03A1 56 LD D,(HL)
\ 03A2 23 INC HL
\ 03A3 66 LD H,(HL)
\ 03A4 6A LD L,D
\ 03A5 A7 AND A
\ 03A6 ED42 SBC HL,BC
\ 03A8 D24304 JP NC,?0061
\ 03AB ?0055:
104 lo = loguy;
\ 03AB 210400 LD HL,4
\ 03AE 39 ADD HL,SP
\ 03AF 42 LD B,D
\ 03B0 23 INC HL
\ 03B1 66 LD H,(HL)
\ 03B2 68 LD L,B
\ 03B3 E5 PUSH HL
\ 03B4 FDE1 POP IY
105 goto recurse; // do small recursion
\ 03B6 C3EF01 JP LWRD ?0033
\ 03B9 ?0056:
106 }
107 }
108 else {
\ 03B9 ?0052:
109 if (loguy < hi) {
\ 03B9 210600 LD HL,6
\ 03BC 39 ADD HL,SP
\ 03BD 4E LD C,(HL)
\ 03BE 23 INC HL
\ 03BF 46 LD B,(HL)
\ 03C0 2B DEC HL
\ 03C1 2B DEC HL
\ 03C2 2B DEC HL
\ 03C3 56 LD D,(HL)
\ 03C4 23 INC HL
\ 03C5 66 LD H,(HL)
\ 03C6 6A LD L,D
\ 03C7 A7 AND A
\ 03C8 ED42 SBC HL,BC
\ 03CA 3045 JR NC,?0073
\ 03CC ?0058:
110 lostk[stkptr] = loguy;
\ 03CC 210000 LD HL,0
\ 03CF 39 ADD HL,SP
\ 03D0 46 LD B,(HL)
\ 03D1 23 INC HL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -