|
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: 8376 (0x20b8) Types: TextFile Names: »BUFFER.ASM«
└─⟦31b8a9b6a⟧ Bits:30005199 8" Zilog MCZ/1 Floppy CR80FD_0025 ( TC 500 SEC. PROTOCOL BB V2 830407 NCJ ) └─⟦this⟧ »BUFFER.ASM« └─⟦cf416a62a⟧ Bits:30005201 8" Zilog MCZ/1 Floppy CR80FD_0027 ( TC 500 SEC. PROTOCOL BACK UP! (V2) BB SEC 821119 NCJ ) └─⟦this⟧ »BUFFER.ASM«
;***************************************************************************** ;* ;* BUFFER_GENERATOR MODULE ;* ;***************************************************************************** *INCLUDE PLZ.MACROS BUFFER MODULE CONSTANT EOT := 4 POL := 70H ENQ := 05H LNDIPT := 51H SOH := 01 STX := 02 ETX := 03 OK := 0 EOT_INDICATION := 4000H DATA_OFFSET := 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 ENTRY 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 ;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 ENTRY 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 INC HL ; LD (HL),0 ; DATA[I] := 0 DEC A ; I += 1 IF Z THEN EXIT FI ; IF I = 13 THEN EXIT FI OD ; OD 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 ;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 ENTRY 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 ;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 ENTRY 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 ;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 ENTRY 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 ;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 ENTRY 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 END BUFFER ;ECHO \f