40 likes | 189 Views
MEM. Pd32. DMAC. hd. dev. CLEAR. IACK. START. IRQ. IVN. R Q S. REG. IACK OUT. SCO. SCA. pd32. IACK. CLEAR. IO WR. INC. MBR. START. IRQ. CAR. IVN. SEL CAR. R Q S. DEC. IACK OUT. MBR. TC. MRD. SCO DMAC. WC. MWR. MBG. SEL WC. REG. DATO. SCO
E N D
MEM Pd32 DMAC hd dev
CLEAR IACK START IRQ IVN R Q S REG IACK OUT SCO SCA
pd32 IACK CLEAR IO WR INC MBR START IRQ CAR IVN SEL CAR R Q S DEC IACK OUT MBR TC MRD SCO DMAC WC MWR MBG SEL WC REG DATO SCO HD MEM
ORG 400H DEV EQU DMAC EQU CAR EQU WC EQU BUFFER EQU 00B0h BUFFER_A EQU D0BBh CODE JSR INIT MAIN:JMP MAIN INIT: OUTL #1024,WC; IMPOSTO DMAC OUTL #BUFFER_A, CAR; SETI START DMAC RET DRIVER 0,1600h; DRIVER DMAC PUSH.. MOVL #BUFFER_A,BUFFER; MEMORIZZO IND PRIMA PAROLA NEL BUFFER DI LAVORO MOVL #BUFFER,R0; CALCOLO INDIRIZZO CONTATORE ADDL #4,R0 ; CALCOLO INDIRIZZO CONTATORE MOVW #0,(R0); AZZERO CONTATORE CLEAR DMAC; ELIMINO CAUSA INTERRUZIONE START DEV POP.. DRIVER 1,3200h;DRIVER DEV PUSH.. CLEAR DEV; ELIMINO CAUSA INTERRUZIONE SETI; ABILITO INTERRUZIONI MOVL BUFFER, R0; INDIRIZZO DATO DA CONSUMARE IN R0 OUTL (R0)+,DEV; DATO DA CONSUMARE IN DEV MOVL R0, BUFFER; AGGIORNO INDIRIZZO NEXT DATO DA CONSUMARE MOVL #BUFFER,R0; CALCOLO INDIRIZZO CONTATORE ADDL #4 ,R0; CALCOLO INDIRIZZO CONTATORE MOVW(RO),R1; CONTATORE IN R1 ADDW #1, R1; AGGIORNO CONTATORE MOVW R1,(RO); AGGIORNO CONTATORE IN MEMORIA MOVW #1024,R2; CARICO IL DATO PER IL CONFRONTO CMPW R1,R2; CONFRONTO CONTATORE CON 1024 JNZ FINE OUTL #1024,WC; REIMPOSTO DMAC OUTL#BUFFER_A,CAR; START DMAC FINE: START DEV_A POP.. RTI