GOOSEE users' page |
Page updated May 1, 2001 |
Hi, the action is just starting on this page!
Download: goosee.zip Version 1.21, 175K bytes. |
Right-button-click your mouse to save-as to a temporary directory. Create C:\GOOSEE and unzip into it. No other installation process required. Oh yeah, all files are dated 1995, as my PC has its clock set back. Complete waiver of responsibility: use at own risk. |
Yes, the filesize is only 175K -- that's a sophisticated GUI application with auto-code generator, plus HTML quick guide, plus demo .GOO files. Unzipped, goosee.exe is only 242K. The reason for this is that it's written in assembly language and uses the raw MS Windows API. Even trivial applications developed with "modern" tools are at least half a Mb in size. Seeing is believing, so go ahead and get it.
Freeware licence:
You may download and use goosee.exe indefinitely. goosee.exe is fully functional and there are no nag screens. If you wish to host goosee.exe for download by others, you must provide the complete goosee.zip, unchanged. You may include goosee.exe with a .GOO datafile when distributing the latter -- imagine, a complete visual-diagram/project-manager/coder/documenter that both reads and edits, that is small enough to be attached to an email or put onto a floppy along with the data files!
Why bother to register? GOOSEE is free for download. I intend to keep GOOSEE always freely downloadable, and fully functional. With the release of version 1.1, I also decided to release the User Manual for free. I classify GOOSEE as "donationware" for individuals, meaning you can donate something if you feel moved to support me. GOOSEE is shareware for government, education and business institutions, in which a site licence can be purchased. |
Checkout the book Flow design for embedded systems.
After installing GOOSEE.EXE the next thing you need, and most important, is the
GOOSEE User's Manual.
Baby breathing monitor GOOSEE example application. Shows some general program design techniques.
The SCREEM RTOS (Real Time Operating System) is only 258 bytes (Franklin C -- even smaller with Keil C) and is a true time-sliced OS. It will run entirely inside an 8051 with only internal RAM and only needs 71 bytes (much of which is the stack frames, that hold application data -- so effectively the amount of data space taken away by the RTOS is very small).
SCREEM51 has these code components:
main() |
30 bytes |
postmsg() |
30 bytes |
ismsg() |
47 bytes |
switcher_isr() |
151 bytes |
In addition there are the small macros, KILLTASK and CREATETASK.
switcher_isr() is somewhat inefficient with Franklin C, as some registers are explicitly pushed onto the stack and Franklin
C doesn't support inline assembly very well -- so the pushing is done with C code and assembles to 4 or 5 instructions
just to push a byte onto the stack, where one "push" could have done it.
Also, Franklin C is buggy -- using a register inside the ISR, such as a dummy statement "++DPL;" does not cause
Franklin C to save DPL -- but Keil C does save DPL as you would expect.
Maybe your C compiler can improve on this, bringing the code size way down and improving context switch time.
The C compiler will generate code to push various registers onto the stack on entry to the ISR, and this is where there is
great variation between compilers. SCREEM51 requires that A,B,PSW,DPTR,and R0--R7 (bank 0) be pushed.
Anything not automatically pushed needs to be explicitly made to. Basically, any register used by a task must be saved
on the stack by the ISR.
It should be easy to port SCREEM to other compilers and CPUs, because it's so darn simple.
I would like to thank James Stewart, third-year engineering student at Edith Cowan University, for some improvements to the efficiency of the code for SCREEM. He got the size down to 288 bytes, and I worked on it some more and v1.3 is now 258 bytes (v1.1 was 297 bytes). Note that James has also rewritten SCREEM totally in assembly, linkable with C application code, and got it down to a remarkable 132 bytes total. |
Get SCREEM51.ZIP (only 20K bytes) NEW VERSION 1.3
Create a directory, say C:\screem51, and unzip into it.
PLEASE NOTE: If you develop a major enhancement to SCREEM, such as porting to another microprocessor, and you want to make it free for everyone, I'll be happy to host it on the public pages, or link to your site.
You'll see some greyed-out menu items. These are intended to be implemented in later versions.
A superb feature of GOOSEE for those learning C is that data elements can be drawn on the screen to represent fairly complex data types. For example, you can easily draw visually a pointer to a pointer to a function, and GOOSEE will take care of composing the correct C data definition. However, GOOSEE uses recursion to analyse complex data compositions, and currently there are limitations. For example, a pointer to a pointer to a pointer to a function comes out wrong -- but, would you ever need such a thing? (I'll either fix that one or not allow it to be constructed).
Anyway, let me know if any data definition that you require doesn't compose to C correctly. Note also that you may have a peculiar C compiler, that won't accept valid ANSI code. Check that first if possible, before contacting me.
A very small percentage of PC (about 1%) reported some operational problems with GOOSEE version 1.0, related to scrolling with the mouse and to display of the elements in the window. The latest version is looking real good, with only a couple of people reporting difficulties -- let me know if GOOSEE misbehaves on your system. The current problems seem to concern fonts on Win NT -- wrong fonts and/or missing text in dialog boxes.
Version release notes (entries get taken off the to-do list and put in here as they're completed).
Here's the official to-do list (in no particular order of urgency, so let me know if you want one of these in a hurry):
Home: http://www.goosee.com/explorer/
(c) Copyright 2000 Barry Kauler.