|
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: 2745 (0xab9) Types: TextFile Names: »SIOCALL.S«
└─⟦a3edd706e⟧ Bits:30005202 8" Zilog MCZ/1 Floppy CR80FD_0028 ( TC 500 SEC. PROTOCOL BACK UP ! (V1) BB A1 820907 NCJ ) └─ ⟦this⟧ »SIOCALL.S« └─⟦e12128f26⟧ Bits:30005200 8" Zilog MCZ/1 Floppy CR80FD_0026 ( TC 500 SEC. PROTOCOL BB V1 830407 NCJ ) └─ ⟦this⟧ »SIOCALL.S«
;***************************************************************************** ;* ;* SIOCALL MODULE ;* ;***************************************************************************** ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ;THE SIOREADWRITE IS USED TO CONTROL THE READ/WRITE REGISTERS AT THE Z80-SIO. ;TO EACH SIO IS CONNECTED A TABLE CONTANING THE VALUE OF THE READ/WRITE REGIS- ;TERS. ; ; *************** ; 10 * READ- * SIOXCH+0AH ; * REGISTER 2 * ; *************** ; 9 * READ- * SIOXCH+09H ; * REGISTER 1 * ; *************** ; 8 * READ- * SIOXCH+08H ; * REGISTER 0 * ; *************** ; 7 * WRITE- * SIOXCH+07H ; * REGISTER 7 * ; *************** ; 6 * WRITE- * SIOXCH+06H ; * REGISTER 6 * ; *************** ; 5 * WRITE- * SIOXCH+05H ; * REGISTER 5 * ; *************** ; 4 * WRITE- * SIOXCH+04H ; * REGISTER 4 * ; *************** ; 3 * WRITE- * SIOXCH+03H ; * REGISTER 3 * ; *************** ; 2 * WRITE- * SIOXCH+02H ; * REGISTER 2 * ; *************** ; 1 * WRITE- * SIOXCH+01H ; * REGISTER 1 * ; *************** ; 0 * WRITE- * SIOXCH+00H ; * REGISTER 0 * ; *************** *E ; ;THE LETTER X IN SIOXCH SYMBOLIZE THE CHANNEL NUMBER.CHANNEL 2 ==> TABLE NAME = SIO2CH ;THE CONTENT OF WRITE REGISTER 0 WILL ALWAYS BE ZERO,BECAUSE OF THE APPLICATION ;OF WRITE REGISTER 0.SEE TECHNICAL MANUAL FOR THE Z80 SIO. ; PARAMETER IN REGISTER BC ; ; REG B BIT 5 = 1=WRITE SELECTED 0=READ SELECTED ; ; REG B BIT 6 = 1=SET SPECIFIED VALUE 0= RESET VALUE ; ; REG B BIT O-3 = REGISTER NUMBER ; ; REG B BIT 7 = REGISTERNR IS ZERO --> IS 0 ; ; REG C BIT 0-7 = VALUE TO BE SET OR RESET ; ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< SIOREADWRITE GLOBAL SIOREADWRITE LD L,(IY+24H) ; HL=SIOTABLE ADR LD H,(IY+25H) LD A,B AND 07H ; HL=REGISTER NR + HL LD E,A LD D,0H ADD HL,DE BIT 7,B JR NZ,REGNO_ZERO ; IF REGISTERNR=0 THEN BIT 5,B ; IF READ THEN JR NZ,REGZERO_WRITE LD DE,08H ADD HL,DE PUSH BC LD C,(IY+1DH) IN A,(C) POP BC LD (HL),A RET REGZERO_WRITE LD A,C ; ELSE ; ENDIF PUSH BC LD C,(IY+1DH) OUT (C),A POP BC RET REGNO_ZERO LD A,B AND 07H PUSH BC LD C,(IY+1DH) OUT (C),A POP BC BIT 5,B ; IF WRITE THEN JR Z,READ_1_3 ; BEGIN BIT 6,B JR Z,RESET_VALUE ; IF ACTION=SET THEN LD A,(HL) OR C JR NEXT2 RESET_VALUE LD A,C ; ELSE CPL LD E,A LD A,(HL) AND E NEXT2 LD (HL),A ; ENDIF PUSH BC LD C,(IY+1DH) OUT (C),A POP BC RET READ_1_3 PUSH BC LD C,(IY+1DH) IN A,(C) ; ELSE POP BC LD DE,08H ; BEGIN ADD HL,DE LD (HL),A ; END RET ; RETURN END ;ECHO \f