|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 2432 (0x980)
Types: TextFile
Names: »MARK«
└─⟦7eb2f5ba2⟧ Bits:30005109 8" CR80 Floppy CR80FD_0068 ( CR/D/0103 BM1 BM2 NF )
└─⟦482ab23dc⟧
└─⟦this⟧ »HTH.MARK«
LIST
; THIS MODUL IS A SOLUTION FOR THE
; BENCH-MARK TASK
;
; BY HENNING TRANBERG FEB 1979
;
;----------------------------------------------------------------------
; USE OF REGISTERS:
; R0: NOT USED
; R1: WORK
; R2: WORK
; R3: CONSTANT TO ADD TO P2
; R4: MASK FOR P2
; R5: P2(N)
; R6: P1(N)
; R7: ELEMENT-COUNTER (N)
;----------------------------------------------------------------------
BEGIN MODULE
USE BASE
0 REPEAT 8-1 ; RESET REGISTERS
B1, ; SET BASE
B1, ; BASE+MODIFY
P1, ; PROG
P1, ; PROG+PC
0, ; TIMER
#E000, ; PSW
0, ; LINK BASE
LOCAC, ; LOCAL ACTION ADDR
INTR, ; LOCAL INTRPT ADDR
0, ; EMERGENCY/CAUSE
0, ; DEVICE ADDR
0, ; TIMER PRESET
NUM: 200 ; NUMBERS OF ELEMENTS IN STRUCTURE
; P1/P2
TERM: 1 ; TERMINAL FOR START/END MARK
P1P2: 0 REPEAT 60-1 ; INITIALISATION OF THE STRUCTURE
; FIRST 30 ELEMENTS OF BOTH
; P1 AND P2=0
#7FF8 REPEAT 60-1 ; NEXT 30 ELEMENTS OF P1 AND
; P2=7FF8
#00F0,0 REPEAT (40-1,2) ; LAST 40 ELEMENST:
; P1=00F0 AND P2=0
MASK: #FFF8 ; INTERESTING BITS IN P2
;----------------------------------------------------------------------
USE PROG
START: MOVC <:B:> R1 ; DATAWORD TO IDENTIFY
; START OF PROGRAM
MOVC TERM R2 ; TERMINALNUMBER
WIO R1 R2 ; WRITE DATAWORD ON TERMINAL
ST: MOVC 0 R7 ; INITIALISATION OF ELEMENT-COUNTER
; R7 COUNTS ELEMENTS IN
; P1P2 STRUCTURE
MOVC 8 R3 ; CONSTANT USED TO ADD TO P2
MOV MASK.X7 R4 ; CONSERNED BITS IN P2
NEXTN: ADDC 1 R7 ; INCREMENT ELEMENT-COUNTER
MOV P1P2.X7 R6 ; FETCH P1(X7)
ADDC 1 R7 ; INCREMENT ELEMENT-COUNTER , TO P2
SBN R6 6 ; P1(BIT=6)=1? THEN
JMP NEWN ; GOTO NEWN AND TEST "FINISHED"
MOV P1P2.X7 R5 ; FETCH P2(X7)
MOV R5 R2 ; SAVE P2
AND R5 R4 ; UNMASK LAST 3 BITS IN P2
SNE R5 R4 ; IF ALL BITS IN P2=1 GOTO NEWN
JMP NEWN ;
ADD R3 R2 ; ELSE INCREMENT P2
MOV R2 P1P2.X7 ; SAVE NEW P2 IN THE STRUCTURE
NEWN: MOVC NUM R2 ; COMPARE ELEMENT-COUNTER WITH NUM
SNE R7 R2 ; I.E. HAVE WE GONE THROUGH
; ALL ELEMENTS
JMP FIN ; IF EQUAL THEN FINISHED
JMP NEXTN ; ELSE NEXT ELEMENTS OF P1/P2
LOCAC: MOVC <:E:> R1 ; DATAWORD TO IDENTIFY PROG.-ERRO
MOVC TERM R2 ; TERMINALNUMBER
WIO R1 R2 ; WRITE DATAWORD
FIN: MOVC <:F:> R1 ; DATAWORD TO IDENTIFY PROG.-FINISH
MOVC TERM R2 ; TERMINALNUMBER
WIO R1 R2 ; WRITE DATAWORD
;----------------------------------------------------------------------
USE BASE
B1=#1000 ; BASE START-ADDR
P1=B1+LOC ; PROGRAM START-ADDR
INTR=LOCAC ; IF INTERRUPT OCCURS
; THEN GOTO LOCAC
END
«eof»