System information
0110 214601 LXI H,SW ;CHECK FOR ZERO SWITCHES
0113 7EB7C2000001 MOV A,M! OR A! JNZ SORT ; END OF SORT IF SW=0
;
0118 FF RST 7 ;GO TO DEBUGGER INSTEAD OF REB
;
; CONTINUE THIS PASS
; ADDRESSING I, SO LOAD AV(I) INTO REGISTERS
0119
5F16002148CONT: MOV E,A! MVI D,0! LXU H,AV! DAD D! DAD D
0121 4E792346 MOV C,M! MOV A,C! INX H! MOV B,M
; LOW ORDER BYTE IN A AND C, HIGH ORDER BYTE IN B
;
; MOV H AND L TO ADDRESS AV(I+1)
0125 23 INX H
;
; COMPARE VALUE WITH REGS CONTAINING AV (I)
0126 965778239E SUB M! MOV D,A! MOV A,B! INX H! SBB M ; SUBTRACT
;
; CHECK FOR EQUAL VALUES
012E B2CA3F01 OR D! JZ INCI ; SKIP IF AV(I) - AV(I+1)
0132 56702B5E MOD D,M! MOV M,B! DCX H! MOV E,M
0136 712B722B73 MOVM,C! DCX H! MOV M,D! DCX H! MOV M,E
;
; INCERMENT I
013F 21470134C3INCI: LXI H,I!INR M! JMP COMP
;
; DATA DEFINITION SECTION
0146 00 SW: DB 0 ; RESERVE SPACE FOR SWITCH COUNT
0147 I: DS 1 ; SPACE FOR INDEX
0148 050064001EAV: DW 5, 100, 30, 50, 20, 7, 1000, 300, 100, -32767
000A = N EQU ($-AV)/2 ; COMPUTE N INSTEAD OF PRE
015C END
A>TYPE SORT.HEX
3.7 A Sample Session CP/M Operating System Manual
3-27