You are not logged in.

Dear visitor, welcome to Forum64. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

ssdsa

C64 Asm Coder - S.E.S./Crest

  • "ssdsa" started this thread
  • Send private message

member since 54 month member since 54 month member since 54 month

1

Thursday, August 25th 2011, 11:13pm

BASIC-Multitasking - Gibt's das schon?

Gibt es schon irgendwo ein C64-Tool (Hilfsprogramm in Assembler), mit dem es möglich ist, mehrere BASIC-Programme gleichzeitig laufen zu lassen? Oder ein BASIC-Programm quasi im Hintergrund laufen zu lassen, während gleichzeitig im Vordergrund ein weiteres BASIC-Programm läuft? Die beiden Programme sollen sich die CPU 50:50 teilen.

Ich könnte so ein Tool auch selber programmieren -- Ich hätte da schon ein paar konkrete Umsetzungsideen -- aber vielleicht gibt's das ja schon, z.B. aus einem 64'er-Magazin oder der Happy Computer?

sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,339

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

2

Thursday, August 25th 2011, 11:15pm

ächz. ja. ich erinner mich dunkel an sowas... vielleicht input64? "task64" oder so? :)
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.

Lysosom

Master

  • "Lysosom" is male
  • »Lysosom« is a verified user

Posts: 2,491

Date of registration: Nov 21st 2009

Location: Ramsey, NJ

  • Send private message

member since 36 month member since 36 month

3

Thursday, August 25th 2011, 11:23pm

Ich glaub auch, da war mal was in der Input64.
Hardware (Retro): Amiga 1000 (NTSC), Amiga 1200 (PAL), Amiga 2000 (PAL), Amiga 4000 (PAL), Schneider CPC 464, Atari Portfolio, Sharp PC E 220 / Hardware (aktuell) : 2 Gaming PC,iMac 20", Powerbook, Amigaone 500 (eingetroffen) / Software: C64 (Power64),Amiga (E-UAE, WinUAE, JanusUAE), AROS (auf altem IBM Thinkpad)

BASIC-FAN

Intermediate

  • "BASIC-FAN" is male

Posts: 373

Date of registration: Aug 7th 2011

  • Send private message

member since 18 member since

4

Thursday, August 25th 2011, 11:37pm

Ich meine so etwas schon in der 64er
gesehen zu haben.
Schönen Gruß, Dirk

sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,339

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

5

Thursday, August 25th 2011, 11:41pm

scheinbar gleich in der ersten input64 (1/85) "zwei mal basic im speicher". die beschreibung ist aber mehr als dürftig, so richtig ist mir nicht klar was das nun macht :)
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.

Lysosom

Master

  • "Lysosom" is male
  • »Lysosom« is a verified user

Posts: 2,491

Date of registration: Nov 21st 2009

Location: Ramsey, NJ

  • Send private message

member since 36 month member since 36 month

6

Friday, August 26th 2011, 12:49am

Das, an was ich mich erinnere, erlaubt vier Basicprogramme im Speicher gleichzeitig laufen zu lassen und es war auch ein Demo mitgeliefert...
Hardware (Retro): Amiga 1000 (NTSC), Amiga 1200 (PAL), Amiga 2000 (PAL), Amiga 4000 (PAL), Schneider CPC 464, Atari Portfolio, Sharp PC E 220 / Hardware (aktuell) : 2 Gaming PC,iMac 20", Powerbook, Amigaone 500 (eingetroffen) / Software: C64 (Power64),Amiga (E-UAE, WinUAE, JanusUAE), AROS (auf altem IBM Thinkpad)

Endurion

Sir Bugalot

Posts: 2,277

Date of registration: Aug 17th 2005

Location: weitweg

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

7

Friday, August 26th 2011, 8:07am

Ich kenne nur von der Happy Computer "Wurmli", das war Splitscreen, oben ein Snake-Spiel, und in der unteren Hälfte lief Basic.

8

Friday, August 26th 2011, 8:13am

Ich kenne nur von der Happy Computer "Wurmli", das war Splitscreen, oben ein Snake-Spiel, und in der unteren Hälfte lief Basic.

Das ist aber ganz gewöhnlicher Assemblercode im Interrupt.

ssdsa

C64 Asm Coder - S.E.S./Crest

  • "ssdsa" started this thread
  • Send private message

member since 54 month member since 54 month member since 54 month

9

Friday, August 26th 2011, 9:12am

scheinbar gleich in der ersten input64 (1/85) "zwei mal basic im speicher". die beschreibung ist aber mehr als dürftig, so richtig ist mir nicht klar was das nun macht :)
Das klingt zumindest interessant - wo hast Du denn die Beschreibung gefunden? Gibt es das Programm auch irgendwo zum Download? Wenn ich das richtig verstanden habe, lag der Input64 (1/85) noch keine Disk, sondern eine Cassette bei. Stimmt das?

Das, an was ich mich erinnere, erlaubt vier Basicprogramme im Speicher gleichzeitig laufen zu lassen und es war auch ein Demo mitgeliefert...
Wow! Aber wo genau gab's das?

Ich kenne nur von der Happy Computer "Wurmli", das war Splitscreen, oben ein Snake-Spiel, und in der unteren Hälfte lief Basic.
Das habe ich über Google auch gefunden, weil es so schön auf dem Begriff "Multitasking" herumreitet. Das Spiel in der oberen Bildschirmhälfte ist allerdings ein "normales" Assembler-Programm, das im Raster-Interrupt läuft. Insofern läuft da nur 1x BASIC.

Lt.Dan

verifizierter Nutzer

  • "Lt.Dan" is male
  • »Lt.Dan« is a verified user

Posts: 2,218

Date of registration: Jan 24th 2010

Location: Flensburg

Marketplace entries: 4

  • Send private message

member since 36 month member since 36 month

10

Friday, August 26th 2011, 12:00pm

Muss es unbedingt programmiert sein? > RUN September 87 :) Allerdings sollte man dafür ein wenig Lötkenntnisse mitbringen.
Hier der Link zum PDF:entfernt von cp2 - KEINE Links auf Zeitschriftenscans - sowas bitte per PM!
edit: Ok, dann googlet halt selbst nach "BMS System C64"

This post has been edited 2 times, last edit by "Lt.Dan" (Aug 27th 2011, 1:49pm)


11

Friday, August 26th 2011, 12:20pm

Hmm, es _sollte_ reichen einfach die gesamte ZP + rest ($0000-$0400) hin- und herzuwechseln ;-)
Netter Overhead.

12

Friday, August 26th 2011, 12:24pm

Wie so ziemlich alles, was irgendwann mal im Netz war, konnte ich es bei mir auf der Festplatte finden :)
Input 64 85-01 (1985)(-)(de).d64
Programm darf nur mit ,8 geladen werden, weil irgendwie die Ladeadresse daneben ist. Was es genau macht, hab ich noch nicht geguckt.

ssdsa

C64 Asm Coder - S.E.S./Crest

  • "ssdsa" started this thread
  • Send private message

member since 54 month member since 54 month member since 54 month

13

Friday, August 26th 2011, 12:31pm

Hmm, es _sollte_ reichen einfach die gesamte ZP + rest ($0000-$0400) hin- und herzuwechseln ;-)
Netter Overhead.

Genau so stelle ich mir das auch vor: Man hängt sich in den IRQ-Vektor $0314/0315 ein, und wechselt einfach X mal pro Sekunde hin und her ($0000-$03FF und alle CPU-Register inkl. Stackpointer), fertig.
Aber: Man sollte außerdem aufpassen, dass man im IRQ nicht einfach immer brav nach $EA31 springt, weil dann die Tastatureingaben (BASIC-Tastaturpuffer 198 und 631 ff.) abwechselnd im gerade aktiven Task laden würden, und das Cursor-Blinken (ZP-Adr. fällt mir grad nicht ein) auch dauert vom gerade aktiven Task gesteuert würde.
Ich stelle mir das eher so vor, dass zwar beide Tasks 50:50 CPU-Zeit bekommen, aber dass ein Task dauernd "im Vordergrund" ist (im Sinne von Tastatureingaben und Cursor-Blinken), und dass der andere Task "im Hintergrund" das Cursor-Blinken nicht beeinflußen kann und auch keine Werte in den Tastaturpuffer bekommt.
Naja, und vermutlich kann man sich auch noch mehr Feinheiten ausdenken...

ssdsa

C64 Asm Coder - S.E.S./Crest

  • "ssdsa" started this thread
  • Send private message

member since 54 month member since 54 month member since 54 month

14

Friday, August 26th 2011, 12:40pm

Wie so ziemlich alles, was irgendwann mal im Netz war, konnte ich es bei mir auf der Festplatte finden :)
index.php?page=Attachment&attachmentID=37536
Programm darf nur mit ,8 geladen werden, weil irgendwie die Ladeadresse daneben ist. Was es genau macht, hab ich noch nicht geguckt.

Danke!
Also, das macht gar nicht so viel: Es erzeugt ein kurzes Assembler-Programm ab $9001 bis $9035.
Mit SYS 36865 ($9001) wird es einmalig initialisiert.
Es teilt den BASIC-Speicher in zwei Hälften:
1.) $0801 - $4FFF
2.) $5001 - $8FFF
Außerdem rettet es einige BASIC-Pointer im Bereich $07E8 ... 07FF.
Man kann dann beliebig oft manuell mittels SYS 36917 ($9035) zwischen den beiden BASIC-Bereichen hin und her wechseln und so zwei BASIC-Programm gleichzeitig im Speicher haben.
Die BASIC-Programme können aber nicht gleichzeitig laufen.

15

Friday, August 26th 2011, 12:41pm

Und hier noch ein zweites Image. Da scheint zwar komischerweise das Programm nicht drauf zu sein, dafür aber die "Anleitung"...
Input 64 85-01 (1985)(Verlag Heinz Weise)(de).d64

EDIT: hab jetzt erst gesehen, dass Du es schon analysiert hattest... naja, ein Image mehr oder weniger ist ja nicht tragisch :)

16

Friday, August 26th 2011, 1:41pm

Moin !

Ich bin mir auch ziemlich sicher, daß es ein Programm in der Input 64 gab. Habe die Ausgaben ja damals immer eher bekommen, leider weiss ich nicht mehr welche Ausgabe es sein könnte. Ansonsten selbt ist der Mann und ran an das Werk ! :rauch:

Gruss

Bit Breaker(s)
Wer Stroh im Kopf hat, fürchtet den Funken Wahrheit !

ssdsa

C64 Asm Coder - S.E.S./Crest

  • "ssdsa" started this thread
  • Send private message

member since 54 month member since 54 month member since 54 month

17

Saturday, August 27th 2011, 12:05am

OK, OK! Ich habe es jetzt selber programmiert. In dem angehängten D64-Image befindet sich ein BASIC-Programm namens "START". Es lädt ein kleines Assembler-Programm nach, das "MULTITASK" heißt und bei 49152 beginnt. Anschließend schreibt es mit PRINT Befehle zum Nachladen und Starten eines anderen BASIC-Programms namens "BASIC2" auf den Bildschirm, und füllt den Tastaturpuffer mit 2x Return-Taste. Dann führt es den Befehl SYS 49152 aus.
Daraufhin passieren ab jetzt zwei Dinge gleichzeitig:
1.) Das BASIC-Programm "START" läuft hinter dem Befehl SYS 49152 einfach normal weiter. Es empfängt jedoch keine Tastendrücke mehr; man kann es also mit RUN/STOP nicht mehr abbrechen.
*und*
2.) Das BASIC-Programm endet, und die Tastendrücke aus dem Tastaturpuffer werden ausgeführt. Dadurch wird das BASIC-Programm "BASIC2" geladen und gestartet.
Jetzt laufen zwei BASIC-Programme *gleichzeitig*!
Wie cool ist das?!

(Ach ja: Ich habe RUN-STOP / RESTORE nicht abgefangen. Es hängt vom Zufall ab, welches der beiden BASIC-Programme danach mit LIST sichtbar ist... Ist halt erst mal nur eine Machbarkeitsstudie.)
ssdsa has attached the following file:
  • multitask.d64 (174.85 kB - 10 times downloaded - latest: Aug 28th 2011, 11:02pm)

sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,339

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

18

Saturday, August 27th 2011, 12:07am

Quoted

Wie cool ist das?!

mein erster gedanke war eher "wie langsam ist das?" :o) ich fand das task switchen in C schon unerträglich langsam =D
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.

ssdsa

C64 Asm Coder - S.E.S./Crest

  • "ssdsa" started this thread
  • Send private message

member since 54 month member since 54 month member since 54 month

19

Saturday, August 27th 2011, 12:09am

Quoted

Wie cool ist das?!

mein erster gedanke war eher "wie langsam ist das?" :o) ich fand das task switchen in C schon unerträglich langsam =D

Probier's doch erst mal aus! ;)

sauhund

ist falsch abgebogen

  • "sauhund" is male

Posts: 20,339

Date of registration: Jul 16th 2005

Location: zuhause

  • Send private message

member since 90 month member since 90 month member since 90 month member since 90 month member since 90 month

20

Saturday, August 27th 2011, 12:15am

hehe. garnicht soooo schlimm. ein ähnlicher test mit meinem "kernel" für cc65 scrollt in der geschwindigkeit bei ca 5 aktiven threads/tasks/wasauchimmer (da muss ich aber auch nur teile vom stack und ca 20 weitere bytes umkopieren)

wenn man da irgendwie sinnvoll noch "sleep" reinfummelt könnte das vllt sogar sinnvoll benutzbar werden :)
http://www.hitmen-console.org http://magicdisk.untergrund.net
Die Furcht vor der freimütigen Antwort kann auch robuste Charaktere befallen.