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

⟦9309c6aaa⟧ TextFile

    Length: 3712 (0xe80)
    Types: TextFile
    Names: »MPDRV«

Derivation

└─⟦dbca894e8⟧ Bits:30005524 8" CR80 Floppy CR80FD_0189 ( CR/D/0435 SYS-BOOT SYS-GEN modules NB: Block 12 (Backup) is bad )
    └─⟦309782b6a⟧ 
        └─ ⟦this⟧ »SL.MPDRV« 
└─⟦548cf593d⟧ Bits:30005189 8" CR80 Floppy CR80FD_0186 ( SYSTEM BOOT, GSB AOUT, MP, OC, FLOPPY BACKUP-DISK Start 26F Base 14E2 )
    └─⟦daba3b0d5⟧ 
        └─ ⟦this⟧ »JAS.MPDRV« 

TextFile

LIST
;----------------------------------------------------------------------
;
; DRIVER FOR BINDER MAGNETE MATRIX
; PRINTER WITH RAM-FF-CONTROL
; AND AV24-INTERFACE
;
;----------------------------------------------------------------------
BEGIN MODULE
GLOBAL CAUSE,INTERRUPT,LOCACTION,DEVPR
NOLIST
$S8MXGL
$S8MNAX
LIST  XPD:=  DRIVERLENGTH  NOLIST
$S8MXD1
LIST
BEGIN   USE BASE
ENTRY   MP00
GETADDRESS=     #0047
GETBYTE=        #0048
NEXTOPRATION=   #0043
RETURNNSWER=    #0044
DEVICE=         #0053
CUREVENT=       #003A
BNRESERVE=      #0003
BNRELEASE=      #0002
BMILLEGAL=      #0008
BMNOTREADY=     #0001

CR=             #000D
STX=            #0002
FF=             #000C
VT=             #000B

BNOUTPUTRDY=    11
BNTERMRDY=      9

MPDEVNO=        6
KIND:=          KINDOC OR BMBYTE OR BMDISP

RTN:            0
SAVE0:          0
SYSACTION:      0

USE PROG

NAM:            <:MP:>
R1000:          1000
RKIND:          KIND

LOCAC:                              ; LOCAL ACTION:
        MOV          R0  SAVE0      ;   SAVE(R0);
        MOV   CAUSE-C           R0  ;   IF 0.CAUSE <> 3 THEN
        INEP         R0  3          ;   BEGIN
        MOV   SAVE0             R0  ;     RESTORE(R0);GOTO SYSACTION;
        JMPI             SYSACTION  ;   END;
        MOVC  0                 R0  ;   0 =>
        LDS          R0             ;     PSW;
        JMP              ERROR      ;   GOTO ERROR;
;###
SENSE:                              ; SENSE DEVICE;
        MOV   INTERRUPT-C       R1  ;
        MOV   R1000             R0  ;   10 SEC => DELAY;
        MON   WAITINTERRUPT         ;   WAITINTERRUPT;
        JMP              ERROR      ;  TIMEOUT:   GOTO ERROR;
SENSE1:                             ; SENSE STATUS;
        SIO          R0         R4  ;   SENSE;
        IBN          R0  BNOUTRDY   ;   IF NOT OUTPUT READY
        IBZ          R0  BNTERMRDY  ;      OR TERM. NOT READY THEN
        JMP              SENSE      ;   GOTO SENSE;
        WIO          R3         R4  ;   OUTPUT CHAR;
        JMP              0.     X5  ;   RETURN;
                                    ;
                                    ;
MP00:                               ; INIT:
        MOVC  MP00              R0  ;
        MOV          R0  RTN        ;
        MOVC  NAME-C+4          R7  ;
        MOV   NAM               R0  ;
        MOVC  0                 R1  ;
        MOVC  0                 R2  ;
        MOVC  0                 R3  ;
        STC   3                     ;
        MOV   LOCACN-C          R0  ;
        MOVC   LOCAC            R1  ;
        MOV          R0  SYSACTION  ;   0.LOCACN => 0.SYSACTION;
        MOV          R1  LOCACN-C   ;   LOCAL ACTION => 0.LOCACN;
        MOVC  MPDEVNO           R0  ;
        MOV          R0  DEVICE-C   ;
        MOV          R0         R4  ;
        SLL          R0  2          ;
        MOV          R0  DEVPR-C    ;
        MON   INITDEVICE            ;   INITDEVICE;
        MOV   INTERT-C          R1  ;
        MON   CLEARINTERRUPT        ;   CLEARINTERRUPT;
        MON   NEXTOPERATION         ;   NEXTOPERATION;
        JMP              MP01       ;
        JMP              ILLEGAL    ;  INPUT: ILLEGAL;
                                    ;
MP08:                               ; TEST ATTENTION:
        MON   WAITEVENT             ;   WAITEVNET;
        TRP   0                     ;     ANSWER: IMPOSSIBLE;
        JOZ          X7  MP01       ;     MESSAGE: IF OPER.MESS<>0 THEN
                                    ;     BEGIN
        MON   RESUMEEVENT           ;       RESUME EVENT;
        JMP              MP03       ;       GOTO OUTPUT;
                                    ;     END;
MP01:                               ;
        MOVC  3                 R0  ;   ENABLE INTERFACE;
        CIO          R0         R4  ;
        MOVC   STX              R3  ;   STX => CHAR;
        JMP          S5   SENSE1    ;   SENSE;
        MOVC  66                R6  ;   66 => COUNT;
MP02:                               ;   FOR I:=1 UNTIL COUNT DO
                                    ;   BEGIN
        MOVC  NL                R3  ;     NL => CHAR;
        JMP          S5  SENSE      ;     SENSE;
        SOB          R6  MP02       ;   END;
        MOVC  VT                R3  ;   VT => CHAR;
        JMP          S5  SENSE      ;   SENSE;
        MOVC  FF                R3  ;   FF => CHAR;
        JMP          S5  SENSE      ;   SENSE;
        MOVC  MP08             R0  ;
        MOV          R0  RTN        ;
        MON   RESUMEEVENT           ;   RESUME EVENT;
;###
MP03:                               ; OUTPUT:
        MON   NEXTOPERATION         ;   NEXTOPERATION;
        JMP              MP04       ;
        JMP              ILLEGAL    ;  INPUT: ILLEGAL;
        MON   GETADDRESS            ;  OUTPUT:GETADDRESS;
        JMP              ILLEGAL    ;     ERROR: ILLEGAL;
MP05:                               ;   FOR I:=1 UNTIL MCOUNT.WORK DO
                                    ;   BEGIN
        MON   GETBYTE               ;     GETBYTE;
        JMP          S5  SENSE      ;     SENSE;
        INEP         R3  FF         ;     IF BYTE = FF
        INE          R3  NL         ;      OR BYTE = NL THEN
        JMP              MP06       ;     BEGIN
        MOVC  CR                R3  ;       CR => CHAR;
        JMP          S5  SENSE      ;       SENSE;
MP06:                               ;     END;
        ADDC  1                 R6  ;     INCREASE (BYTEADDR);
        SOB          R2  MP05       ;   END;
        CLR              0.     X7  ;   0 => RESULT.ANSWER;
        MOV          R7         R1  ;   RE.ANSW;
        MOV   CUREVENT-C        R2  ;   RESTORE(EVENT);
        MON   SENDANSWER            ;   SENDANSWER;
        JMP              MP08      ;   GOTO OUTPUT;
                                    ;
MP04:                               ; CONTROL:
        IBZ          X7  BNRELEASE  ;   IF RELEASE THEN
        JMP              MP07       ;   BEGIN
        MOVC  FF                R3  ;     FF => CHAR;
        JMP          S5  SENSE      ;     SENSE;
        MOVC  CR                R3  ;     FF => CHAR;
        JMP          S5  SENSE      ;     SENSE;
MP07:                               ;  END;
        MOV   RKIND             R2  ;
        MOV          R2  MCOUNT.X7  ;
        CLR              0.     X7  ;   0 => RESULT.ANSW;
        MOV          R7         R1  ;   RE.ANSW;
        MOV   CUREVENT-C        R2  ;   RESTORE(EVENT);
        MON   SENDANSWER            ;   SENDANSWER;
        JMP              MP08      ;   GOTO OUTPUT;
                                    ;
ILLEGAL:                            ; ILLEGAL:
        MODC  BMILLEGAL-BMNOTREADY  ;   ILLEGAL=>RESULT.ANSWER;
ERROR:                              ; ERROR:
        MOVC  BMNOTREADY        X7  ;   NOTREADY => RESULT.ANSW;
        MOVC  0                 R1  ;   0 => STATUS;
        MON   RETURNANSWER          ;   RETURNANSWER;
        JMPI              RTN       ;   RETURN;
                                    ;
END                                 ;

XREFS=   4
XBUFS=   0
XPRPC=   MP00

NOLIST
$S8MXD2
LIST
END ;###
«eof»