Forum Home
Press F1
 
Thread ID: 40019 2003-11-25 14:00:00 My program is finally finished! DangerousDave (697) Press F1
Post ID Timestamp Content User
194582 2003-11-25 14:00:00 Hello all,
NCEA exams are over, so i've started programming again (yah for all night programming sessions, this was posted at about 2 . 50am) Some of you may have remembered a previous post with details about my program, ComEmm, well i've finally finished it with a dramatic makeover (tm)! It is now known as Oolong 1 . 0 and the UI has changed but should still be fairly intuitive . It has save/load functions which were a pain to implement but very much worth it . A new instruction has been added, a comment function for documentation (syntax: !!), although it is probably useless its a standard feature for most languages .

For those who don't know, Oolong is a program designed to emulate a very basic computer . There are memory addresses and a program counter for instructions . An instruction set is created out of assembly like instructions and loaded into the program counter, where it is prosessed in a way that the user can see exactly what is happening inside the computers memory .

Those who know programming, specifically assembly instructions should understand this pretty well, those who don't can probably get the hang of it pretty quick (an understanding of binary counting is needed) . There is a help file to get you started .

Anyways enough ramble, here's a link:

geocities . com/dangerousdavefoobaz/Oolong1 . zip


Any comments, problems or just general replies would be great! I am looking at expanding the program as well, as mentioned in a post previously by rsnic i believe, i want to add a stack and registers . . . but this is how i planned 1 . 0 to be as, so maybe version 1 . 5 will see these added .

Note: this program is not designed for performance applications, it has been made to show how at a very basic level, computers work .

I'm off to sleep, thanks in advance
- David
DangerousDave (697)
194583 2003-11-26 00:18:00 any replies please???

- David
DangerousDave (697)
194584 2003-11-26 00:24:00 Looks good. Just what exactly would one use that program for? I'm still a bit confused.

Maybe my lack of programming knowledge has something to do with it..
somebody (208)
194585 2003-11-26 00:38:00 It has been made as a teaching device how programming and memory access etc works at the lowest level, it is not meant to make 'real' programs or anything, just small to medium sized programs on instruction coding .

- David
DangerousDave (697)
194586 2003-11-26 01:05:00 Oh ok. somebody (208)
194587 2003-11-26 01:17:00 I have only had time to have a quick look but I like what i see.

I hope to have a proper play with it tomorrow.
robsonde (120)
194588 2003-11-26 02:34:00 BUG: Not releasing memory when program is closed.

Feature: Can the temp file go into the temp directory instead of creating it's own dumping ground?
Kame (312)
194589 2003-11-26 02:35:00 Oh and resizable window Kame (312)
194590 2003-11-26 02:35:00 Looks like I might have to crank out my notes from CS111 on assembly programming I'm picking. -=JM=- (16)
194591 2003-11-26 02:49:00 Just made a new program, it multiplies two numbers and prints results . In doing this program, i've figured out a few changes that still need to be made:
- Make it easier to delete/insert instructions, especially when you have made a mistake at the top of the list
- Implement some form of error checking so that files can be edited in a text editors
- Storing general numbers from in the code, i . e . storing the number 1 in a memory address without having to enter it
- Change binary counting in the Instruction Set to make it easier to enter instructions .

Well heres the new code for something that multiplies two numbers:

000000 - ENT
000001 - STO 000000
000010 - STO 000011
000011 - ENT
000100 - STO 000001
!! this is needed to enter 1
!! this takes one away from
!! number so that it doesn't
!! multiply once too many . .
!! (finishes at 0)
000101 - ENT
000110 - STO 000010
000111 - RET 000001
001000 - SUB 000010
001001 - STO 000001
!! THis is where multiplication loop starts
001010 - RET 000000
001011 - ADD 000011
001100 - STO 000011
001101 - RET 000001
001110 - SUB 000010
001111 - STO 000001
!! If loop counter is zero then
!! it will jump out to print results
!! otherwise jmp back to top of
!! loop
010000 - JM0 010010
010001 - JMP 001010
!! end of loop
010010 - RET 000011
010011 - PRI
010100 - END


*phew* the whole program basically adds the number wanted to be multiplied, subtracting one from the program counter each time until it is zero . . .

Try and enjoy
- David
DangerousDave (697)
1