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: 2564 (0xa04) Types: TextFile Names: »TSIODMA.S«
└─⟦f2a3f19b6⟧ Bits:30005203 8" Zilog MCZ/1 Floppy CR80FD_0030 ( BB LTU TEST BACK UP! BB VD1 821220 ) └─ ⟦this⟧ »TSIODMA.S«
*INCLUDE CONST.S GLOBAL TSIODMA EXTERNAL DETECT,MDELAY TSIODMA DI XOR A OUT (ADMA+0DH),A ;RESET DMA IN A,(APIO1+1) AND 11111100B ;SET LOOP TEST OUT (APIO1+1),A LD A,0FFH OUT (APIO1),A ;SET INTERNAL CLOCKS LD HL,6 ;SET ALL 4 CLOCKS TO 333 KHZ LD C,ATIM1 OUT (C),L OUT (C),H INC C OUT (C),L OUT (C),H LD C,ATIM2 OUT (C),L OUT (C),H INC C OUT (C),L OUT (C),H IN A,(APIO1+2) RES 6,A OUT (APIO1+2),A ;ENABLE DMA-SIO2 TRANSFER LD A,01001000B ;SET DMA MODE LD B,4 SD1LOOP OUT (ADMA+0BH),A ;ALL CHANNEL: SINGLE READ TRANSFER INC A DJNZ SD1LOOP LD A,01010000B ;SET DMA CONTROL OUT (ADMA+8),A LD HL,SRAMB+200H LD DE,2-1 ;SET BYTECOUNT TO BE TRANSMITTED PR. CHANNEL LD A,0 LD B,4 OUT (ADMA+0CH),A ;RESET F/L FF LD C,ADMA SD2LOOP LD (HL),A ;FOR CHANNEL 0 TO 3 OUT (C),L OUT (C),H ; SET READ ADDRESS INC C OUT (C),E OUT (C),D ; SET BYTECOUNT INC C INC A INC HL LD (HL),A INC A INC HL DJNZ SD2LOOP ;NEXT CHANNEL LD C,ASIO1+2 CALL SETSIO ;INIT SIO1 CHA A INC C CALL SETSIO ;INIT SIO1 CHA B LD C,ASIO2+2 CALL SETSIO ;INIT SIO2 CHA A INC C CALL SETSIO ;INIT SIO2 CHA B LD A,0 OUT (ADMA+0FH),A ;RESET MASK'S LD DE,4 CALL MDELAY ;WAIT UNTIL DATA TRANSMITTED IN A,(ADMA+8) LD E,A LD D,8 LD B,4 SD3LOOP LD A,D ;FOR CHANNEL 3 TO 0 STEP -1 AND E JR Z,SD1ERROR ; QUIT IF DMA TRANSFER NOT COMPLETED RRC D DJNZ SD3LOOP ;NEXT CHANNEL LD E,0 LD D,5 LD C,ASIO2 CALL SDACH LD C,ASIO1 CALL SDACH XOR A ;SET TEST COMPLETED JR SDEXIT ;--------------------------------------------------------------------------- SDACH LD L,2 ;FOR SIO CHANNEL A TO B SD4LOOP LD B,2 SD41LOOP INC C ; FOR DATA 0 TO 1 INC C IN A,(C) BIT 0,A JR Z,SD2ERROR ; QUIT IF DATA NOT RECEIVED LD A,1 OUT (C),A IN A,(C) AND 70H JR NZ,SD2ERROR ; QUIT IF DATA ERROR DEC C DEC C IN A,(C) XOR E JR NZ,SD2ERROR ; QUIT IF DATA NOT THE EXPECTED INC E DJNZ SD41LOOP ; NEXT DATA INC D INC C INC C IN A,(C) BIT 0,A JR NZ,SD2ERROR DEC C INC D DEC L JR NZ,SD4LOOP ;NEXT CHANNEL INC D RET SD1ERROR LD A,90H ADD A,B CALL DETECT ;DETECT ERROR OCCURENCE RET SD2ERROR LD A,90H ADD A,D CALL DETECT ;DETECT ERROR OCCURENCE SDEXIT RET ;RETURN ;------------------------------------------------------------------------------ SETSIO LD HL,SIOTAB LD B,(HL) INC HL OTIR RET SIOTAB DEFB SIOEND-SIOTAB-1 DEFB 18H ;RESET CHANNEL DEFB 4 DEFB 01000111B ;ASYNC MODE DEFB 3 DEFB 11000001B ;RX ENABLED DEFB 5 DEFB 01101000B ;TX ENABLED DEFB 1 DEFB 11000000B ;ACTIVATE READY SIOEND ;ECHO \f