dspinellis / GW-BASIC

Assembling Microsoft GW-BASIC from 1983
MIT License
48 stars 12 forks source link

Minimal OEM.ASM #6

Open dmsc opened 4 years ago

dmsc commented 4 years ago

With this minimal OEM.ASM at least the interpreter shows the initial banner.

OEM.ASM.txt

Sadly, still far: image

dmsc commented 4 years ago

Also, the link order is significant: see the comments on BIBOOT.ASM, the first 256 bytes of the CS are overwritten. This means that GWDATA must be the first file in the link command.

tkchia commented 4 years ago

Hello @dmsc,

I built on your OEM.ASM, and here is what I have so far:

https://github.com/tkchia/GW-BASIC/commit/5ce9e0f0c6d07445b8705a18b8b7efae9e4af304

20200527

Thank you!

dmsc commented 4 years ago

Hi!

tkchia@5ce9e0f

Wow, you have a working screen :)

I see that you added breakpoints on all unimplemented functions, instead I was parsing the linker map output and adding breakpoints from the symbol addresses.

mdasoh commented 4 years ago

tkchia, I just went to your repository this morning and cloned and compiled with jwasm/jwlink (very convenient!) and encountered the following issues with your (largely working!) gwbasic.exe:

1) cannot scroll from the bottom of the screen
2) pressing F9 KEY for example offers no " " after it
3) TIMER ON and TIMER OFF aren't there
4) SHELL isn't there
5) pressing the INS button doesn't enter insert mode
6) pressing the DEL or BS buttons deletes from the end of the line, not from here
7) listing my program, I may get spaces after each line, or incomplete length
 - with this, it may be related to not scrolling properly

all in all I'm glad to see gwbasic working so well! here is the code I tested with:

1 X$ = ""
2 GOTO 10
5 STOP
6 CLS
7 PRINT TIME$"] "X$;
8 RETURN
10 CLS
30 ON TIMER( 3 ) GOSUB 6
33 TIMER ON
36 CLS
40 PRINT TIME$"] "X$;
41 Y$ = INKEY$
42 IF LEN( Y$ ) = 0 THEN GOTO 41
48 X$ = X$ + Y$
50 IF Y$=CHR$(27) THEN GOTO 5
52 IF Y$=CHR$(8) THEN GOSUB 92
53 IF Y$<>CHR$(13) THEN GOTO 36
60 PRINT "  [working]"
62 TIMER OFF
70 SHELL X$
72 X$ = ""
75 LOCATE 24, 1
78 PRINT "taco. . .";
80 Y$ = INPUT$( 1 )
90 GOTO 10
92 WELL = LEN( X$ )
93 IF WELL < 2 THEN RETURN
94 X$ = LEFT$( X$, WELL - 2 )
95 RETURN
tkchia commented 4 years ago

Hello @mdasoh,

Thanks for your feedback. Since it is (mostly) regarding my repository, I thought it will be best to move the discussion there: https://github.com/tkchia/GW-BASIC-export/issues/5 .

Thank you!

(Edit: I have moved my fork to GitLab: https://gitlab.com/tkchia/GW-BASIC .)