view lib/kreiderclib/chmod.as @ 2981:9550602c9a0b

sierra/objs_lsl/mnln.asm: Use division quotient, not remainder It calls a routine twice to make a division (L125C) but doesn't check the right register for the result. The result is returned in reg U and the remainder in reg D but the procedure expect the result to be returned in reg D. The divison routine seems to be correct because it is properly used elsewhere in the code. Patch by Guillaume Major and Robert Gault.
author Guillaume Major <guillaume.major@gmail.com>
date Sat, 12 Apr 2014 15:30:03 +0200
parents 1647f1874cdf
children
line wrap: on
line source

* Disassembly by Os9disasm of chmod.r

 section code

* OS-9 system function equates

F$ID equ $0c 
I$Open equ $84 
I$GetStt equ $8d 
I$SetStt equ $8e 
I$Close equ $8f 

chmod: pshs  y,u 
 leas  -16,s 
 bsr   L0035 
 bcs   L002d 
 pshs  a,y 
 os9 F$ID 
 cmpy  #0 
 beq   L001c 
 ldb   #$d6 
 cmpy  1,x 
 orcc  #1 
 bne   L002d 
L001c ldb   28,s 
 stb   ,x 
 puls  a,y 
 ldb   #$0f 
 os9 I$SetStt 
 bcs   L002d 
 os9 I$Close 
L002d leas  16,s 
 puls  y,u 
 lbra  _sysret 
L0035 lda   #2 
 ldx   24,s 
 os9 I$Open 
 bcc   L0040 
 rts    
L0040 leax  2,s 
 ldy   #$0010 
 ldb   #$0f 
 os9 I$GetStt 
 rts    

 endsect