kategoria: Asembler
[#1] PhxAss - pytanie lamera do znawców
Ogólnie rzecz biorąc chodzi o to, że program się kompiluje i uruchamia, jeżeli wywołam go z CLI/Shella - ale ignoruje mnie, gdy próbuję na nim kliknąć myszą. A bardzo bym chciał, żeby dało się go również uruchomić za pomocą dwukliku...

m macro
 move.l \1,\2
 endm
j macro
 jsr \1
 endm
 m 4,a6
 lea d(pc),a1
 m #33,d0
 j -552(a6)
 tst.l d0
 bne o
 m #20,d0
 rts
o m d0,a6
 m sp,a5
 lea x(pc),a4
 m #0,d7
 bsr s
 lea p(pc),a0
 m a0,d1
 m #0,d2
 m #0,d3
 j -222(a6)
 bra e
x m (a3),a2
a tst.b (a2)
 beq b
 cmp.b #47,(a2)
 bne n
 clr.b (a2)
 m (a3),d1
 m #-1,d2
 j -84(a6)
 m d0,d1
 bne c
 m (a3),d1
 j -120(a6)
c move.b #47,(a2)
 m d0,d1
 beq f
 j -90(a6)
n add #1,a2
 bra a
b m (a3)+,d1
 m #1006,d2
 j -30(a6)
 m d0,d5
 beq f
 m d5,d1
 m (a3)+,d2
 m (a3)+,d3
 j -48(a6)
 m d0,d4
 m d5,d1
 j -36(a6)
 cmp.l #-1,d4
 beq f
 rts
f m #20,d7
e m a6,a1
 m 4,a6
 j -414(a6)
 m a5,sp
 m d7,d0
 rts
d dc.b 'dos.library',0
p dc.b 'EXECUTE Install.scr',10,0
 even
s
f270598964 lea .f(pc),a3
 jsr (a4)
 jmp .j 
.f dc.l .n,.d,.e-.d
.n dc.b 'RAM:file.lzx',0
.d incbin 'Ram Disk:file.lzx'
.e dc.b 0
 even
.j
f269846476 lea .f(pc),a3
 jsr (a4)
 jmp .j 
.f dc.l .n,.d,.e-.d
.n dc.b 'RAM:unlzx',0
.d incbin 'Ram Disk:unlzx'
.e dc.b 0
 even
.j
f270594356 lea .f(pc),a3
 jsr (a4)
 jmp .j 
.f dc.l .n,.d,.e-.d
.n dc.b 'RAM:Install.scr',0
.d incbin 'Ram Disk:Instal.scr'
.e dc.b 0
 even
.j
 rts
[#2] Re: PhxAss - pytanie lamera do znawców

@APC74, post #1

Ale kod, czy mnemoniki nie są wystarczająco krótkie, że zrobiłeś do nich makra?

Co do pytania: wystarczy, że zajrzysz do dowolnego kodu startowego jakiegoś kompilatora języka C. Żeby program dało się uruchomić z Workbencha, trzeba pobrać komunikat jaki przesyła Workbench na początku działania programu (WBStartup). Robi się to w następujący sposób:

1. Pobiera się adres swojego tasku funkcją z exec.library:
movea.l 4.w,a6
suba.l a1,a1
jsr _LVOFindTask(a6)
movea.l d0,a4

2. Czeka się na komunikat, a następnie pobiera go:
lea pr_MsgPort(a4),a0
jsr _LVOWaitPort(a6)
lea pr_MsgPort(a4),a0
jsr _LVOGetMsg(a6)

I gotowe. Można też korzystać teraz z funkcji DOSa w swoim programie odpalonym z Workbencha. Pamiętaj by zwrócić komunikat WBStartup za pomocą ReplyMsg() na końcu programu.

Ostatnia aktualizacja: 31.03.2013 22:15:44 przez Hextreme-Attic
[#3] Re: PhxAss - pytanie lamera do znawców

@Hextreme-Attic, post #2

Dzięki za podpowiedź - program działa z dwukliku. OK
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem