📄 sy10_dma.asm
字号:
;***********************************************
;*** dma translation, use 8253 slop drq1 ***
;*** 0832 output 256 bytes / time **
;********** // jun 7 ,1996 \\ **********
STAC SEGMENT PARA STACK 'STAC'
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
FIG DB 256 DUP (?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAC
START: MOV AX,DATA
MOV DS,AX
XOR BX,BX ;Init data areas
MOV CL,0FFH
NEXT0: MOV [FIG+BX],CL
INC BX
LOOP NEXT0 ;From 0ff to 00
CLI
;******* 8253 init, use chann 0
MOV DX,293H ;Cs jumper is 01
MOV AL,00110110B ;Only low byte access, the third model
OUT DX,AL
MOV DX,290H
MOV AL,0AH
OUT DX,AL ;According to clk , only 2 divid
MOV AL,0
OUT DX,AL
OUT 0CH,AL ;Clear byte point regest
MOV AL,01011001B ;Single model, increase, auto init, read ram, chan 1
OUT 0BH,AL ;Model regest
MOV AX,DATA
MOV BX,OFFSET FIG
MOV CL,4
ROL AX,CL
MOV CH,AL
AND AL,0F0H
ADD AX,BX
JNC NEXT1
INC CH ;Addr low 16 bits in ax, high 4 bites in ch
NEXT1: OUT 02H,AL
MOV AL,AH
OUT 02,AL ;Send addr initional reg
MOV AL,CH
AND AL,0FH
OUT 83H,AL ;Send page reg
MOV AL,255
OUT 03,AL
MOV AL,0
OUT 03,AL ;Number of bytes - 1
MOV AL,01
OUT 09H,AL ;Request reg , chann 1 reset
OUT 0AH,AL ;Singal master reg, chann 1 reset
STI
;******************************
NEXT2: MOV AH,01
INT 16H
JZ NEXT2
DEC AH
INT 16H
MOV AL,05
OUT 0AH,AL ;Close channal 1
MOV AX,4C00H
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -