DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

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

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦2f8036332⟧ TextFile

    Length: 2432 (0x980)
    Types: TextFile
    Names: »MARK«

Derivation

└─⟦7eb2f5ba2⟧ Bits:30005109 8" CR80 Floppy CR80FD_0068 ( CR/D/0103 BM1 BM2 NF )
    └─⟦482ab23dc⟧ 
        └─ ⟦this⟧ »HTH.MARK« 

TextFile

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»