70 likes | 210 Views
IDLE. INIZI0 RICERCA?. NO. SI. i=0 , k=SASTR j=0 , h=SAMEM. richiesta del bus PD32. BUS RILASCIATO. NO. SI. leggo MEM( k ). #. @. i controlla la lunghezza della stringa (LSTR) j controlla il numero di accessi consecutivi (1024)
E N D
IDLE INIZI0 RICERCA? NO SI i=0 , k=SASTR j=0 , h=SAMEM richiesta del bus PD32 BUS RILASCIATO NO SI leggo MEM(k) # @ i controlla la lunghezza della stringa (LSTR) j controlla il numero di accessi consecutivi (1024) k assume il valore corrente dell’indirizzo del byte della stringa da controllare h assume il valore corrente dell’indirizzo dell’area di memoria dove cercare
@ # j=j+1 j=0 leggo MEM(h) $ MEM(k) = MEM(h) SI & NO H=EAMEM? NO flagR=0 h=h+1 Richiesta Interrupt J=1023 NO To IDLE SI
$ SSMEM=h § i =LSTR SI flagR=1 NO h=h+1 k=k+1 i=i+1 Richiesta Interrupt leggo MEM(k) To IDLE leggo MEM(h) § MEM(k) = MEM(h) SI NO i = 0 k = SASTR h=SSMEM leggo MEM(k) &
NOP 0 STARTSEARCH* 1 0 STRCL BURSTCL ASTRPL RESETSTART i=0 , k=SASTR j=0 , h=SAMEM 1 MBREN 2 richiesta del bus PD32 MBG* 1 0 STRADEN MBREN,DMAEN 3 # STRADEN, IMRD MBREN, DMAEN 4 leggo MEM(k) STRADEN STRBYTECK, DMAEN IMRD, MBREN 5 @
@ # DMAEN MBREN 6 leggo MEM(h) DMADEN IMRD MBREN 7 j=0 MBREN,DMAEN BURSTCE 12 DMAEN IMRD, MBREN 8 MEM(k) = MEM(h) j=j+1 BURSTCL 13 £ BYTEEQUAL 1 & 0 H=EAMEM? MBREN,DMAEN 9 ENDMEM* 0 h=h+1 1 RESETFLAG 10 MBREN, DMAEN SAMEMCE 11 $ BURSTEND 0 J = 1023 1
£ SSMEMEN MBREN, DMAEN SSMEM=h 14 § i =LSTR ENDSTR* 0 SETFLAG 15 h=h+1 k=k+1 i=i+1 1 SAMEMCE ASTRCE, DMAEN STRCE, MBREN 16 $ leggo MEM(k) DMAEN MBREN STRADEN MBREN, DMAEN 20 17 leggo MEM(h) DMAEN IMRD MBREN IMRD, DMAEN STRADEN, MBREN 21 18 DMAEN IMRD, MBREN STRADEN STRBYTECHK IMRD, MBREN, DMAEN 22 19 MEM(k) = MEM(h) § BYTEEQUAL 1 0 %
i = 0 k = SASTR h=SSMEM % MEMMUX,SAMEMPL ASTRPL, STRCL MBREN, DMAEN 23 leggo MEM(k) STRADEN MBREN, DMAEN 24 IMRD, DMAEN STRADEN, MBREN 25 STRADEN STRBYTECHK IMRD, MBREN, DMAEN 26 $ & /IRQ 27 IACK* 1 0 NOP 28 NOP 0