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

⟦a0b6be2bb⟧ TextFile

    Length: 8901 (0x22c5)
    Types: TextFile
    Names: »BUFFER.S«

Derivation

└─⟦31b8a9b6a⟧ Bits:30005199 8" Zilog MCZ/1 Floppy CR80FD_0025 ( TC 500 SEC. PROTOCOL BB V2 830407 NCJ )
    └─ ⟦this⟧ »BUFFER.S« 
└─⟦cf416a62a⟧ Bits:30005201 8" Zilog MCZ/1 Floppy CR80FD_0027 ( TC 500 SEC. PROTOCOL BACK UP! (V2) BB SEC 821119 NCJ )
    └─ ⟦this⟧ »BUFFER.S« 

TextFile

;;*****************************************************************************
;;*
;;*		BUFFER_GENERATOR  MODULE
;;*
;;*****************************************************************************
*INCLUDE PLZ.MACROS
;BUFFER MODULE
;CONSTANT
;   EOT          := 4
EOT	EQU	4
;   POL		:= 70H
POL	EQU	70H
;   ENQ		:= 05H
ENQ	EQU	05H
;   LNDIPT	:= 51H
LNDIPT	EQU	51H
;   SOH          := 01
SOH	EQU	01
;   STX          := 02
STX	EQU	02
;   ETX          := 03
ETX	EQU	03
;   OK		:= 0
OK	EQU	0
;   EOT_INDICATION := 4000H
EOT_INDICATION	EQU	4000H
;   DATA_OFFSET	:= 0
DATA_OFFSET	EQU	0
; 
;GLOBAL
;;ECHO \f


;;**************************************************************************
;;* PROCEDURE	: LHROUT
;;*
;;* FUNCTION	: REFORMATS BUFFER FROM INPUT_FROM_CR80 TO OUTPUT_TO_LINE
;;*		  FORMAT
;;*
;;* INPUTS	: BUF_PTR : POINTER TO DATA BUFFER
;;*
;;* OUTPUTS	: NONE
;;*
;;* FORMATS:             LHR:          LINEOUT:
;;*                  ------------    ------------
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  - OPCODE   -    -          -
;;*                  - LINE_NO  -    -          -
;;*                  -   AD2    -    -          -
;;*                  -   AD1    -    -          -
;;*                  - NOT USED -    -   SOH    -
;;*                  - NOT USED -    -   AD1    -
;;*                  - NOT USED -    -   AD2    -
;;*                  - NOT USED -    -   STX    -
;;*                  -    D1    -    -    D1    -
;;*                  -    D2    -    -    D2    -
;;*
;;**************************************************************************
;   LHROUT PROCEDURE
	GLOBAL LHROUT
;   ENTRY
LHROUT:
	PLZVAR
	PLZIN	BUF1_PTR
	ENT	0
	GETWORD H L, BUF1_PTR
	PUSH	HL
	LD	BC,11H
	ADD	HL,BC
	LD	B,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	(HL),SOH	; DATA[09] := SOH
	INC	HL
	LD	(HL),C		; DATA[10] := AD1
	INC	HL
	LD	(HL),B		; DATA[11] := AD2
	INC	HL
	LD	(HL),STX	; DATA[12] := STX
	POP	HL
	PUSH	HL
	PUSH	HL
	INC	HL
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	POP	HL
	ADD	HL,DE
	PUSH	HL
	POP	IY
	LD	C,ETX
	LD	(IY+0FH),C	; INSERT ETX
	DEC	DE
	DEC	DE
	DEC	DE		; BYTECOUNT
	POP	HL		; POINTER TO BUFFER
	LD	BC,OK		; STATUS := OK
	LD	A,9		; DATA_OFFSET := 9
	CALL	BUF_HD		; UPDATE BUFFER_HEAD
	RTN	1
;   END LHROUT
	RET
; 
;;ECHO \f


;;**************************************************************************
;;* PROCEDURE	: OUTLHR
;;*
;;* FUNCTION	: REFORMATS BUFFER FROM OUTPUT_TO_LINE TO OUTPUT_TO_CR80
;;*		  FORMAT
;;*
;;* INPUTS	: BUF_PTR : POINTER TO DATA BUFFER
;;*		  LINE_NO : NO. OF LINE
;;*
;;* OUTPUTS	: NONE
;;*
;;* FORMATS:           LINEOUT:          LHR:
;;*                  ------------    ------------
;;*                  -          -    -          -
;;*                  -          -    -  OPCODE  -
;;*                  -          -    - LINE_NO  -
;;*                  -          -    -   AD2    -
;;*                  -          -    -   AD1    -
;;*                  -          -    -    0     -
;;*                  -          -    -    0     -
;;*                  -          -    -    0     -
;;*                  -          -    -    0     -
;;*                  -   SOH    -    -    0     -
;;*                  -   AD1    -    -    0     -
;;*                  -   AD2    -    -    0     -
;;*                  -   STX    -    -    0     -
;;*                  -    D1    -    -    D1    -
;;*                  -    D2    -    -    D2    -
;;*
;;**************************************************************************
;   OUTLHR PROCEDURE
	GLOBAL OUTLHR
;   ENTRY
OUTLHR:
	PLZVAR
	PLZIN	BUF2_PTR,LINE_NO
	ENT	0
	GETWORD H L, BUF2_PTR
	PUSH	HL
	LD	DE,0BH
	ADD	HL,DE
	LD	(HL),LNDIPT	; DATA[01] := OPCODE
	INC	HL
	GETBYTE A,LINE_NO
	LD	(HL),A		; DATA[02] := LINE_NO
	INC	HL
	EX	DE,HL
	POP	HL
	PUSH	HL
	LD	BC,14H
	ADD	HL,BC
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(HL),B		; DATA[03] := AD2
	INC	HL
	LD	(HL),C		; DATA[04] := AD1
	LD	A,8		; I := 5
;	DO			; DO
DO00:
	   INC	HL		;
	   LD	(HL),0		;    DATA[I] := 0
	   DEC	A		;    I += 1
;	   IF Z THEN EXIT FI	;    IF I = 13 THEN EXIT FI
	JP NZ,FI01
	JP OD00
FI01:
;	OD			; OD
	JP DO00
OD00:
	POP	HL
	PUSH	HL
	INC	HL
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	EX	DE,HL
	LD	DE,7
	ADD	HL,DE
	EX	DE,HL		; BYTECOUNT
	POP	HL		; POINTER TO BUFFER
	LD	BC,EOT_INDICATION
	LD	A,1		; DATA_OFFSET := 1
	CALL	BUF_HD		; UPDATE BUFFER_HEAD
	RTN	2
;   END OUTLHR
	RET
; 
;;ECHO \f


;;**************************************************************************
;;* PROCEDURE	: INOUT
;;*
;;* FUNCTION	: REFORMATS BUFFER FROM INPUT_FROM_LINE TO OUTPUT_TO_LINE
;;*		  FORMAT
;;*
;;* INPUTS	: BUF_PTR : POINTER TO DATA BUFFER
;;*
;;* OUTPUTS	: NONE
;;*
;;* FORMATS:           LINEIN:         LINEOUT:
;;*                  ------------    ------------
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  -          -    -          -
;;*                  -   EOT    -    -          -
;;*                  -   AD1    -    -          -
;;*                  -   AD2    -    -          -
;;*                  -   FSL    -    -          -
;;*                  -   SOH    -    -          -
;;*                  -   AD1    -    -   SOH    -
;;*                  -   AD2    -    -   AD1    -
;;*                  -   32H    -    -   AD2    -
;;*                  -   STX    -    -   STX    -
;;*                  -    D1    -    -    D1    -
;;*                  -    D2    -    -    D2    -
;;*
;;**************************************************************************
;   INOUT PROCEDURE
	GLOBAL INOUT
;   ENTRY
INOUT:
	PLZVAR
	PLZIN	BUF3_PTR
	ENT	0
	GETWORD H L, BUF3_PTR
	PUSH	HL
	LD	DE,13H
	ADD	HL,DE
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	INC	HL
	LD	(HL),B		; DATA[11] := AD2
	DEC	HL
	LD	(HL),C		; DATA[10] := AD1
	DEC	HL
	LD	(HL),SOH	; DATA[09] := SOH
	POP	HL
	PUSH	HL
	INC	HL
	INC	HL
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	DEC	DE
	DEC	DE
	DEC	DE
	DEC	DE
	DEC	DE		; BYTECOUNT
	POP	HL		; POINTER TO BUFFER
	LD	BC,OK		; STATUS := OK
	LD	A,9		; DATA_OFFSET := 9
	CALL	BUF_HD		; UPDATE BUFFER_HEAD
	RTN	1
;   END INOUT
	RET
; 
; 
;;ECHO \f


;;**************************************************************************
;;* PROCEDURE	: DLCBUF
;;*
;;* FUNCTION	: PUTS THE SPECIFIED DATA LINK CHARACTER IN BUFFER
;;*
;;* INPUTS	: BUF_PTR : POINTER TO DATA BUFFER
;;*		  DLC	  : DATA LINK CHARACTER (EOT/ACK/NACK)
;;*
;;* OUTPUTS	: NONE
;;**************************************************************************
;   DLCBUF PROCEDURE
	GLOBAL DLCBUF
;   ENTRY
DLCBUF:
	PLZVAR
	PLZIN	BUF4_PTR,DLC
	ENT	0
	GETWORD	H L,BUF4_PTR
	PUSH	HL
	LD	DE,0AH
	ADD	HL,DE
	GETBYTE	A ,DLC
	LD	(HL),A			; DATA[0] := DLC
	POP	HL
	LD	DE,01			; BYTE_COUNT := 01
	LD	BC,OK			; STATUS := OK
	LD	A,DATA_OFFSET		; DATA_OFFSET := 0
	CALL	BUF_HD			; UPDATE BUFFER_HEAD
	RTN	2
;   END DLCBUF
	RET
; 
;;ECHO \f


;;******************************************************************************
;;* PROCEDURE	: POLENQ
;;*
;;* FUNCTION	: FORMATS A POLENQ BUFFER
;;*
;;* INPUTS	: BUF_PTR : POINTER TO BUFFER
;;*		  CAD1	  : FIRST BYTE OF CLUSTER ADDRESS
;;*		  CAD2	  : SECOND BYTE OF CLUSTER ADDRESS
;;*
;;* OUTPUTS	: NONE
;;****************************************************************************
;   POLENQ PROCEDURE
	GLOBAL POLENQ
;   ENTRY
POLENQ:
      PLZVAR
      PLZIN BUF5_PTR,CAD1,CAD2
      ENT 0
      GETWORD H L,BUF5_PTR
      PUSH HL
      LD DE,10
      ADD HL,DE
      GETBYTE A,CAD1
      LD (HL),A			; DATA[0] := CAD1
      INC HL
      GETBYTE A,CAD2
      LD (HL),A			; DATA[1] := CAD2
      INC HL
      LD (HL),POL		; DATA[2] := POL
      INC HL
      LD (HL),ENQ		; DATA[3] := ENQ
      POP HL
      LD DE,4			; BYTE_COUNT := 4
      LD BC,OK			; STATUS := OK
      LD A,DATA_OFFSET		; DATA_OFFSET := 0
      CALL BUF_HD		; UPDATE BUFFER_HEAD
      RTN 3
;   END POLENQ
	RET
; 
;;ECHO \f


;;*************************************************************************
;;* PROCEDURE NAME: BUF_HD
;;* 
;;* FUNCTION:       INSERTS BYTE_COUNT, STATUS, AND DATA_START_ADDRESS IN
;;* 		   BUFFER_HEAD
;;* 
;;* INPUT:          HL: BUFFER_POINTER
;;* 		   DE: BYTE_COUNT
;;* 		   BC: STATUS_WORD
;;* 		   A : DATA_OFFSET
;;* 
;;* OUTPUT:         NONE
;;* 
;;* DESTROYES:      B,C,D,E,H,L
;;*************************************************************************
;GLOBAL
;   BUF_HD PROCEDURE
	GLOBAL BUF_HD
;   ENTRY
BUF_HD:
	INC	HL
	INC	HL
	LD	(HL),E			; UPDATE BYTE_COUNT
	INC 	HL
	LD	(HL),D
	INC	HL			; UPDATE STATUS
	LD	(HL),C
	INC	HL
	LD	(HL),B
	INC	HL			; UPDATE DATA STA_ADR
	INC	HL
	INC	HL
	PUSH	HL
	INC	HL
	INC	HL
	LD	B,0
	LD	C,A
	ADD	HL,BC
	PUSH	HL
	POP	DE
	POP	HL
	LD	(HL),E
	INC	HL
	LD	(HL),D
;   END BUF_HD
	RET
; 
;END BUFFER
	END
«eof»