[Coco] Assembler question

Helio Emery Jr. helioemery at hotmail.com
Sun Aug 28 15:15:15 EDT 2011


Hi Robert,
 
I've tryied OS9 I$WritLn too, just in case the OS9 I$Write somehow doesn't get the characters translated by the drivers, but hadno difference.
At this point, the only thing I can think off is flushing the stdout buffer.
 
Do you know how to do this?
 
Thanks,
Helio
 

> Date: Sun, 28 Aug 2011 12:02:12 -0400
> From: robert.gault at att.net
> To: coco at maltedmedia.com
> Subject: Re: [Coco] Assembler question
> 
> Helio Emery Jr. wrote:
> >
> > Hi Robert, thanks for the response.
> >
> > I used to have a Brasilian Coco2 clone, named Color 64.
> > While I don't manage to have one again in my hands, I'm using MESS as a Coco2 emulator to re-learn about Coco2 and OS-9 level 1 specifics.
> > Back in the 80's the Color 64 was my second computer, and the one with I learned much from it.
> >
> > So, I started playing around using it to create some simple graphic programs in C and Assembler, just for fun.
> > I created in C a program to draw a line and a circle in graphics mode, in OS-9 environment.
> > And them I'm trying to create a program to do the same (draw a line and draw a circle) in Assembler.
> > I'm not trying to recreate the C program itself in Assembler (i.e a didn't take a look in the assembled code generated by the C compiler).
> > Just trying to get the line and the circle generated in graphics OS-9 environment.
> >
> > Reading OS-9 Operating System User’s Guide, Appendix C. Display System Functions I understood that for switchng to OS-9 graphics environment using the standart OS-9 calls one have to send to the STDOUT 3 caracters, the $0F (DISPLAY GRAPHICS) followed by graphics mode ($00 in my case) and graphics color (again $00).
> >
> > The problem is that only doing this is not enoght.
> > In C I had to call fflush() to make the graphics screen to apear.
> > In assembler I didn't know how to acomplish this.
> >
> > You see, even in OS-9 shell these caracters behave as described.
> > If one uses the comand DISPLAY to send those characters to stdout, the system will change to graphics screen.
> >
> > In assemby I just call I$Write to send those characters to the screen.
> > As you can see, I'm using this method to let OS-9 create the graphic screen for me, allocating the 6K screen area and using OS-9 GetStat to get the memory address.
> > After doing this I'll just store the bytes I want directly in the graphics memory area.
> > You do it in a different way?
> > This is the only way I know right now.
> >
> > See bellow the assembler codes I'm using:
> >
> > plota1 leax inigrf,u *
> > ldy #4 *
> > lda #STDOUT * Inicializa tela gráfica
> > OS9 I$Write *
> > bcs erroos9 *
> > plota2 lda #STDOUT
> > leax devsta,u *
> > ldb #DSTAT * Obtem endereço da tela
> > OS9 I$GetStt *
> > bcs erroos9 *
> >
> >
> > Thanks for the help,
> > Helio
> >
> >
> 
> Well I tried a test with MESS and NitrOS-9 LevelI and Level2 using Coco2 and 
> Coco3 emulation.
> The program was
> 
> ifp1
> use /dd/defs/defsfile
> endc
> 
> mod endprgm,name,langtype,attrev,start,edata
> 
> edata equ .
> name fcs "screen"
> langtype set Prgrm+Objct
> attrev set ReEnt+1
> 
> start lda #1 stdout
> leax cmd,pcr
> ldy #3
> os9 I$Write
> loop bra loop
> 
> cmd fcb $f,0,0
> 
> emod
> endgrgm equ *
> end
> 
> The above on MESS Coco3 emulation running NitrOS-9 LevelII from a vdg screen 
> turned on the graphics mode. Run on a window screen, nothing happened.
> 
> The above run on MESS Coco2 emulation with NitrOS-9 LevelI did not work but 
> crashed NitrOS-9. The command display f 0 0 did start the graphics screen.
> 
> I don't know why the above failed with Coco2 emulation but I don't think it is a 
> problem with the program.
> 
> --
> Coco mailing list
> Coco at maltedmedia.com
> http://five.pairlist.net/mailman/listinfo/coco
 		 	   		  


More information about the Coco mailing list