It's part of a fairly large program, but the 'init' procedure is:
Code: Select all
procedure init;
begin
setbasic; // Basic initialization
zero; // Zero out variables
diagnostics; // Startup-diagnostics
setuart; // Set UART parameters
EnableInterrupts();
readSD; // Read the CONTROL.TXT file
//assign; // Assign variables based upon the CONTROL.TXT file
loadalg; // Load pump control algorithm into RAM
end;
This generates this in the .lst file:
Code: Select all
_init:
;initpsc1.mpas, 400 :: begin
0x9D0062DC 0x27BDFFFC ADDIU SP, SP, -4
0x9D0062E0 0xAFBF0000 SW RA, 0(SP)
;initpsc1.mpas, 401 :: setbasic; // Basic initialization
0x9D0062E4 0x0F401377 JAL initpsc1_setbasic+0
0x9D0062E8 0x70000000 NOP
;initpsc1.mpas, 402 :: zero; // Zero out variables
0x9D0062EC 0x0F40116E JAL initpsc1_zero+0
0x9D0062F0 0x70000000 NOP
;initpsc1.mpas, 403 :: diagnostics; // Startup-diagnostics
0x9D0062F4 0x0F4011DF JAL initpsc1_diagnostics+0
0x9D0062F8 0x70000000 NOP
;initpsc1.mpas, 404 :: setuart; // Set UART parameters
0x9D0062FC 0x0F4013DF JAL initpsc1_setuart+0
0x9D006300 0x70000000 NOP
;initpsc1.mpas, 405 :: EnableInterrupts();
;initpsc1.mpas, 406 :: readSD; // Read the CONTROL.TXT file
0x9D006304 0x0F4010E9 JAL initpsc1_readSD+0
0x9D006308 0x417E6020 EI R30
;initpsc1.mpas, 408 :: loadalg; // Load pump control algorithm into RAM
0x9D00630C 0x0F401404 JAL _loadalg+0
0x9D006310 0x70000000 NOP
;initpsc1.mpas, 409 :: end;
As far as I can tell the interrupts work, and I discovered that when I look at the .asm instead of the .lst, I get this:
Code: Select all
_init:
;initpsc1.mpas,400 :: begin
ADDIU SP, SP, -4
SW RA, 0(SP)
;initpsc1.mpas,401 :: setbasic; // Basic initialization
JAL initpsc1_setbasic+0
NOP
;initpsc1.mpas,402 :: zero; // Zero out variables
JAL initpsc1_zero+0
NOP
;initpsc1.mpas,403 :: diagnostics; // Startup-diagnostics
JAL initpsc1_diagnostics+0
NOP
;initpsc1.mpas,404 :: setuart; // Set UART parameters
JAL initpsc1_setuart+0
NOP
;initpsc1.mpas,405 :: EnableInterrupts();
EI R30 <<<<<<<<<<<<<<<<<<<<<<<<<<--------------------------------!!!!!
;initpsc1.mpas,406 :: readSD; // Read the CONTROL.TXT file
JAL initpsc1_readSD+0
NOP
;initpsc1.mpas,408 :: loadalg; // Load pump control algorithm into RAM
JAL _loadalg+0
NOP
;initpsc1.mpas,409 :: end;
L_end_init:
Looking closer, the EI is present in the .lst, it's just in the wrong line. It's a couple of lines down. It looks like the .lst file isn't being correctly formed.
If you know what you're doing, you're not learning anything.