Alan Hourihane píše v Čt 11. 06. 2009 v 15:41 +0100: > > The crash occurs only when the OS loads the program at some memory > > location where there is an invalid read address just after. For example, > > at the end of the FastRam (like EmuTOS). I guess that with the right > > memory protection parameters, the space just after the TPA is marked as > > unreadable, it is probably what happens on my setup. > > This is the same tst.s I compiled before and it works here. Maybe you just forgot to set its "Load to Alt RAM" flag so you were testing your videoram. Please try running the attached executable and post your results. BTW, it's crashing in plain TOS 4.04 :-) EmuTOS seems to be the only OS that can run it without crash :) Hopefully FreeMiNT will be the next one. Though I am not sure who's going to fix TOS so the MiNTlib will need some sort of SP adjustment, anyway :-) Petr
move.l 4(sp),a0 | get basepage move.l 4(a0),d0 | get _base->p_hitpa and.l #$fffffffc,d0 | align on lower 4 bytes move.l d0,sp | this is the new stack move.l d0,d4 pea msg move.w #9,-(sp) | Cconws() trap #1 addq.l #6,sp move.l d4,d0 bsr printnum pea eol move.w #9,-(sp) trap #1 addq.l #6,sp move.w #8,-(sp) | Cnecin() trap #1 addq.l #2,sp clr.w -(sp) | Pterm0() trap #1 printnum movem.l d0-d3/a0-a3,-(sp) move.l d0,d1 moveq #7,d2 lea .prtend(pc),a0 .prloop move.l d1,d0 asr.l #4,d1 and.l #$0F,d0 add #'0',d0 cmp #'9',d0 ble .pr2 add #('A'-'9'-1),d0 .pr2 move.b d0,-(a0) dbf d2,.prloop pea (a0) move #9,-(sp) trap #1 addq #6,sp movem.l (sp)+,d0-d3/a0-a3 rts ds.b 8 .prtend dc.b 0 even msg: dc.b "Hello! SP=$",0 eol: dc.b 13,10,0
Attachment:
print_sp.tos
Description: Binary data