|
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 - download
Length: 3712 (0xe80) Types: TextFile Names: »MPDRV«
└─⟦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«
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»