Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;Un DMAC è interfacciato al PD32. Il DMAC deve poter supportare operazioni di trasferimento dati bidirezionali tra due dischi collegati direttamente al DMAC. Il PD32 programma il DMAC utilizzando dati allocati in memoria a partire dall’indirizzo BASE_ADDR. I dati sono così composti nell’ordine:
- ;- 1 byte riservato alla modalità di trasferimento:
- ; - 1 in caso di trasferimenti da disco A verso B
- ; - 0 in caso di trasferimenti da disco B verso A
- ;- 2 byte per l'identificazione della traccia e del settore (si ipotizza che i dati da trasferire siano contenuti in un unico settore) del Disco A
- ;- 2 byte per l'identificazione della traccia e del settore (si ipotizza che i dati da trasferire siano contenuti in un unico settore) del Disco B
- ;- 1 byte per la tipologia delle parole trasferite:
- ; - 0 trasferimento al byte
- ; - 1 trasferimento alla word
- ; - 2 trasferimento alla longword
- ;- 2 byte per il numero di parole trasferite:
- ;Nella routine d’inizializzazione il PD32 programma e avvia il DMAC. Il servizio associato all’interruzione del DMAC è il seguente: il PD32 scrive il numero di parole trasferite sull’interfaccia DISPLAY. DISPLAY è un’interfaccia di output sincrona collegata al PD32. Progettare:
- ;- Il SCA dell’interfaccia DMAC e DISPLAY;
- ;- Il software di attivazione per DMAC ed il driver del DMAC;
- org 400h
- dmac equ 0h ;DMAC, supports data transfer operations between two disks
- mode equ 1h ;Transfer mode. 0 equals B to A, 1 equals A to B
- trackA equ 2h ;Disk A track
- sectorA equ 3h ;Disk A sector
- trackB equ 4h ;Disk B track
- sectorB equ 5h ;Disk B sector
- datatype equ 6h ;Data type. 0 equals byte, 1 equals word, 2 equals longword
- wc equ 7h ;Word counter
- display equ 8h ;Output device
- baseaddr equ ? ;Starting address for all data
- code
- jsr init
- seti
- main: jmp main ;Loops until interrupt
- halt
- init: push R0 ;Initializes DMAC for transfer
- movl #baseaddr, R0
- outl (R0), mode ;Sets transfer mode
- outl 1(R0), trackA ;Sets disk tracks
- outl 3(R0), sectorA ;Sets disk sectors
- outl 5(R0), trackB
- outl 7(R0), sectorB
- outl 9(R0), datatype ;Sets data type for current transfer
- outl 10(R0), wc ;Sets word counter
- pop R0
- ret
- driver 0, 700h ;DMAC driver
- push R0
- movl #wc, R0
- outl display, R0 ;Transfers word number to display
- clear dmac
- pop R0
- rti
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement