📄 ram_inst.psm
字号:
;NAMEREG sX, <name> ; Rename register sX with <name>
CONSTANT VGA_ADDR_R, 10 ; Define constant <name>, assign value
CONSTANT VGA_ADDR_G, 11 ;
CONSTANT VGA_ADDR_B, 12 ;
CONSTANT PUSHBUTTON_ADDR,20;
CONSTANT SEGLED_ADDR_LED,00;
CONSTANT SEGLED_ADDR_SEGUP,01;
CONSTANT SEGLED_ADDR_SEGLOW,02;
CONSTANT SEGLED_ADDR_SEGDOT,03;
; ROM output file is always called
; <filename>.vhd
ADDRESS 000 ; Programs always start at reset vector 0
ENABLE INTERRUPT ; If using interrupts, be sure to enable
; the INTERRUPT input
BEGIN:
; <<< your code here >>>
LOAD S0, 00;
LOAD S1, 00;
LOAD S2, 00;
LOAD S3, 00;
DEALS6:
COMPARE S6,FF;
JUMP Z, DEALS5;
; LOAD S7,S7;
LOAD S7,S7;
LOAD S7,S7;
ADD S6,01
JUMP DEALS6
DEALS5:
LOAD S6,00;
ADD S5,01;
COMPARE S5,FF;
JUMP Z, DEALS4;
JUMP DEALS6
DEALS4:
LOAD S5,00;
ADD S4,01;
COMPARE S4,07;
JUMP Z, S407
JUMP DEALS6
S407:
ADD S0,01
ADD S1,01
ADD S2,01
ADD S3,01
OUTPUT S0,SEGLED_ADDR_LED;
OUTPUT S1,SEGLED_ADDR_SEGUP;
OUTPUT S2,SEGLED_ADDR_SEGLOW;
OUTPUT S3,SEGLED_ADDR_SEGDOT;
LOAD S4,00;
LOAD S5,00;
LOAD S6,00;
JUMP DEALS6
JUMP BEGIN ; Embedded applications never end
ISR: ; An Interrupt Service Routine (ISR) is
; required if using interrupts
; Interrupts are automatically disabled
; when an interrupt is recognized
; Never re-enable interrupts during the ISR
INPUT SA, PUSHBUTTON_ADDR ; Read the ISR register from Push Button module
LOAD SB, SA ;
AND SB,0F ; mask out the 3 bit of LSB ( B,G,R )
R:
RR SB ; The LSB is in the carry => R field
JUMP NC, G ;
INPUT SC, VGA_ADDR_R;
ADD SC , 01 ;
OUTPUT SC,VGA_ADDR_R;
G:
RR SB ; The Less LSB is in the carry => G field
JUMP NC, B ;
INPUT SC, VGA_ADDR_G;
ADD SC , 01 ;
OUTPUT SC,VGA_ADDR_G;
B:
RR SB ; The 3rd LSB is in the carry => B field
JUMP NC, CLEAR ;
INPUT SC, VGA_ADDR_B;
ADD SC , 01 ;
OUTPUT SC,VGA_ADDR_B;
CLEAR:
RR SB
JUMP NC, INTEND ;
LOAD S0,00
LOAD S1,00
LOAD S2,00
LOAD S3,00
LOAD S4,00;
LOAD S5,00;
LOAD S6,00;
OUTPUT S0,SEGLED_ADDR_LED;
OUTPUT S1,SEGLED_ADDR_SEGUP;
OUTPUT S2,SEGLED_ADDR_SEGLOW;
OUTPUT S3,SEGLED_ADDR_SEGDOT;
INTEND:
LOAD SD, 00
OUTPUT SD, PUSHBUTTON_ADDR;
RETURNI ENABLE ; Return from interrupt service routine
; Use RETURNI DISABLE to leave interrupts
; disabled
ADDRESS 3FF ; Interrupt vector is located at highest
; instruction address
JUMP ISR ; Jump to interrupt service routine, ISR
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -