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: 6400 (0x1900) Types: TextFile Names: »AOUT«
└─⟦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.AOUT« └─⟦548cf593d⟧ Bits:30005189 8" CR80 Floppy CR80FD_0186 ( SYSTEM BOOT, GSB AOUT, MP, OC, FLOPPY BACKUP-DISK Start 26F Base 14E2 ) └─⟦daba3b0d5⟧ └─ ⟦this⟧ »JAS.AOUT«
LIST ;---------------------------------------------------------------------- ; ; ASSEMBLER-OUTPUT-EDITOR FOR SLOW PRINTERS ; ; CALLS THE DRIVER, SPECIFIED BY DNAME (BASERELATIVE ADDRESS #0058) ; ;---------------------------------------------------------------------- BEGIN MODULE GLOBAL WORK NOLIST $S8MXGL $S8MNAX LIST XPD:= DRIVERLENGTH NOLIST $S8MXD1 LIST BEGIN USE BASE ENTRY ASSOUT TRANSFEREVENT= #0012 ENDPROGRAM= #0041 NEXTOPERATION= #0043 RETURNANSWER= #0044 GETADDRESS= #0047 GETBYTE= #0048 BMILLEGAL= #0008 CUREVENT= #003A FF= #000C SAVE1: 0 ANSWER: 0 CCOUNT: 0 CADR: 0 ACOUNT: 0 AEVENT: 0 DNAME: <:MP:>,0,0,0,0 LINE: 0 LINE1: 0,REPEAT 64 USE PROG RAU: <:AU:> R00: <:00:> NAM1: <:AO:> NAM2: <:UT:> LINEEND: LINE<1 + 132 ;### NEWBYTE: ; NEWBYTE; MOV R0 SAVE1 ; SAVE(R0); MOV CADR R6 ; 0.CADR => BYTEADR; MOV CCOUNT R2 ; 0.BYTECOUNT => COUNT; ADDC 1 R6 ; INCR(BYTEADDR); ADDC -1 R2 ; DECR(COUNT); INE R2 0 ; IF COUNT <> 0 THEN JMP NB1 ; BEGIN MOV AEVENT R6 ; 0.OLDEVENT => EVT; MOV R6 CUREVENT-C ; EVT => 0.CUREVENT; MOV ACOUNT R6 ; 0.OLDCOUNT => CNT; MOV R6 MCOUNT.X7 ; CNT => MCOUNT.WORK; MOV ANSWER R0 ; 0.ANSWER MOV R0 0. X7 ; => RES.WORK; MON RETURNANSWER ; RETURNANSWER; NB3: ; NEWOP: MON NEXTOPERATION ; NEXTOPERATION; JMP NB2 ; CONTROL: GOTO CNTRL; JMP NB4 ; INPUT: GOTO ILLEGAL; ; OUTPUT: CONTINUE; CLR ANSWER-WORK. X7 ; 0 => 0.ANSWER; MOV MCOUNT.X7 R6 ; MCOUNT.WORK => CNT; MOV R6 ACOUNT ; CNT => 0.OLDCOUNT; MOV CUREVENT-C R6 ; 0.CUREVENT => EVT; MOV R6 AEVENT ; EVT => 0.OLDEVENT; MON GETADDRESS ; GETADDRESS; JMP NB4 ; ERROR: GOTO ILLEGAL; NB1: ; END; MON GETBYTE ; GETBYTE; MOV R6 CADR ; BYTEADR => 0.CADR; MOV R2 CCOUNT ; COUNT => 0.BYTECOUNT; MOV SAVE1 R0 ; RESTORE(R0); JMP 0. X4 ; RETURN; NB2: ; CNTRL: JMP S6 TC ; TRANSFER COMMAND; JMP NB3 ; GOTO NEWOP; NB4: ; ILLEGAL: MOVC BMILLEGAL X7 ; ILLEGAL=>RES.WORK; MON RETURNANSWER ; RETURNANSWER; JMP NB3 ; GOTO NEWOP; ;### ; SETBYTE: ; SETBYTE: MOV R0 R1 ; ADR => WRDADR; SRL R1 1 ; WRDADR DIV 2 => WRDADR; IBN R0 0 ; IF ADR IS ODD THEN SWP 0. X1 ; SWAP 0.WRDADR; MODC #00FF ; PUT R3 0. X1 ; PUT BYTE INTO 0.WRDADR(7:8); IBN R0 0 ; IF ADR IS ODD THEN SWP 0. X1 ; SWAP 0.WRDADR; JMP 0. X5 ; RETURN; ; FETCHBYTE: ; FETCHBYTE: MOV R0 R1 ; ADR => WRDADR; SRL R1 1 ; WRDADR DIV 2 => WRDADR; MOV 0. X1 R3 ; 0.WORDADR => BYTE; IBN R0 0 ; IF ADR IS ODD THEN SWP R3 ; SWAP BYTE; XTR R3 8 ; BYTE(7:8) => BYTE; JMP 0. X6 ; RETURN; TC: ; TRANSFER COMMAND: MOV CUREVENT-C R0 ; 0.CUREVENT MOV R0 AEVENT ; => 0.AEVENT; MOVC DNAME R0 ; RE.NAME; MOV R7 R1 ; RE.MESS; MON SENDMESSAGE ; SENDMESSAGE; MON WAITANSWER ; WAITANSWER; MOV AEVENT R2 ; 0.AEVENT => EVENT; MON SENDANSWER ; SENDANSWER; JMP 0. X6 ; RETURN; ;### ; ERR1: ; ERROR: MOVC BMILLEGAL X7 ; ILLEGAL => RES.WORK; MON RETURNANSWER ; RETURNANSWER; JMP ASSOUT ; GOTO INIT; C1: ; FIRSTCONTROL: JMP S6 TC ; TRANSFER COMMAND; ; ASSOUT: ; INIT: MOVC NAME-C+4 R7 ; NAME+4=>STCADR; MOV NAM1 R0 ; 0.NAMEWORD1 => NW; MOV NAM2 R1 ; 0.NAMEWORD2 => NW; MOVC 0 R2 ; 0 => NW; MOVC 0 R3 ; 0 => NW; STC 3 ; SET NAME; MON NEXTOPERATION ; NEXTOPERATION; JMP C1 ; CONTROL: GOTO FIRSTCONTROL; JMP ERR1 ; INPUT: GOTO ERROR; ; OUTPUT: CONTINUE; MOV MCOUNT.X7 R6 ; MCOUNT.WORK => CNT; MOV R6 ACOUNT ; CNT => 0.OLDCOUNT; MOV CUREVENT-C R6 ; 0.CUREVENT => EVT; MOV R6 AEVENT ; EVT => 0.AEVENT; MON GETADDRESS ; GETADDRESS; JMP ERR1 ; ERROR: GOTO ERROR; ADDC -1 R6 ; ADJUST ADDRESS; ADDC 1 R2 ; ADJUST COUNT; MOV R6 CADR ; ADDRESS => 0.CADR; MOV R2 CCOUNT ; COUNT => 0.BYTECOUNT; NEWLINE: ; NEWLINE: MOVC LINE<1 R0 ; LINE<1 => ADR; GETLINE: ; GETLINE: JMP S4 NEWBYTE ; NEWBYTE; MOV LINEEND R4 ; 0.LINEEND => LE; IGE R0 R4 ; IF ADR >= LE THEN TRP 0 ; TRAP; JMP S5 SETBYTE ; SETBYTE; ADDC 1 R0 ; INCR (ADR); INEP R3 FF ; IF BYTE <> FF INE R3 NL ; AND BYTE <> NL THEN JMP GETLINE ; GOTO GETLINE; MOV R0 R4 ; ADR => COUNT; ADDC BASE<1-(LINE<1) R4 ; COUNT - LINE<1 => COUNT; MOVC 88 R6 ; 88 => LIM; ILTP R4 R6 ; IF COUNT < LIM THEN ADDC -1 R4 ; DECR(COUNT) ELSE JMP TRANSF ; BEGIN MOVC LINE<1 R0 ; LINE<1 => ADR; ADDC 88 R0 ; ADR+88 => ADR; JMP S6 FETCHBYTE ; FETCHBYTE; MOVC <:;:> R2 ; <:;:> => SEMK; ;### ; INEP R3 R2 ; IF BYTE <> SEMK THEN ADDC -1 R4 ; DECR(COUNT) ELSE JMP TRANSF ; BEGIN MOVC 88 R4 ; 88 => COUNT; MOVC <: :> R5 ; <: :> => SP; BACKSTEP: ; BACKSTEP: ADDC -1 R4 ; COUNT-1 =>COUNT; ADDC -1 R0 ; ADR-1 => ADR; JMP S6 FETCHBYTE ; FETCHBYTE; IEQ R3 R5 ; IF BYTE = SP THEN JMP BACKSTEP ; GOTO BACKSTEP; ADDC 1 R4 ; ADR+1 => ADR; ADDC 1 R0 ; COUNT+1 => COUNT; MOVC NL R3 ; NL => BYTE; JMP S5 SETBYTE ; SETBYTE; MOVC LINE<1 R0 ; LINE<1 => ADR; MOVC 0 R3 ; 0 => BYTE; MOVC <:#:> R5 ; <:#:> => PROMT; FORWSTEP: ; FORWSTEP: IEQ R3 NL ; IF BYTE <> NL THEN JMP TRANSF ; BEGIN JMP S6 FETCHBYTE ; FETCHBYTE; ADDC 1 R0 ; INCR(ADR); FORWSTEP1: ; FORWSTEP1: INE R3 R2 ; IF BYTE <> SEMK THEN JMP FORWSTEP ; GOTO FORWSTEP; JMP S6 FETCHBYTE ; FETCHBYTE; ADDC 1 R0 ; INCR(ADDR); INE R3 R5 ; IF BYTE <> PROMT THEN JMP FORWSTEP1 ; GOTO FORWSTEP1; JMP S6 FETCHBYTE ; FETCHBYTE; ADDC 1 R0 ; INCR(ADR); INE R3 R5 ; IF BYTE <> PROMT THEN JMP FORWSTEP1 ; GOTO FORWSTEP1; JMP S6 FETCHBYTE ; FETCHBYTE; ADDC 1 R0 ; INCR(ADR); INE R3 R5 ; IF BYTE <> PROMT THEN JMP FORWSTEP1 ; GOTO FORWSTEP1; MOVC 4 R2 ; 4 => COUNT; MOVC <: :> R3 ; <: :> => BYTE; SETSPACE: ; FOR I:=1 UNTIL COUNT DO ; BEGIN ADDC -1 R0 ; DECR(ADR); JMP S5 SETBYTE ; SETBYTE; SOB R2 SETSPACE ; END; MOVC LINE<1 R0 ; LINE<1 => ADR; ADD R4 R0 ; ADR+COUNT => ADR; MOVC FF R3 ; FF => BYTE; JMP S5 SETBYTE ; SETBYTE; ; END; ; END; TRANSF: ; END; ;### ; MOVC LINE<1 R0 ; LINE<1 => AD; MOV LINE R1 ; 0.LINE => L0; MOV LINE1 R2 ; 1.LINE => L1; MOV RAU R5 ; 0.RAU => RA; MOV R00 R6 ; 0.R00 => R0; IEQ R1 R5 ; IF L0 = RA INE R2 R6 ; AND L1 = R0 THEN JMP TRANSF1 ; BEGIN ADDC 4 R0 ; AD+4 => AD; ADDC -4 R4 ; COUNT-4 => COUNT; TRANSF1: ; END; MOVC BMOUTPUT X7 ; BMOUTPUT => MOPERATION.ADR; MOV R0 MADDRS.X7 ; AD => MADDRESS.ADR; ADDC 1 R4 ; COUNT+1 => COUNT; MOV R4 MCOUNT.X7 ; COUNT => MCOUNT.ADR; MOVC DNAME R0 ; RE.DRIVERNAME; MOV R7 R1 ; RE.MESS; MON SENDMESSAGE ; SENDMESSAGE; MON WAITANSWER ; WAITANSWER; MOV X7 R0 ; RES.ANSWER=> MOV R0 ANSWER ; 0.ANSWER; JMP NEWLINE ; GOTO NEWLINE; ; END XREFS=4 XBUFS=4 XPRPC=ASSOUT NOLIST $S8MXD2 LIST END ;### «eof»