Compucolor.org – Virtual Media

Listing of file='APP9.DOC;01' on disk='vmedia/asmtut_disk5-sector.ccvf'

### Disk Sector 3 ###
00: 37 00 38 00 08 00 00 00 80 25 01 00 ff ff 00 00   7.8......%......
10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
30: 00 00 00 00 00 00 00 ff 00 00 00 00 00 00 48 00   ..............H.
40: 3b 09 41 53 53 45 4d 42 4c 59 20 4c 41 4e 47 55   ;.ASSEMBLY LANGU
50: 41 47 45 20 54 55 54 4f 52 49 41 4c 20 53 45 52   AGE TUTORIAL SER
60: 49 45 53 0d 0a 0d 0a 3b 09 41 70 70 65 6e 64 69   IES....;.Appendi
70: 78 20 20 23 39 20 20 20 20 53 61 6d 70 6c 65 20   x  #9    Sample
### Disk Sector 4 ###
00: 50 52 4f 47 52 41 4d 20 23 34 0d 0a 0d 0a 3b 09   PROGRAM #4....;.
10: 52 45 46 45 52 20 4b 49 4c 4f 42 41 55 44 2c 20   REFER KILOBAUD,
20: 41 50 52 49 4c 20 38 31 2c 20 50 41 47 45 20 31   APRIL 81, PAGE 1
30: 36 34 0d 0a 0d 0a 3b 09 27 53 4f 52 54 41 27 20   64....;.'SORTA'
40: 53 4f 52 54 53 20 41 20 42 55 46 46 45 52 20 50   SORTS A BUFFER P
50: 52 4f 56 49 44 45 44 20 42 59 20 41 4e 4f 54 48   ROVIDED BY ANOTH
60: 45 52 20 50 52 4f 47 52 41 4d 0d 0a 3b 09 4f 52   ER PROGRAM..;.OR
70: 20 42 59 20 42 45 49 4e 47 20 49 4e 43 4f 52 50    BY BEING INCORP
### Disk Sector 5 ###
00: 4f 52 41 54 45 44 20 49 4e 20 41 4e 4f 54 48 45   ORATED IN ANOTHE
10: 52 20 50 52 4f 47 52 41 4d 0d 0a 0d 0a 3b 09 54   R PROGRAM....;.T
20: 48 49 53 20 52 4f 55 54 49 4e 45 20 4e 45 45 44   HIS ROUTINE NEED
30: 53 20 54 4f 20 42 45 20 27 54 4f 4c 44 27 20 54   S TO BE 'TOLD' T
40: 48 45 20 46 4f 4c 4c 4f 57 49 4e 47 3a 0d 0a 3b   HE FOLLOWING:..;
50: 09 4e 75 6d 62 65 72 20 6f 66 20 52 65 63 6f 72   .Number of Recor
60: 64 73 20 74 6f 20 62 65 20 73 6f 72 74 65 64 0d   ds to be sorted.
70: 0a 3b 09 4c 65 6e 67 74 68 20 6f 66 20 65 61 63   .;.Length of eac
### Disk Sector 6 ###
00: 68 20 52 65 63 6f 72 64 0d 0a 3b 09 54 68 65 20   h Record..;.The
10: 41 64 64 72 65 73 73 20 6f 66 20 74 68 65 20 42   Address of the B
20: 75 66 66 65 72 20 69 6e 20 77 68 69 63 68 20 74   uffer in which t
30: 68 65 79 20 61 72 65 20 73 74 6f 72 65 64 0d 0a   hey are stored..
40: 0d 0a 3b 09 53 4f 52 54 49 4e 47 20 41 4c 47 4f   ..;.SORTING ALGO
50: 52 49 54 48 4d 20 49 53 20 27 53 48 45 4c 4c 2d   RITHM IS 'SHELL-
60: 4d 45 54 5a 4e 45 52 27 20 41 53 20 50 45 52 20   METZNER' AS PER
70: 54 48 45 20 41 43 43 4f 4d 50 41 4e 59 49 4e 47   THE ACCOMPANYING
### Disk Sector 7 ###
00: 0d 0a 09 46 4c 4f 57 20 43 48 41 52 54 2e 0d 0a   ...FLOW CHART...
10: 0d 0a 3b 09 52 4f 55 54 49 4e 45 20 49 53 20 32   ..;.ROUTINE IS 2
20: 30 33 20 42 59 54 45 53 20 4c 4f 4e 47 20 49 4e   03 BYTES LONG IN
30: 43 4c 20 31 36 20 42 59 54 45 53 20 27 53 43 52   CL 16 BYTES 'SCR
40: 41 54 43 48 20 41 52 45 41 27 0d 0a 0d 0a 3b 09   ATCH AREA'....;.
50: 41 53 20 54 48 49 53 20 49 53 20 41 20 53 55 42   AS THIS IS A SUB
60: 2d 52 4f 55 54 49 4e 45 2c 20 4e 4f 20 53 54 41   -ROUTINE, NO STA
70: 43 4b 20 49 53 20 53 45 54 20 55 50 20 41 4e 44   CK IS SET UP AND
### Disk Sector 8 ###
00: 20 49 54 20 52 45 54 55 52 4e 53 0d 0a 0d 0a 3b    IT RETURNS....;
10: 09 54 4f 20 54 48 45 20 43 41 4c 4c 45 52 20 57   .TO THE CALLER W
20: 49 54 48 20 41 20 56 41 4c 49 44 20 53 54 41 43   ITH A VALID STAC
30: 4b 0d 0a 0d 0a 3b 09 4e 4f 54 45 20 54 48 45 20   K....;.NOTE THE
40: 55 53 45 20 4f 46 20 54 48 45 20 53 54 41 43 4b   USE OF THE STACK
50: 20 54 4f 20 48 4f 4c 44 20 4a 20 26 20 4b 20 41    TO HOLD J & K A
60: 4c 4c 4f 57 49 4e 47 20 54 48 45 53 45 20 31 36   LLOWING THESE 16
70: 20 42 49 54 0d 0a 3b 09 56 41 4c 55 45 53 20 54    BIT..;.VALUES T
### Disk Sector 9 ###
00: 4f 20 42 45 20 50 4c 41 43 45 44 20 49 4e 20 41   O BE PLACED IN A
10: 4e 59 20 52 45 47 49 53 54 45 52 20 50 41 49 52   NY REGISTER PAIR
20: 20 55 53 49 4e 47 20 4f 4e 4c 59 20 32 20 42 59    USING ONLY 2 BY
30: 54 45 53 0d 0a 3b 09 28 50 4f 50 20 46 4f 4c 4c   TES..;.(POP FOLL
40: 4f 57 45 44 20 42 59 20 50 55 53 48 29 0d 0a 0d   OWED BY PUSH)...
50: 0a 4f 52 49 47 3a 09 4f 52 47 09 30 42 45 30 30   .ORIG:.ORG.0BE00
60: 48 09 09 3b 46 49 54 20 55 4e 44 45 52 20 54 4f   H..;FIT UNDER TO
70: 50 20 4f 46 20 31 36 4b 0d 0a 0d 0a 4e 31 09 45   P OF 16K....N1.E
### Disk Sector 10 ###
00: 51 55 09 4f 52 49 47 09 09 3b 4e 4f 2e 20 4f 46   QU.ORIG..;NO. OF
10: 20 52 45 43 4f 52 44 53 20 50 4f 4b 45 44 20 48    RECORDS POKED H
20: 45 52 45 0d 0a 4d 31 09 45 51 55 09 4e 31 2b 32   ERE..M1.EQU.N1+2
30: 09 09 3b 49 4e 49 54 49 41 4c 4c 59 20 4d 3d 4e   ..;INITIALLY M=N
40: 2c 50 4f 4b 45 20 4e 20 48 45 52 45 20 54 4f 4f   ,POKE N HERE TOO
50: 0d 0a 4b 31 09 45 51 55 09 4d 31 2b 32 09 09 3b   ..K1.EQU.M1+2..;
60: 52 45 43 4f 52 44 20 4c 45 4e 47 54 48 20 50 4f   RECORD LENGTH PO
70: 4b 45 44 20 48 45 52 45 20 41 53 20 32 20 42 59   KED HERE AS 2 BY
### Disk Sector 11 ###
00: 54 45 53 0d 0a 4a 31 09 45 51 55 09 4b 31 2b 32   TES..J1.EQU.K1+2
10: 09 09 3b 42 41 53 45 20 41 44 44 52 45 53 53 20   ..;BASE ADDRESS
20: 4f 46 20 42 55 46 46 45 52 20 50 4f 4b 45 44 20   OF BUFFER POKED
30: 48 45 52 45 0d 0a 49 31 09 45 51 55 09 4a 31 2b   HERE..I1.EQU.J1+
40: 32 09 09 3b 49 31 20 26 20 4a 31 20 50 4f 49 4e   2..;I1 & J1 POIN
50: 54 20 54 4f 20 52 45 43 4f 52 44 53 20 46 4f 52   T TO RECORDS FOR
60: 20 43 4f 4d 50 41 52 49 53 4f 4e 0d 0a 4d 4c 31    COMPARISON..ML1
70: 09 45 51 55 09 49 31 2b 32 09 09 3b 48 4f 4c 44   .EQU.I1+2..;HOLD
### Disk Sector 12 ###
00: 53 20 4d 31 2a 4c 31 0d 0a 44 4a 31 09 45 51 55   S M1*L1..DJ1.EQU
10: 09 4d 4c 31 2b 32 09 09 3b 44 49 53 50 4c 41 43   .ML1+2..;DISPLAC
20: 45 4d 45 4e 54 20 46 4f 52 20 4a 20 52 45 43 4f   EMENT FOR J RECO
30: 52 44 0d 0a 44 49 31 09 45 51 55 09 44 4a 31 2b   RD..DI1.EQU.DJ1+
40: 32 09 09 3b 44 49 53 50 4c 41 43 45 4d 45 4e 54   2..;DISPLACEMENT
50: 20 46 4f 52 20 49 20 52 45 43 4f 52 44 0d 0a 0d    FOR I RECORD...
60: 0a 09 44 53 09 31 36 09 09 3b 41 4c 4c 4f 57 20   ..DS.16..;ALLOW
70: 53 50 41 43 45 20 46 4f 52 20 41 42 4f 56 45 20   SPACE FOR ABOVE
### Disk Sector 13 ###
00: 53 43 52 41 54 43 48 20 41 52 45 41 0d 0a 0d 0a   SCRATCH AREA....
10: 53 54 41 52 54 3a 09 4c 48 4c 44 09 4a 31 09 09   START:.LHLD.J1..
20: 3b 55 53 45 20 53 54 41 43 4b 20 54 4f 20 48 4f   ;USE STACK TO HO
30: 4c 44 20 54 57 4f 20 56 41 4c 55 45 53 0d 0a 09   LD TWO VALUES...
40: 50 55 53 48 09 48 09 09 3b 53 54 41 43 4b 20 42   PUSH.H..;STACK B
50: 55 46 46 45 52 20 41 44 44 52 0d 0a 09 4c 48 4c   UFFER ADDR...LHL
60: 44 09 4b 31 0d 0a 09 50 55 53 48 09 48 09 09 3b   D.K1...PUSH.H..;
70: 53 54 41 43 4b 20 52 45 43 20 4c 45 4e 47 54 48   STACK REC LENGTH
### Disk Sector 14 ###
00: 0d 0a 0d 0a 44 49 56 3a 09 58 52 41 09 41 09 09   ....DIV:.XRA.A..
10: 3b 48 41 4c 56 45 20 4d 31 2e 2e 2e 2e 0d 0a 09   ;HALVE M1.......
20: 4c 48 4c 44 09 4d 31 0d 0a 09 4d 4f 56 09 41 2c   LHLD.M1...MOV.A,
30: 48 0d 0a 09 52 41 52 0d 0a 09 4d 4f 56 09 48 2c   H...RAR...MOV.H,
40: 41 0d 0a 09 4d 4f 56 09 41 2c 4c 0d 0a 09 52 41   A...MOV.A,L...RA
50: 52 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09 53 48   R...MOV.L,A...SH
60: 4c 44 09 4d 31 09 09 3b 2e 2e 2e 2e 2e 41 4e 44   LD.M1..;.....AND
70: 20 53 54 4f 52 45 20 49 54 0d 0a 0d 0a 09 4f 52    STORE IT.....OR
### Disk Sector 15 ###
00: 41 09 48 09 09 3b 4d 3d 30 3f 0d 0a 09 4a 4e 5a   A.H..;M=0?...JNZ
10: 09 4e 44 4f 4e 0d 0a 09 50 4f 50 09 42 09 09 3b   .NDON...POP.B..;
20: 44 4f 4e 45 2c 20 53 4f 20 55 4e 53 54 41 43 4b   DONE, SO UNSTACK
30: 20 4f 55 52 20 50 4f 49 4e 54 45 52 53 0d 0a 09    OUR POINTERS...
40: 50 4f 50 09 44 09 09 3b 41 4e 44 20 52 45 54 55   POP.D..;AND RETU
50: 52 4e 0d 0a 09 52 45 54 09 09 09 3b 54 4f 20 43   RN...RET...;TO C
60: 41 4c 4c 45 52 0d 0a 0d 0a 3b 09 4b 20 3d 20 4e   ALLER....;.K = N
70: 20 2d 20 4d 0d 0a 0d 0a 4e 44 4f 4e 3a 09 58 43    - M....NDON:.XC
### Disk Sector 16 ###
00: 48 47 09 09 09 3b 4d 20 49 4e 20 44 45 0d 0a 09   HG...;M IN DE...
10: 4c 48 4c 44 09 4e 31 0d 0a 09 4d 4f 56 09 41 2c   LHLD.N1...MOV.A,
20: 4c 09 09 3b 47 45 54 20 4e 2d 4d 0d 0a 09 53 55   L..;GET N-M...SU
30: 42 09 45 0d 0a 09 4d 4f 56 09 4c 2c 41 0d 0a 09   B.E...MOV.L,A...
40: 4d 4f 56 09 41 2c 48 0d 0a 09 53 42 42 09 44 0d   MOV.A,H...SBB.D.
50: 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 53 48 4c 44   ..MOV.H,A...SHLD
60: 09 4b 31 09 09 3b 53 54 4f 52 45 20 4e 45 57 20   .K1..;STORE NEW
70: 4b 0d 0a 0d 0a 09 4c 58 49 09 48 2c 31 09 09 3b   K.....LXI.H,1..;
### Disk Sector 17 ###
00: 49 3d 4a 3d 31 0d 0a 09 53 48 4c 44 09 4a 31 0d   I=J=1...SHLD.J1.
10: 0a 09 53 48 4c 44 09 49 31 0d 0a 0d 0a 3b 09 43   ..SHLD.I1....;.C
20: 41 4c 43 20 26 20 53 41 56 45 20 41 44 44 52 20   ALC & SAVE ADDR
30: 4f 46 46 53 45 54 53 20 4d 31 2a 4c 31 20 46 4f   OFFSETS M1*L1 FO
40: 52 20 45 41 43 48 20 4e 45 57 20 42 4c 4f 43 4b   R EACH NEW BLOCK
50: 0d 0a 0d 0a 09 44 43 52 09 4c 09 09 3b 5a 45 52   .....DCR.L..;ZER
60: 4f 20 48 4c 0d 0a 09 50 4f 50 09 42 09 09 3b 4c   O HL...POP.B..;L
70: 45 4e 20 4f 46 20 52 45 43 4f 52 44 0d 0a 09 50   EN OF RECORD...P
### Disk Sector 18 ###
00: 55 53 48 09 42 09 09 3b 45 58 54 52 41 43 54 45   USH.B..;EXTRACTE
10: 44 20 42 55 54 20 50 52 45 53 45 52 56 45 44 0d   D BUT PRESERVED.
20: 0a 4c 50 31 3a 09 44 41 44 09 44 09 09 3b 41 44   .LP1:.DAD.D..;AD
30: 44 20 4f 4e 45 20 4c 45 4e 20 54 4f 20 48 4c 0d   D ONE LEN TO HL.
40: 0a 09 44 43 58 09 42 09 09 3b 43 48 45 43 4b 20   ..DCX.B..;CHECK
50: 46 4f 52 20 43 3d 30 20 41 53 53 55 4d 4e 47 20   FOR C=0 ASSUMNG
60: 4c 45 4e 20 3c 3d 20 32 35 35 0d 0a 09 4d 4f 56   LEN <= 255...MOV
70: 09 41 2c 42 09 09 3b 47 49 56 49 4e 47 20 42 3d   .A,B..;GIVING B=
### Disk Sector 19 ###
00: 30 0d 0a 09 4f 52 41 09 43 0d 0a 09 4a 4e 5a 09   0...ORA.C...JNZ.
10: 4c 50 31 09 09 3b 41 44 44 20 4e 45 58 54 20 4c   LP1..;ADD NEXT L
20: 45 4e 0d 0a 09 53 48 4c 44 09 4d 4c 31 09 09 3b   EN...SHLD.ML1..;
30: 53 54 4f 52 45 20 50 52 4f 44 55 43 54 0d 0a 0d   STORE PRODUCT...
40: 0a 09 09 3b 43 41 4c 43 20 26 20 53 41 56 45 20   ...;CALC & SAVE
50: 44 28 4a 29 2c 20 44 28 49 29 2c 20 44 28 49 2b   D(J), D(I), D(I+
60: 4d 29 0d 0a 0d 0a 09 58 43 48 47 09 09 09 3b 4d   M).....XCHG...;M
70: 4c 31 20 49 4e 20 44 45 0d 0a 09 50 4f 50 09 42   L1 IN DE...POP.B
### Disk Sector 20 ###
00: 09 09 3b 47 45 54 20 4d 31 0d 0a 09 50 4f 50 09   ..;GET M1...POP.
10: 48 09 09 3b 41 4e 44 20 50 52 45 56 49 4f 55 53   H..;AND PREVIOUS
20: 20 4f 46 46 53 45 54 0d 0a 09 50 55 53 48 09 48    OFFSET...PUSH.H
30: 09 09 3b 41 4e 44 20 52 45 53 54 4f 52 45 20 54   ..;AND RESTORE T
40: 48 45 4d 0d 0a 09 50 55 53 48 09 42 0d 0a 4c 50   HEM...PUSH.B..LP
50: 32 3a 09 53 48 4c 44 09 44 4a 31 09 09 3b 4c 4f   2:.SHLD.DJ1..;LO
60: 4f 50 20 42 41 43 4b 20 54 4f 20 48 45 52 45 20   OP BACK TO HERE
70: 49 46 20 42 4c 4f 43 4b 0d 0a 09 53 48 4c 44 09   IF BLOCK...SHLD.
### Disk Sector 21 ###
00: 44 49 31 09 09 3b 4e 4f 54 20 59 45 54 20 53 4f   DI1..;NOT YET SO
10: 52 54 45 44 0d 0a 09 58 43 48 47 0d 0a 09 44 41   RTED...XCHG...DA
20: 44 09 44 0d 0a 09 58 43 48 47 09 09 09 3b 48 4c   D.D...XCHG...;HL
30: 20 48 41 53 20 44 28 49 29 2c 44 45 20 48 41 53    HAS D(I),DE HAS
40: 20 44 28 49 2b 4d 29 0d 0a 0d 0a 3b 09 43 4f 4d    D(I+M)....;.COM
50: 50 41 52 45 20 53 54 52 49 4e 47 53 20 41 4e 44   PARE STRINGS AND
60: 20 53 57 49 54 43 48 0d 0a 0d 0a 43 50 31 3a 09    SWITCH....CP1:.
70: 50 4f 50 09 42 09 09 3b 4c 45 4e 0d 0a 09 50 55   POP.B..;LEN...PU
### Disk Sector 22 ###
00: 53 48 09 42 0d 0a 4c 50 33 3a 09 4c 44 41 58 09   SH.B..LP3:.LDAX.
10: 44 09 09 3b 42 59 54 45 20 46 52 4f 4d 20 28 49   D..;BYTE FROM (I
20: 2b 4d 29 0d 0a 09 53 55 42 09 4d 09 09 3b 56 53   +M)...SUB.M..;VS
30: 20 42 59 54 45 20 46 52 4f 4d 20 49 0d 0a 09 4a    BYTE FROM I...J
40: 4e 5a 09 4e 45 51 0d 0a 09 49 4e 58 09 48 09 09   NZ.NEQ...INX.H..
50: 3b 49 46 20 45 51 55 41 4c 2c 20 43 4f 4d 50 41   ;IF EQUAL, COMPA
60: 52 45 20 4e 45 58 54 20 50 41 49 52 0d 0a 09 49   RE NEXT PAIR...I
70: 4e 58 09 44 0d 0a 09 44 43 58 09 42 0d 0a 09 4d   NX.D...DCX.B...M
### Disk Sector 23 ###
00: 4f 56 09 41 2c 42 09 09 3b 4c 41 53 54 20 42 59   OV.A,B..;LAST BY
10: 54 45 3f 0d 0a 09 4f 52 41 09 43 0d 0a 09 4a 4e   TE?...ORA.C...JN
20: 5a 09 4c 50 33 0d 0a 09 4a 4d 50 09 4e 53 57 09   Z.LP3...JMP.NSW.
30: 09 3b 4e 4f 20 53 57 41 50 20 41 53 20 41 4c 4c   .;NO SWAP AS ALL
40: 20 45 51 55 41 4c 0d 0a 0d 0a 3b 09 55 4e 45 51    EQUAL....;.UNEQ
50: 55 41 4c 2c 20 42 55 54 20 57 48 49 43 48 20 57   UAL, BUT WHICH W
60: 41 59 3f 0d 0a 0d 0a 4e 45 51 3a 09 4a 4e 43 09   AY?....NEQ:.JNC.
70: 4e 53 57 09 09 3b 49 46 20 44 28 49 29 20 3c 20   NSW..;IF D(I) <
### Disk Sector 24 ###
00: 44 28 49 2b 4d 29 2c 20 44 4f 4e 27 54 20 53 57   D(I+M), DON'T SW
10: 41 50 0d 0a 09 09 09 09 3b 43 48 41 4e 47 45 20   AP......;CHANGE
20: 54 4f 20 4a 43 20 46 4f 52 20 44 45 53 43 45 4e   TO JC FOR DESCEN
30: 44 49 4e 47 20 4f 52 44 45 52 0d 0a 0d 0a 53 57   DING ORDER....SW
40: 3a 09 50 55 53 48 09 42 09 09 3b 53 57 41 50 20   :.PUSH.B..;SWAP
50: 52 45 43 4f 52 44 53 2c 20 4c 45 4e 20 43 4f 55   RECORDS, LEN COU
60: 4e 54 45 52 20 49 4e 20 42 0d 0a 09 4d 4f 56 09   NTER IN B...MOV.
70: 42 2c 4d 09 09 3b 49 20 42 59 54 45 20 49 4e 20   B,M..;I BYTE IN
### Disk Sector 25 ###
00: 54 45 4d 50 20 53 54 4f 52 45 20 42 0d 0a 09 4c   TEMP STORE B...L
10: 44 41 58 09 44 09 09 3b 49 2b 4d 20 42 59 54 45   DAX.D..;I+M BYTE
20: 0d 0a 09 4d 4f 56 09 4d 2c 41 09 09 3b 49 2b 4d   ...MOV.M,A..;I+M
30: 20 2d 3e 20 49 0d 0a 09 4d 4f 56 09 41 2c 42 09    -> I...MOV.A,B.
40: 09 3b 41 20 49 53 20 54 52 41 4e 53 46 45 52 20   .;A IS TRANSFER
50: 52 45 47 49 53 54 45 52 0d 0a 09 53 54 41 58 09   REGISTER...STAX.
60: 44 09 09 3b 49 20 2d 3e 20 49 2b 4d 0d 0a 09 49   D..;I -> I+M...I
70: 4e 58 09 48 09 09 3b 4e 45 58 54 20 49 0d 0a 09   NX.H..;NEXT I...
### Disk Sector 26 ###
00: 49 4e 58 09 44 09 09 3b 4e 45 58 54 20 49 2b 4d   INX.D..;NEXT I+M
10: 0d 0a 09 50 4f 50 09 42 09 09 3b 52 45 53 54 4f   ...POP.B..;RESTO
20: 52 45 20 43 4f 55 4e 54 45 52 0d 0a 09 44 43 58   RE COUNTER...DCX
30: 09 42 0d 0a 09 4d 4f 56 09 41 2c 42 09 09 3b 41   .B...MOV.A,B..;A
40: 4c 4c 20 44 4f 4e 45 3f 0d 0a 09 4f 52 41 09 43   LL DONE?...ORA.C
50: 0d 0a 09 4a 4e 5a 09 53 57 09 09 3b 4e 4f 0d 0a   ...JNZ.SW..;NO..
60: 0d 0a 3b 09 52 45 43 4f 52 44 20 53 57 41 50 50   ..;.RECORD SWAPP
70: 45 44 2c 20 43 48 45 43 4b 20 49 46 20 49 31 2d   ED, CHECK IF I1-
### Disk Sector 27 ###
00: 4d 31 20 3c 20 31 0d 0a 0d 0a 09 4c 48 4c 44 09   M1 < 1.....LHLD.
10: 4d 31 0d 0a 09 4d 4f 56 09 41 2c 48 0d 0a 09 43   M1...MOV.A,H...C
20: 4d 41 0d 0a 09 4d 4f 56 09 44 2c 41 09 09 3b 44   MA...MOV.D,A..;D
30: 20 3d 20 2d 48 0d 0a 09 4d 4f 56 09 41 2c 4c 0d    = -H...MOV.A,L.
40: 0a 09 43 4d 41 0d 0a 09 4d 4f 56 09 45 2c 41 09   ..CMA...MOV.E,A.
50: 09 3b 45 20 3d 20 2d 4c 0d 0a 09 4c 48 4c 44 09   .;E = -L...LHLD.
60: 49 31 09 09 3b 49 31 2d 4d 31 20 49 4e 20 48 4c   I1..;I1-M1 IN HL
70: 20 28 4f 4e 45 53 20 43 4f 4d 50 4c 45 4d 45 4e    (ONES COMPLEMEN
### Disk Sector 28 ###
00: 54 29 0d 0a 09 44 41 44 09 44 0d 0a 09 4a 4e 43   T)...DAD.D...JNC
10: 09 4e 53 57 09 09 3b 28 49 31 2d 4d 31 29 20 3c   .NSW..;(I1-M1) <
20: 31 0d 0a 0d 0a 3b 09 43 41 4c 43 20 4e 45 57 20   1....;.CALC NEW
30: 44 28 49 29 2c 20 44 28 49 2b 4d 29 0d 0a 0d 0a   D(I), D(I+M)....
40: 09 49 4e 58 09 48 09 09 3b 49 31 3d 49 31 2d 4d   .INX.H..;I1=I1-M
50: 31 20 28 41 44 44 20 31 20 46 4f 52 20 54 57 4f   1 (ADD 1 FOR TWO
60: 53 20 43 4f 4d 50 4c 45 4d 45 4e 54 29 0d 0a 09   S COMPLEMENT)...
70: 53 48 4c 44 09 49 31 0d 0a 09 4c 48 4c 44 09 44   SHLD.I1...LHLD.D
### Disk Sector 29 ###
00: 4a 31 09 09 3b 4f 4c 44 20 44 28 49 29 3d 4e 45   J1..;OLD D(I)=NE
10: 57 20 44 28 49 2b 4d 29 0d 0a 09 58 43 48 47 09   W D(I+M)...XCHG.
20: 09 09 3b 49 4e 20 44 45 0d 0a 09 4c 48 4c 44 09   ..;IN DE...LHLD.
30: 4d 4c 31 0d 0a 09 4d 4f 56 09 41 2c 45 0d 0a 09   ML1...MOV.A,E...
40: 53 55 42 09 4c 0d 0a 09 4d 4f 56 09 4c 2c 41 0d   SUB.L...MOV.L,A.
50: 0a 09 4d 4f 56 09 41 2c 44 0d 0a 09 53 42 42 09   ..MOV.A,D...SBB.
60: 48 0d 0a 09 4d 4f 56 09 48 2c 41 0d 0a 09 53 48   H...MOV.H,A...SH
70: 4c 44 09 44 49 31 09 09 3b 44 49 31 20 3d 20 44   LD.DI1..;DI1 = D
### Disk Sector 30 ###
00: 49 31 2d 4d 4c 31 0d 0a 09 4a 4d 50 09 43 50 31   I1-ML1...JMP.CP1
10: 0d 0a 0d 0a 3b 09 49 4e 43 52 45 4d 45 4e 54 20   ....;.INCREMENT
20: 4a 20 41 4e 44 20 43 48 45 43 4b 20 46 4f 52 20   J AND CHECK FOR
30: 4a 3e 4b 0d 0a 0d 0a 4e 53 57 3a 09 4c 48 4c 44   J>K....NSW:.LHLD
40: 09 4a 31 0d 0a 09 49 4e 58 09 48 09 09 3b 4a 3d   .J1...INX.H..;J=
50: 4a 2b 31 0d 0a 09 53 48 4c 44 09 4a 31 0d 0a 09   J+1...SHLD.J1...
60: 53 48 4c 44 09 49 31 0d 0a 09 58 43 48 47 0d 0a   SHLD.I1...XCHG..
70: 09 4c 48 4c 44 09 4b 31 0d 0a 09 4d 4f 56 09 41   .LHLD.K1...MOV.A
### Disk Sector 31 ###
00: 2c 4c 09 09 3b 4b 2d 4a 20 43 41 4c 43 55 4c 41   ,L..;K-J CALCULA
10: 54 49 4f 4e 0d 0a 09 53 55 42 09 45 0d 0a 09 4d   TION...SUB.E...M
20: 4f 56 09 41 2c 48 0d 0a 09 53 42 42 09 44 0d 0a   OV.A,H...SBB.D..
30: 09 4a 43 09 44 49 56 09 09 3b 4a 20 3e 20 4b 2c   .JC.DIV..;J > K,
40: 20 4e 45 58 54 20 48 41 4c 46 20 49 4e 54 45 52    NEXT HALF INTER
50: 56 41 4c 0d 0a 0d 0a 3b 09 43 41 4c 43 20 4e 45   VAL....;.CALC NE
60: 57 20 44 28 4a 29 2c 20 44 28 49 29 0d 0a 0d 0a   W D(J), D(I)....
70: 09 4c 48 4c 44 09 44 4a 31 0d 0a 09 50 4f 50 09   .LHLD.DJ1...POP.
### Disk Sector 32 ###
00: 44 09 09 3b 4c 45 4e 20 49 4e 20 44 45 0d 0a 09   D..;LEN IN DE...
10: 50 55 53 48 09 44 0d 0a 09 44 41 44 09 44 09 09   PUSH.D...DAD.D..
20: 3b 4e 45 57 20 44 28 4a 29 3d 4f 4c 44 20 44 28   ;NEW D(J)=OLD D(
30: 4a 2b 31 29 0d 0a 09 58 43 48 47 0d 0a 09 4c 48   J+1)...XCHG...LH
40: 4c 44 09 4d 4c 31 09 09 3b 53 54 49 4c 4c 20 49   LD.ML1..;STILL I
50: 4e 20 43 55 52 52 45 4e 54 20 42 4c 4f 43 4b 20   N CURRENT BLOCK
60: 53 4f 20 4d 4c 31 20 56 41 4c 49 44 0d 0a 09 58   SO ML1 VALID...X
70: 43 48 47 09 09 09 3b 44 28 4a 29 20 49 4e 20 48   CHG...;D(J) IN H
### Disk Sector 33 ###
00: 4c 2c 20 4d 4c 31 20 49 4e 20 44 45 0d 0a 09 4a   L, ML1 IN DE...J
10: 4d 50 09 4c 50 32 0d 0a 0d 0a 45 4e 44 09 53 54   MP.LP2....END.ST
20: 41 52 54 0d 0a 0d 0a 00 00 00 00 00 00 00 00 00   ART.............
30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................
70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   ................