|
|
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: 4578 (0x11e2)
Types: TextFile
Names: »GENCTRLMSG«
└─⟦21011a92c⟧ Bits:30005095 8" CR80 Floppy CR80FD_0052 ( HMDIR 2 VOL: BACKUP MD: ISH.D From: HMDIR*ISH.D )
└─⟦777b1406f⟧
└─⟦this⟧ »ISH.D!GENCTRLMSG«
;----------------------------------------------------------------------
; PROCEDURE "GENERATE_CONTROL_MESSAGE"(GENCTRLMSG).
;
; NARRATIVE:
; IF A PDB FILE IS AVAILABLE THEN A CONTROL MESSAGE IS GENERATED AS
; SPECIFIED BY CALLER (DATA REF.,(CAT,TYPE)),AND RETURN IS MADE TO
; DONE (LINK+1).IF NO PDB FILE IS AVAILABLE,THEN RETURN IS MADE TO
; NONE (LINK+0).
;
; REGISTER USE: ENTRY EXIT
; R0 CAT+TYP MTCB INDEX
; R1 DATASIZE(WORDS) DESTROYED
; R2-R3 - DESTROYED
; R4 REF.DATA DESTROYED
; R5 LINK DESTROYED
; R6-R7 - DESTROYED
;
; CALLS TO: MTCB,CREATEMTCB
; MTCB,RESERVEMTCB
; MTCB,RELEASEMTCB
; MTCB,CREFILMTCB
; MTCB,RELFILMTCB
; IO,MODIFYBYTES
;
; WORK: CMMFDCB
;
; RETURNS: LINK+0:NO PDB'S
; LINK+1:DONE
; UREXXX:ERROR
;----------------------------------------------------------------------
GENCTRLMSG: ;BEGIN GENCTRLMSG
MOV R5 RLH100 ; SAVE LINK
MOV R4 R5 ; PUSH REF.TO DATA
MOD R1 ;
MOD R1 ;
MOVC 2*CHEADL R2 ; R2=MSGLENGTH
MOVC CMCHEAD R4 ; R4=REF.TO MSG COMPILE AREA
MOV R0 BHCATTYP.X4 ; WRITE CATTYP
MOV OWNNID R0 ;
MOV R0 BHORG.X4 ; ORIGINATOR
MOV R2 BHLGTH.X4 ; AND MSG LENGTH
MOVC 1<8+CAPREC R0 ; AND MAINTYPE,PREC
MOV R0 BHAPREC.X4 ;
MOVC CMMFDCB R4 ;
MOV R2 XFADBC+MFDFAD.X4 ; INIT. FILE ADDRESS
CLR 1+XFADBC+MFDFAD.X4 ;
ADDC MFDBLE R4 ; INIT. BUF.LIST ELEMT
MOV R2 XBLEBS.X4 ;
MOVC XBTYLL X4 ;
CLR XBLELK.X4 ;
MOVC CMCHEAD R2 ;
MOV R2 XBLEBA.X4 ;
JOZ R1 H120 ; BEGIN GOPY DATA
MOVC CMCDAT R2 ; R2=REF.TO DESTINATION
H110: ; R5=REF.TO SOURCE
MOV X5 X2 ;
INCD R5 R2 ;
SOB R1 H110 ; END COPY
H120: ;
MOVC MOPCWAIT R0 ;
MOVC MMTYPREAL R1 ;
MON MTCB,CREATEMTCB ; "CREATE_MTCB"(TYPE=REAL)
JMPI & S4 URE002 ;E X0:ERROR,REPORT ERROR
MOV R0 MFDMBX+CMMFDCB ; X1:DONE,STORE MTCBX
MOVC MFDMBX+CMMFDCB R0 ; R0=REF.MTCBINDEX
MOVC MFDFAD+CMMFDCB R1 ; R1=FILE_ADDRESS
MOVC MFTYPPDB R2 ; R2=TYPE PDB_FILE
MON MTCB,CREFILMTCB ; "CREATE_FILE"
JMP & H140 ;E X0:ERROR,GOTO CHECKCAUSE:
; X1:R1=FILEADDR,R4=FD
MOVC MFDBLE+CMMFDCB R2 ; R2=REF.BUF.LIST ELEMT
MON IO,MODIFYBYTES ; "MODIFYBYTES"
JMPI & S4 URE003 ;E X0:ERROR,REPORT ERROR
; X1:R0=REF.MTCBX,R4=FD
MOV MFDMBX+CMMFDCB R0 ; R0:=MTCB INDEX
MON MTCB,RESERVEMTCB ; "RESERVE_MTCB"(R0=MTCBX)
JMPI & S4 URE002 ;E X0:ERROR,REPORT ERROR
MOVC MFDMBX+CMMFDCB R0 ; X1:DONE,R0:=REF.MTCBX
MON MTCB,RELFILMTCB ; "RELEASE_FILE"
JMPI & S4 URE002 ;E X0:ERROR,REPORT ERROR
; X1:R0=REF.MTCBX
MODN R7 ;
INC RLH100.X7 ; PREPARE RETURN LINK+1
JMP H180 ; GOTO RELEASE MTCB:
H140: ; CHECKCAUSE:
INE R7 ECNOPDB ; IF CAUSE<>NOPDB THEN
JMPI & S4 URE002 ;E REPORT ERROR
H180: ; RELEASEMTCB:
MOV X0 R0 ; GET MTCB INDEX
MON MTCB,RELEASEMTCB ; "RELEASE_MTCB"
JMPI & S4 URE002 ;E X0:ERROR,REPORT ERROR
; X1:R0=MTCB INDEX
JMPI RLH100 ; RETURN LINK+0/1
;END GENCTRLMSG
;---------------------------------------------------------------------- ▶1a◀