DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦8d621b271⟧ TextFile

    Length: 3584 (0xe00)
    Types: TextFile
    Names: »RR«

Derivation

└─⟦d85593a46⟧ Bits:30000470 DOMUS disk image - User files
    └─ ⟦this⟧ »/RR« 

TextFile


PRDE1


; ASSEMBLER CODED SUBROUTINE.
; THE ROUTINE SORTS N NUMBERS IN THE ARRAY A
;
; JESPER TRAFF 1978, COPYRIGHT (C) JESPER TRAFF.
;



; SUBROUTINE TABLE.

SORT
.TXT *SORT<0><0><0><0>*
0

; COREAREA POINTED OUT BY U.STK
;
;  A    ARRAY TO BE SORTED.
;  N    NUMBER OF ELEMENTS TO BE SORTED.
;  B	BOOLEAN.
; A:    ADDRESS OF ARRAY
;       NUMBER OF ROWS
;       NUMBER OF COLUMNS
; N:    ACTUAL PARAMETER (HIGH)
;         -        -     (LOW)
; B:	  -        -     (HIGH)
;	  -        -     (LOW)


SORT:   3
        REAL+ARRAY
        REAL
	REAL
        LDA 2,0,2	; CHECK FOR INDEX ERRORS IN PARAMS.
        LDA 0,2,2
        MOV 0,0,SZR
        JMP ERR31       ; ARRAY MUST ONLY HAVE ONE SUBSCRIPT.
        LDA 2,U.STK,3
        LDA 2,1,2
        LDA 0,0,2
        LDA 1,1,2
        BCALL FIX
	MOVZL 0,0,SZC
	JMP ERR31	; N IS NEGATIVE.
        ADC 0,0
        ADD 0,1
        STA 1,U.S00,3   ; M=N-1
        LDA 2,U.STK,3
        LDA 2,0,2
        LDA 0,1,2
        ADCZ# 1,0,SNC
        JMP ERR31       ; N LARGER THAN A(MAX).
	LDA 2,U.STK,3
	LDA 2,2,2
	LDA 0,0,2
	LDA 1,1,2
	BCALL FIX
	LDA 2,INCREAS
	MOV 0,0,SNR
	MOV 1,1,SZR
	INC 2,2		; CREATE SNR INSTRUCTION.
	STA 2,U.S09,3
	LDA 1,U.S00,3
;
;
LOOP1:  MOV 1,1,SNR     ; M=0
        RET1            ; YES - RETURN TO BASIC.
        LDA 2,U.STK,3
        LDA 2,0,2
        LDA 0,0,2
        STA 0,U.S07,3   ; ADJUST ADDRESS(A(LOWBOUND)).
        INC 0,0
        INC 0,0
        STA 0,U.S08,3   ; ADJUST ADDRESS(A(LOWBOUND+1)).
        SUBZL 0,0
        STA 0,U.S01,3   ; M1=1
        STA 0,U.S02,3   ; K=1
;
;
LOOP2:  SUBZL 0,0
        LDA 1,U.S07,3
        LDA 2,CUR
        A.GDOUBLE       ; GET A(K)
        STA 0,U.S03,3
        STA 1,U.S04,3
        SUBZL 0,0
        LDA 1,U.S08,3
        A.GDOUBLE       ; GET A(K+1)
        STA 0,U.S05,3
        STA 1,U.S06,3
	LDA 2,U.S09,3
	STA 2,TEST
        LDA 2,ADD1
        ADD 3,2
        BCALL FSUB
TEST:	0		; A(K)<A(K+1) OR A(K)>A(K+1). (DEPENDING ON B)
        JMP A
;
;
        SUBZL 0,0       ; YES - EXCHANGE A(K) WITH A(K+1).
        STA 0,PUT1+1
        STA 0,PUT2+1
        LDA 0,U.S07,3
        STA 0,PUT1+2
        LDA 0,U.S05,3
        LDA 1,U.S06,3
        LDA 2,CUR
PUT1:   A.PDOUBLE
        0
        0
        LDA 0,U.S08,3
        STA 0,PUT2+2
        LDA 0,U.S03,3
        LDA 1,U.S04,3
PUT2:   A.PDOUBLE
        0
        0
        LDA 1,U.S02,3
        STA 1,U.S01,3   ; M1=K
;
;
A:      LDA 0,U.S02,3
        INC 0,0
        STA 0,U.S02,3   ; K=K+1
        LDA 1,U.S00,3
        SUBZ# 0,1,SNC   ; K>M
        JMP B
        LDA 0,U.S08,3
        STA 0,U.S07,3   ; ADJUST ADDRESS(A(K)).
        INC 0,0
        INC 0,0
        STA 0,U.S08,3   ; ADJUST ADDRESS(A(K+1)).
        JMP LOOP2
;
;
B:      ADC 0,0
        LDA 1,U.S01,3
        ADD 0,1
        STA 1,U.S00,3   ; M=M1-1
        JMP LOOP1

ERR31:  ERROR
        31

ADD1:   U.S03

INCREAS:MOVZL 0,0,SZC	; SORT NUMBERS IN INCREASING ORDER.

        PRDE2
*$«nul»