|
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: 7692 (0x1e0c) Types: TextFile Names: »LINE.ACCESS.S«
└─⟦31b8a9b6a⟧ Bits:30005199 8" Zilog MCZ/1 Floppy CR80FD_0025 ( TC 500 SEC. PROTOCOL BB V2 830407 NCJ ) └─ ⟦this⟧ »LINE.ACCESS.S« └─⟦cf416a62a⟧ Bits:30005201 8" Zilog MCZ/1 Floppy CR80FD_0027 ( TC 500 SEC. PROTOCOL BACK UP! (V2) BB SEC 821119 NCJ ) └─ ⟦this⟧ »LINE.ACCESS.S«
;;****************************************************************************** ;;* ;;* LINE_ACCESS MODULE ;;* ;;****************************************************************************** ;LINE_ACCESS MODULE *INCLUDE PLZ.MACROS ;EXTERNAL ; LAT1CH,LAT2CH,LAT3CH,LAT4CH ;EXTERNAL EXTERNAL LAT4CH,LAT3CH,LAT2CH,LAT1CH ; SIO1CH,SIO2CH,SIO3CH,SIO4CH ;EXTERNAL EXTERNAL SIO4CH,SIO3CH,SIO2CH,SIO1CH ; SRELEASE ; I8253 ;; ;CONSTANT EXTERNAL I8253,SRELEASE ; LASA := 0H ;LINEUP LASA EQU 0H ; LASB := 1H ;LINEDO LASB EQU 1H ; LASC := 2H ;TRANSMIT LASC EQU 2H ; LASE := 5H ;MODEM1_ERROR LASE EQU 5H ; LASF := 4H ;MODEM2_ERROR LASF EQU 4H ; LATKON :=0FFH ;TIMER CONSTANT LATKON EQU 0FFH ; PIO2A := 20H ;ADDRESS ON PIO PIO2A EQU 20H ; PIO2B := 21H PIO2B EQU 21H ; PIO2C := 22H PIO2C EQU 22H ; SIOCHA := 53H ;ADDRESS ON SIO SIOCHA EQU 53H ; SIOCHB := 52H SIOCHB EQU 52H ; SIOCHC := 43H SIOCHC EQU 43H ; SIOCHD := 42H SIOCHD EQU 42H ; TIMER := 0H ;CONFIGURATION TIMER EQU 0H ; MIRROR := 2H MIRROR EQU 2H ; CHA := 4H CHA EQU 4H ; DIAL_UP_MODE := 0FFH DIAL_UP_MODE EQU 0FFH ; DELAY := 120 ; 120 UNITS OF 12,5 MS =1,5 SEK DELAY EQU 120 ; DIALUP := 11H DIALUP EQU 11H ; DIRECT := 22H DIRECT EQU 22H ;; ;;ECHO \f ;INTERNAL ; INIT_TIMER PROCEDURE ; ENTRY INIT_TIMER: ; LD L,(IY+TIMER) LD H,(IY+TIMER+1) DI LD (HL),C INC HL LD (HL),B EI ; END INIT_TIMER RET ;; ; TEST_TIMER PROCEDURE ; ENTRY TEST_TIMER: LD L,(IY+TIMER) LD H,(IY+TIMER+1) DI LD A,(HL) INC HL OR (HL) EI ; END TEST_TIMER RET ; ; WAIT PROCEDURE ; ENTRY WAIT: PUSH IY PUSH IX CALL SRELEASE POP IX POP IY ; END WAIT RET ;; ; MIRPORT PROCEDURE ; ENTRY MIRPORT: LD L,(IY+MIRROR) LD H,(IY+MIRROR+1) LD DE,5 ADD HL,DE ; END MIRPORT RET ; ; DUMMY PROCEDURE ; ENTRY DUMMY: CH1: DEFW LAT1CH DEFW SIO1CH DEFW SIOCHA ;; CH2: DEFW LAT2CH DEFW SIO2CH DEFW SIOCHB ;; CH3: DEFW LAT3CH DEFW SIO3CH DEFW SIOCHC ;; CH4: DEFW LAT4CH DEFW SIO4CH DEFW SIOCHD ; ;;-------------------------------- TABMEM: DEFW CH1 DEFB 40H DEFB 80H ; DEFW CH2 DEFB 10H DEFB 20H ; DEFW CH3 DEFB 04H DEFB 08H ; DEFW CH4 DEFB 01H DEFB 02H ; ;;---------------------------- SHATAB: DEFW 400FH DEFW 401FH DEFW 402FH DEFW 403FH ; ;;---------------------------- CHATAB: DEFB 02 DEFB 01 DEFB 02 DEFB 00 DEFB 01 DEFB 01 DEFB 01 DEFB 00 ; ; END DUMMY RET ; ;GLOBAL ;;ECHO \f ;;***************************************************************************** ;;* PROCEDURE : LINEUP ;;* ;;* FUNCTION : SETS DATA TERMINAL READY (DTR) AND WAITS FOR DATA SET READY ;;* (DSR) TO BE SET ;;* ;;* INPUTS : CH_NO : NO.OF CHANNEL ;;* ;;* OUTPUTS : STATUS : STATUS OF OPERATION ;;* STATUS = 0 : DSR IS SET (LINE IS UP) ;;* STATUS = 1 : DSR IS RESET (LINE IS DOWN) ;;****************************************************************************** ; LINEUP PROCEDURE GLOBAL LINEUP ; ENTRY LINEUP: PLZVAR PLZIN CHAA_NO PLZOUT STA1 ENT 0 GETBYTE C, CHAA_NO CALL SELECT LD BC,LATKON CALL INIT_TIMER ; LIN0: CALL TEST_TIMER ;DO JR Z,LIN3 ; IF NO TIMEOUT THEN LD H,0 ; GETBYTE L,CHAA_NO ; GET CH.NO. ADD HL,HL ; ADD HL,HL ; 4 * CH.NO. LD DE,TABMEM-2 ; ADD HL,DE ; ADDRESS OF CH.MASK LD C,PIO2B ; IN A,(C) ; GET STATUS OF DSR AND (HL) ; LD C,A ; DI ; CALL MIRPORT ; LD E,C ; SAVE STATUS OF DSR LD A,(HL) ; BIT 7,A ; JR NZ,LIN1 ; IF DTR MIRROR IS NOT SET THEN SET 7,A ; SET DTR MIRROR LD (HL),A ; LD C,(IY+CHA) ; LD B,5 ; OUT (C),B ; OUT (C),A ; SET DTR EI ; LD BC,LATKON ; CALL INIT_TIMER ; INITIATE TIMER CALL WAIT ; SCHEDULE JR LIN4 ; ELSE LIN1: EI ; LD A,E ; GET STATUS OF DSR AND A ; JR NZ,LIN2 ; IF DSR IS SET THEN LD B,LASA ; STATUS := LINEUP PUTBYTE STA1,B ; JR LIN5 ; EXIT ; ; ELSE LIN2: CALL WAIT ; SCHEDULE JR LIN4 ; FI ; ; FI ; ; ELSE LIN3: ; ; LD B,LASB ; STATUS := LINEDO PUTBYTE STA1,B ; JR LIN5 ; EXIT ; ; FI LIN4: JR LIN0 ;OD ; LIN5: RTN 1 ; ; END LINEUP RET ;;ECHO \f ;;**************************************************************************** ;;* PROCEDURE : TRANSMIT ;;* ;;* FUNCTION : DUMMY ROUTINE ;;***************************************************************************** ; TRANSMIT PROCEDURE GLOBAL TRANSMIT ; ENTRY TRANSMIT: PLZVAR PLZIN CHAB_NO ENT 0 RTN 1 ; END TRANSMIT RET ; ;;ECHO \f ;;****************************************************************************** ;;* PROCEDURE : LINEDO ;;* ;;* FUNCTION : RESETS REQUEST TO SEND (RTS) AND DATA TERMINAL READY (DTR) ;;* ;;* INPUTS : CH_NO : NO.OF CHANNEL ;;* ;;* OUTPUTS : NONE ;;****************************************************************************** ; LINEDO PROCEDURE GLOBAL LINEDO ; ENTRY LINEDO: PLZVAR PLZIN CHAD_NO ENT 0 GETBYTE C, CHAD_NO CALL SELECT LD C,(IY+CHA) CALL MIRPORT DI LD A,(HL) RES 1,A ;RESET RTS MIRROR RES 7,A ;RESET DTR MIRROR LD (HL),A LD B,05H OUT (C),B OUT (C),A ;RESET RTS AND DTR EI RTN 1 ; END LINEDO RET ;;ECHO \f ;;****************************************************************************** ;;* PROCEDURE : CHANGE ;;* ;;* FUNCTION : MODEM IS SWITCHED TO THE SPECIFIED BAUD RATE ;;* ;;* INPUTS : CH_NO : NO.OF CHANNEL ;;* RANGE : BAUD RATE SPECIFICATION ;;* ;;* OUTPUTS : NONE ;;*************************************************************************** ; CHANGE PROCEDURE GLOBAL CHANGE ; ENTRY CHANGE: PLZVAR PLZIN CHAF_NO RANGE ENT 0 GETBYTE C,CHAF_NO CALL SHASEL CP DIRECT JR Z,CHADIR ;IF NOT DIRECT CONNECTION THEN LD H,0 ; LD L,C ; GET CH.NO. ADD HL,HL ; ADD HL,HL ; 4 * CH.NO. LD DE,TABMEM-2 ; ADD HL,DE ; ADDRESS OF CH.MASK LD A,(HL) ; GET MASK GETBYTE D,RANGE ; LD C,PIO2A ; IN B,(C) ; BIT 0,D ; JR Z,CHAN0 ; OR B ; JR CHAN1 ; CHAN0: CPL ; AND B ; CHAN1: OUT (C),A ; JR CHAEND ;ELSE CHADIR: LD H,0 ; LD L,C ; GET CH.NO. ADD HL,HL ; 2 * CH.NO. LD DE,CHATAB-2 ; ADD HL,DE ; LD E,(HL) ; INC HL ; LD C,(HL) ; LD D,0 ; LD B,0 ; PUSH DE ; GETBYTE E,RANGE ; GET BAUD RATE CODE POP IX ; CALL I8253 ; MAKE BAUD RATE CHANGE ; ;FI CHAEND: RTN 2 ; ; END CHANGE RET ;;ECHO \f ; SELECT PROCEDURE GLOBAL SELECT ; ENTRY SELECT: LD H,0 LD L,C ;GET CHNO. ADD HL,HL ADD HL,HL ;4 * CH.NO. LD DE,TABMEM-4 ADD HL,DE LD E,(HL) INC HL LD D,(HL) ;GET ADDRESS OF TABLE PUSH DE POP IY RET ; END SELECT RET ;; ; SHASEL PROCEDURE GLOBAL SHASEL ; ENTRY SHASEL: LD H,0 LD L,C ADD HL,HL LD DE,SHATAB-2 ADD HL,DE LD E,(HL) INC HL LD D,(HL) LD A,(DE) RET ; END SHASEL RET ;;ECHO \f ;;***************************************************************************** ;;* PROCEDURE : RECEIVE ;;* ;;* FUNCTION : REQUEST TO SEND (RTS) IS SET ;;* ;;* INPUTS : CH_NO : NO.OF CHANNEL ;;* ;;* OUTPUTS : NONE ;;***************************************************************************** ; RECEIVE PROCEDURE GLOBAL RECEIVE ; ENTRY RECEIVE: PLZVAR PLZIN CHAC_NO ENT 0 GETBYTE C, CHAC_NO CALL SELECT ; DI ; CALL MIRPORT ; LD A,(HL) ; SET 1,A ; SET RTS MIRROR LD (HL),A ; LD C,(IY+CHA) ; LD B,05H ; OUT (C),B ; OUT (C),A ; SET RTS EI ; RTN 1 ; END RECEIVE RET ; ;END LINE_ACCESS END «eof»