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: 2311 (0x907) Types: TextFile Names: »BUFFER.S«
└─⟦f2a3f19b6⟧ Bits:30005203 8" Zilog MCZ/1 Floppy CR80FD_0030 ( BB LTU TEST BACK UP! BB VD1 821220 ) └─ ⟦this⟧ »BUFFER.S«
*INCLUDE CONST.S GLOBAL PUTBUF,GETMES,PUTMES,OVLDET EXTERNAL SUBENQ,SYSRAM,RECI,MESADD,SUBSEN ;***************************************************************************** ;* PROCEDURE NAME : PUTBUF ;* ;* DESCRIPTION : SENDS A BUFFER TO EMPTY BUFFER QUEUE ;* ;* ENTRY : DE = ADDRESS OF BUFFER ;* IY = ADDRESS OF CHANNEL TABLE ;* ;* EXIT : NONE ;* ;* DESTROY : A,F,B,C,H,L ;**************************************************************************** PUTBUF LD L,(IY+08H) LD H,(IY+09H) CALL SUBENQ RET ;**************************************************************************** ;* PROCEDURE NAME : GETMES ;* ;* DESCRIPTION : THE CALLING PROCESS IS DELAYED UNTIL A MESSAGE IS ;* SENT TO THE SPECIFIED SEMAPHORE ;* ;* ENTRY : IY = ADDRESS OF CHANNEL TABLE ;* ;* EXIT : DE = ADDRESS OF MESSAGE BUFFER ;* ;* DESTROY : A,F,B,C,D,E,H,L,IX ;**************************************************************************** GETMES PUSH IY LD L,(IY+0CH) LD H,(IY+0DH) LD DE,SYSRAM+180H ADD HL,DE LD (SYSRAM+0E2H),HL CALL RECI CALL MESADD LD HL,BUFFHEAD+ERROFF ADD HL,DE LD (HL),0 ;CLEAR ERROR CODE INC HL LD (HL),0 POP IY RET ;**************************************************************************** ;* PROCEDURE NAME : PUTMES ;* ;* DESCRIPTION : THE MESSAGE IS SENT TO THE SPECIFIED SEMAPHORE ;* ;* ENTRY : DE = ADDRESS OF MESSAGE BUFFER ;* IY = ADDRESS OF CHANNEL TABLE ;* ;* EXIT : NONE ;* ;* DESTROY : B,C,D,E,H,L ;**************************************************************************** PUTMES PUSH AF LD HL,STWOFF ADD HL,DE ;GET ADDRESS OF STATUS WORD LD (HL),00H INC HL LD (HL),40H ;UPDATE STATUS WORD LD L,(IY+0AH) LD H,(IY+0BH) LD BC,SYSRAM+180H ADD HL,BC CALL SUBSEN POP AF RET ;**************************************************************************** ;* PROCEDURE NAME : OVLDET ;* ;* DESCRIPTION : IF MORE THAN 4 BUFFERS IN CR80 QUEUE ;* THEN STATUS := OVERLOAD ;* ELSE STATUS := NO OVERLOAD ;* ;* ENTRY : IY = ADDRESS OF CHANNEL TABLE ;* ;* EXIT : S = P IF OVERLOAD ;* S = M IF NO OVERLOAD ;* ;* DESTROY : A,F,B,C,H,L ;**************************************************************************** OVLDET LD L,(IY+0AH) LD H,(IY+0BH) LD BC,SYSRAM+180H ADD HL,BC INC HL LD A,(HL) CP 4 RET ;ECHO \f