2 ! ********************************************************************** 3 ! Program CONTR.BAS Utg}va 1.0 1986-11-23 4 ! av Curt Rehnborg, <1121> 5 ! Ins{nd av Curt Rehnborg 6 ! F|r ABC830. [ndra Card Select nedan till t ex 44 f|r ABC832/834. 9 ! ********************************************************************** 10 EXTEND : INTEGER 99 ; CHR$(12) 100 OUT 1,45 : ; CUR(1,1) 'OUT 1,45 Card select' 110 Dummy=FNStatbild(INP(1)) 120 OUT 4,0 : ; 'OUT 4,0 Reset' 130 Dummy=FNStatbild(INP(1)) 140 OUT 2,0 : ; 'OUT 2,0 Set cmd mode' 150 Dummy=FNStatbild(INP(1)) 160 OUT 0,1 : ; 'OUT 0,1 Byte 1 av cmd = read sector' 170 Dummy=FNStatbild(INP(1)) 180 OUT 0,0 : ; 'OUT 0,0 Byte 2 av cmd = drive 0' 190 Dummy=FNStatbild(INP(1)) 200 OUT 0,0 : ; 'OUT 0,0 Byte 3 av cmd = Sp}rnr' 210 Dummy=FNStatbild(INP(1)) 220 OUT 0,32 : ; 'OUT 0,0 Byte 4 av cmd = sector nr' 230 Dummy=FNStatbild(INP(1)) 240 OUT 2,0 : ; 'OUT 2,0 Set cmd mode' 250 Dummy=FNStatbild(INP(1)) 260 OUT 0,2 : ; ' Out 0,2 1 Byte Cmd=\verf|r Data Contr>Hostcomp' 270 Dummy=FNStatbild(INP(1)) 280 OUT 0,0,0,0,0,0 : ; ' Out 0,0,0,0,0,0 Byte 2,3,4 I Cmd=Utan Betydelse' 290 Dummy=FNStatbild(INP(1)) 300 FOR I=1 TO 256 310 ; HEX$(INP(0)); 320 NEXT I 330 Dummy=FNStatbild(INP(1)) 1000 ! 1010 ! 1020 ! 1030 ! 1040 DEF FNStatbild(Stat) 1050 ! 1060 ; CUR(13,1) ' I N P ( 1 ) ' 1070 ; CUR(15,0) 'D7 = ' INT(Stat/128) ' CONTROLLER BUSY = 0' 1080 ; CUR(16,0) 'D6 = ' (Stat AND 64)/64 ' DATABUFFERTENS RIKTNING 1= TILL CONTR' 1090 ; CUR(17,0) 'D5 = ' (Stat AND 32)/32 ' ANV[NDS EJ' 1100 ; CUR(18,0) 'D4 = ' (Stat AND 16)/16 ' ANV[NDS EJ' 1110 ; CUR(19,0) 'D3 = ' (Stat AND 16)/16 ' ERROR = 0 FELKOD FINNS ATT H[MTA' 1120 ; CUR(20,0) 'D2 = ' (Stat AND 4)/4 ' KLART F\R \VERF\RING AV DATA = 0' 1130 ; CUR(21,0) 'D1 = ' (Stat AND 2)/2 ' KLART ATT TA EMOT CMD = 0 ' 1140 ; CUR(22,0) 'D0 = ' (Stat AND 1)/1 ' HANDSKAKNING PIO PORT B' 1150 IF Stat AND 8 THEN GOTO 1260 1160 Sense=INP(0) 1170 ; CUR(13,52) ' I N P ( 0 ) ' 1180 ; CUR(15,52) '* D7 = ' (Sense AND 128)/128 ' READY SAKNAS = 1' 1190 ; CUR(16,52) '* D6 = ' (Sense AND 64)/64 ' SKRIVSKYDDAD = 1' 1200 ; CUR(17,52) '* D5 = ' (Sense AND 32)/32 ' !! SKRIVFEL = 1' 1210 ; CUR(18,52) '* D4 = ' (Sense AND 16)/16 ' AM ERROR = 1' 1220 ; CUR(19,52) '* D3 = ' (Sense AND 8)/8 ' CRC ERROR = 1' 1230 ; CUR(20,52) '* D2 = ' (Sense AND 4)/4 ' DATA LOST = 1' 1240 ; CUR(21,52) '* D1 = ' (Sense AND 2)/2 ' CMD ERROR = 1' 1250 ; CUR(22,52) '* D0 = ' (Sense AND 1)/1 ' NOT USED' 1260 IF SYS(5) THEN GET Slask$ ELSE Stat=INP(1) : GOTO 1060 1270 ; CHR$(12) 1280 RETURN 0 1290 FNEND