|
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: 4200 (0x1068) Types: TextFile Names: »OBT.S«
└─⟦f2a3f19b6⟧ Bits:30005203 8" Zilog MCZ/1 Floppy CR80FD_0030 ( BB LTU TEST BACK UP! BB VD1 821220 ) └─ ⟦this⟧ »OBT.S«
*INCLUDE CONST.S GLOBAL OBT,ERROR,DETECT,MDELAY EXTERNAL TRAM,TPIO1,TPIO2,TTIM1,TTIM2,TTIM3,TSIO1,TSIO2 EXTERNAL TDMA,TSIODMA,INTCTC,EXBEGIN DI JR OBT ; *L OFF DEFS 5BH *L ON JR OBT ;ENTRY IF TEST ACTIVATED *L OFF DEFS 07H *L ON OBT DI ;SET PIO 1 MODE ;BEGIN LD A,10000001B ; PORT A : OUTPUT ; PORT B : OUTPUT ; PORT C (LOWER) : INPUT OUT (APIO1+3),A ; PORT C (UPPER) : OUTPUT ;END ;SET PIO 2 MODE ;BEGIN LD A,10001010B ; PORT A : OUTPUT ; PORT B : INPUT ; PORT C (LOWER) : OUTPUT OUT (APIO2+3),A ; PORT C (UPPER) : INPUT ;END ;RESET OUTPUT PORTS LD A,0 OUT (APIO2),A OUT (APIO2+2),A LD A,0FFH OUT (APIO1),A ;SET INTERNAL CLOCK MODE LD A,90H OUT (APIO1+1),A ;TURN ON TEST LED, SET LOOP1,LOOP2 LD A,0DFH OUT (APIO1+2),A ;SET CLEAR LD SP,RAMEND+1 LD A,55H LD B,00H O1LOOP DJNZ O12NEXT O1ERR LD A,0BH JP ERROR O12NEXT LD HL,5555H ;FIND LAST RAM ADDRESS PUSH HL POP HL PUSH HL CP H JR NZ,O1LOOP CP L JR NZ,O1LOOP POP HL LD A,0FFH CP B JR Z,O2NEXT ;IF ERROR IN STACK THEN DISPLAY LD A,0BH JP ERROR O2NEXT LD HL,0 ADD HL,SP DEC HL LD B,0EH ;TEST STACK AREA O2LOOP LD A,55H ;FOR N = STACK TOP TO BOTTOM STEP - 1 LD (HL),A ; WRITE DATA CP (HL) ; READ DATA JR NZ,O1ERR ; LOOP IF ERROR LD A,0AAH LD (HL),A CP (HL) JR NZ,O1ERR LD A,0FFH LD (HL),A CP (HL) JR NZ,O1ERR XOR A LD (HL),A CP (HL) JR NZ,O1ERR DEC HL DJNZ O2LOOP ;NEXT N CALL TRAM ;DO RAM TEST CALL TPIO1 ;DO PIO1 TEST CALL TPIO2 ;DO PIO2 TEST IN A,(APIO1+2) SET 5,A OUT (APIO1+2),A ;RESET CLEAR CALL ERRCHK JR NZ,O3NEXT ;IF PIO ERRORS THEN STOP HW TESTING CALL TTIM1 ;DO TIMER 1 (8253-1) TEST CALL TTIM2 ;DO TIMER 2 (8253-2) TEST CALL TTIM3 ;DO TIMER 3 (Z80-CTC) TEST CALL ERRCHK JR NZ,O3NEXT ;IF TIMER ERRORS THEN STOP HW TESTING CALL TSIO1 ;DO SIO 1 TEST CALL TSIO2 ;DO SIO 2 TEST CALL ERRCHK JR NZ,O3NEXT ;IF SIO ERRORS THEN STOP HW TESTING CALL TDMA ;DO DMA TEST CALL ERRCHK JR NZ,O3NEXT ;IF DMA ERRORS THEN STOP HW TESTING CALL TSIODMA ;DO DMA DATA TRANSFER TEST IN A,(APIO1+2) SET 6,A OUT (APIO1+2),A ;DISABLE DMA-SIO TRANSFER O3NEXT IN A,(TESTPO) RES TESTBI,A OUT (TESTPO),A ;TURN OFF TEST LED ;TEST COMPLETE LD HL,TIMER LD (INTCTC),HL ;LOAD TIMER ADDRESS IN INTERRUPT TABLE LD HL,INTCTC LD A,H LD I,A ;LOAD INTERRUPT VECTOR (MSB) LD C,ATIM3 LD A,0B5H ;LOAD CH.0 AS OUT (C),A ;INTERVAL TIMER LD A,195 ;LOAD TIME CONSTANT ;(195 * 64 uS = Ca.12.5 mS) OUT (C),A ;START TIMER OUT (C),L ;LOAD INTERRUPT VECTOR (LSB) JP EXBEGIN ;--------------------------------------------------------------------------- TIMER EX AF,AF' PUSH HL LD HL,SRAMB INC (HL) ;INCREMENT ALIVECOUNTER POP HL EX AF,AF' EI RETI ;ECHO \f ;---------------- PULSE TEST LED --------------------------------------- ERROR EI LD L,A LD (SRAMB),A ;LOAD ERROR CODE IN SRAMB LD C,TESTPO IN H,(C) RES TESTBI,H OUT (C),H ;TURN OFF TEST LED E1LOOP LD A,10 E2LOOP LD DE,100 ;DO CALL MDELAY ; SET TESTBI,H ; OUT (C),H ; LD DE,100 ; MAKE 10 TEST LED FLASHES CALL MDELAY ; RES TESTBI,H ; OUT (C),H ; DEC A ; JR NZ,E2LOOP ;OD LD DE,1000 CALL MDELAY ;TURN OFF TEST LED FOR 1 SEC LD A,8 ;FOR ALL 8 BITS IN ERROR CODE E3LOOP SET TESTBI,H ;DO OUT (C),H ; RLC L ; JR C,OUT1 ; IF "0" THEN OUT0 LD DE,1000 ; TURN ON TEST LED FOR 1.0 SEC JR OUTRES ; ELSE OUT1 LD DE,250 ; TURN ON TEST LED FOR 0.25 SEC OUTRES CALL MDELAY ; FI RES TESTBI,H ; OUT (C),H ; TURN OFF TEST LED FOR 1.0 SEC LD DE,1000 ; CALL MDELAY ; DEC A ; JR NZ,E3LOOP ;OD JR E1LOOP JR E1LOOP ;RETURN TO ERROR LOOP MDELAY INC D ;FOR N = REG. DE TO 0 STEP -1 M1LOOP LD B,0 M2LOOP DJNZ M2LOOP LD B,50 ;DELAY 1 MILLI SECOND M3LOOP DJNZ M3LOOP DEC E JR NZ,M1LOOP DEC D JR NZ,M1LOOP ;NEXT N RET ;---------------------------------------------------------------------------- DETECT LD HL,STACEND-1 LD C,(HL) LD B,0 AND A DEC HL SBC HL,BC LD (HL),A ;LOAD ERROR CODE LD HL,STACEND-1 INC (HL) ;INCREMENT ERROR COUNT RET ;RETURN WITH Z=0 ERRCHK LD HL,STACEND-1 LD A,(HL) ;GET ERROR COUNT AND A RET ;UPDATE Z-FLAG ;ECHO \f