HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
0707
Wakuchanhsposcmpの命令だけでだいたいのOS作る方法教えてください10解決


Wakuchan

リンク

2022/7/7(Thu) 22:05:09|NO.96761

現在、他のスレッドでみつけたHSPOSCMPをつかってOSを作成しようと考えております
ただ、考えた結果、問題があり、それを今回は教えてもらおうと思い質問しました

rnd
strlen
onkey(一部)
onclick(一部)
exist
randomize
pset
mes(print)
pos
cls
picload
color
line
boxf
mouse
repeat 〜 loop
wait
end
stop

この命令だけでOSを作る方法はありますか?
もちろん、button命令などがないので、キー操作などで考えているのですが
自分ではわかりません
プロの方、わかる方教えてください



この記事に返信する


f(出張前)

リンク

2022/7/8(Fri) 05:48:25|NO.96762

命令リストが本当にそれだけなら

■真面目にOSを言ってる場合

・無理。話にならない。

・ハードウェアにアクセスしない
 メモリを管理しない
 実行ファイルをロードして実行しない
 プロセス?スレッド?なにそれおいしいの?
 …を前提にすればワンチャン?
 何をオペレートするんやって話になりそうだが…

■勘違いを引き起こしやすい表現「OSもどき」という名の
 グラフィカルシェル風ランチャーを言っている場合。
 (だから、新人さんが勘違いしないかっこいい名前考えてやれよと(以下略

・ワンチャンある?
 外部の実行ファイルを呼び出す手段はなさそうなので
 ランチャー部分も「ランチャー風」になる。
 …まあ大抵の自称もどきはそうか。

・bufferもgcopy(及びその関連)も無いなら
 背景をpicloadできるとしてその他は
 諸々全部lineとboxfとmesとcolorで描く事になる。
 控えめに言っても地獄やで。
 つまりズバリと言うとエクストリーム大回転アイアンメイデン(精神判定)や。

■いっそ別の方向へ飛び立ってみる場合
・CUIもどきならできそう?
 画面のスクロールできそうにないが…。



zakki

リンク

2022/7/9(Sat) 12:03:13|NO.96767

HSPOSCmpのサンプルは実装できてるので、そのサンプルをOSというなら
「OSを作る方法」はサンプルのmain.hspとドキュメントがまんまその方法です。
それで足りないならこういうことやりたいけどどうしたらと質問すると
具体的な回答あるかもしれません。

HSPOSCmpはasだけで何か作れないってことはないにしても、
基本的には30日でできる! OS自作入門本を読みながら遊ぶためのものじゃないかと思います。



Wakuchan

リンク

2022/7/10(Sun) 14:01:55|NO.96777

そのhsposcmpで、簡易的なosが作りたいのです
Windowsのような高品質のものは無理なので、
マウスカーソルで処理を選択してやるみたいな感じです



沢渡

リンク

2022/7/10(Sun) 17:53:39|NO.96778

しばしば話題になるHSPOSCMPですけれども、
ちょっと命令一覧をしみじみ眺めてみた感じ、
「データの読み書きに関する命令が無いに等しい」
「できることと言えば、計算の他は簡単な描画や乱数の取得、
 キー入力やマウス入力の検出と、あとは一応文字列が使えるぐらい」
「gotoやgosubすら無い。returnが存在しないということは、
 おそらくユーザ定義命令やユーザ定義関数も使えない」
「inputは存在しない」「配列も存在しない」
「onclickやonkeyはあっても、returnが存在しないあたりからして、
 onclick gosubやonkey gosubは不可」

…正直な話、「これで何をどうしろっていうんだ」という感想しか出ないですね。
質問者さんが言うところの「OS」というのがどういったものを指しているのか
いまいち見えてきませんが、この仕様では「ちょっとした簡単なプログラム」ですら
満足に作れるかどうか怪しいレベルですし、
果たしてOSと呼べるようなものを作れるのかどうか…。

ちょっと縛りプレイのつもりで占いプログラムを作ってみましたが、
非効率の極みみたいなコードしか書けず、
もうあまりやりたくはありませんね。

//HSPOSCMPで使える(らしき)命令だけでバイオリズム占い。 //実際に試す気はないので、動かなくてもたぶん対応はできません。 *phase1 //フェイズ1、誕生日の入力 color 0,0,0 : boxf : color 255,255,255 pos 0,0 : mes "誕生日をYYYYMMDDの形で入力してください" x=0 : birth=0 //xは何桁入力したか onkey *p1_key stop *p1_key f=0 if (wparam>=48)&(wparam<=57) { t=wparam-48 : f=1 } if (wparam>=96)&(wparam<=105) { t=wparam-96 : f=1 } if f { birth=birth*10+t pos x*10,20 : mes t x++ if x=7 : onkey *p1_fin } stop *p1_fin f=0 if (wparam>=48)&(wparam<=57) { t=wparam-48 : f=1 } if (wparam>=96)&(wparam<=105) { t=wparam-96 : f=1 } if f { birth=birth*10+t pos x*10,20 : mes t //誕生日の修正ユリウス日を取得 y=birth/10000 : m=birth/100\100-2 : d=birth\100 //mは月から2を引いたもの if m<=0 : y-- : m+=12 mjd1=365*y + y/4 + y/400 - y/100 + 30*m + 59*m/100 + d - 678912 //ここからフェイズ2、占いたい日を入力 pos 0,40 : mes "占いたい日をYYYYMMDDの形で入力してください" x=0 : tgtday=0 onkey *p2_key } stop *p2_key f=0 if (wparam>=48)&(wparam<=57) { t=wparam-48 : f=1 } if (wparam>=96)&(wparam<=105) { t=wparam-96 : f=1 } if f { tgtday=tgtday*10+t pos x*10,60 : mes t x++ if x=7 : onkey *p2_fin } stop *p2_fin f=0 if (wparam>=48)&(wparam<=57) { t=wparam-48 : f=1 } if (wparam>=96)&(wparam<=105) { t=wparam-96 : f=1 } if f { tgtday=tgtday*10+t pos x*10,60 : mes t //占いたい日の修正ユリウス日を取得 y=tgtday/10000 : m=tgtday/100\100-2 : d=tgtday\100 //mは月から2を引いたもの if m<=0 : y-- : m+=12 mjd2=365*y + y/4 + y/400 - y/100 + 30*m + 59*m/100 + d - 678912 //ここからフェイズ2、占いたい日を入力 prm=mjd2-mjd1 //誕生日から占いたい日までの経過日数 //占い開始 sinは使えないので値の範囲からおおまかに判断 //身体値 pos 0,80 mes "身体:" x=prm\23 if (x=0)|(x=11) : mes "調子を崩すかもしれません。要注意です。" if ((x>=1)&(x<=1)) | ((x>=10)&(x<=10)) : mes "やや好調です。" if ((x>=2)&(x<=3)) | ((x>=8)&(x<=9)) : mes "好調です。" if ((x>=4)&(x<=7)) : mes "非常に好調です。" if ((x>=12)&(x<=13)) | ((x>=22)&(x<=22)) : mes "やや低調です。" if ((x>=14)&(x<=15)) | ((x>=20)&(x<=21)) : mes "低調です。" if ((x>=16)&(x<=19)) : mes "かなり低調です。無理は禁物です。" //感情値 mes "感情・感性:" x=prm\28 if (x=0)|(x=14) : mes "調子を崩すかもしれません。要注意です。" if ((x>=1)&(x<=2)) | ((x>=12)&(x<=13)) : mes "やや好調です。" if ((x>=3)&(x<=4)) | ((x>=10)&(x<=11)) : mes "好調です。" if ((x>=5)&(x<=9)) : mes "非常に好調です。" if ((x>=15)&(x<=16)) | ((x>=26)&(x<=27)) : mes "やや低調です。" if ((x>=17)&(x<=18)) | ((x>=24)&(x<=25)) : mes "低調です。" if ((x>=19)&(x<=23)) : mes "かなり低調です。無理は禁物です。" //知性値 mes "知性:" x=prm\33 if (x=0)|(x=16) : mes "調子を崩すかもしれません。要注意です。" if ((x>=1)&(x<=2)) | ((x>=14)&(x<=15)) : mes "やや好調です。" if ((x>=3)&(x<=5)) | ((x>=12)&(x<=13)) : mes "好調です。" if ((x>=6)&(x<=11)) : mes "非常に好調です。" if ((x>=17)&(x<=19)) | ((x>=31)&(x<=32)) : mes "やや低調です。" if ((x>=20)&(x<=21)) | ((x>=28)&(x<=30)) : mes "低調です。" if ((x>=22)&(x<=27)) : mes "かなり低調です。無理は禁物です。" mes mes "同じ誕生日で占いを続けますか?[Y/N]" onkey *yn } stop *yn if wparam=89 { color 0,0,0 : boxf 0,40,639,479 : color 255,255,255 pos 0,40 : mes "占いたい日をYYYYMMDDの形で入力してください" x=0 : tgtday=0 onkey *p2_key } if wparam=78 { mes "何かキーを押してください" onkey *phase1 } stop



Wakuchan

リンク

2022/7/10(Sun) 19:51:32|NO.96779

みなさんありがとうございました
OSの本を買うことにしました



zrs90(5さい)

リンク

2022/7/10(Sun) 22:27:46|NO.96780

osを作るのであれば

●BIOS(UEFI)
●osって何
●OSの役割や機能

まず、この辺りも外部検索して、色々見て下さい。
どう言った命令の実装等が必要か理解出来ます。
(※CM、企業案件が多いので、閲覧時は注意。
その為、URLは省略しました。)


●30日でできる! OS自作入門 について

安い本でないので、pc書籍の取扱のある
大きい書店等で、現物を見た上で
購入する事をおすすめします。
(※現物は、1〜2回しか扱っているのを
見ていないです。)

...確か、Linuxベースで、mikan os というos
を作る内容だったと思います。

mikan os で検索すれば
この本の事や、mikan os に色々実装した方々の
記事等もヒットします。
先に見ておくと良いでしょう。

後、詳しくは知りませんが、ネット上で
コミュニティ的な物もあるようです。


追記。

hsposcmp より上の事が出来ますが
hsposcmpと同様に製作、実装には
c言語等の知識も必要になります。



zakki

リンク

2022/7/10(Sun) 22:32:47|NO.96781

OpenHSPのhsp3rdやhsp3rtestを参考にしてHSPOSCmpのtolset/hspboot/haribote/hsp.cを実装しつつ
はりぼてOSカーネルに足りない機能を追加してくみたいな感じになるので普通にCではりぼてOS改造するより難易度高いですね。
goto/gosub/return等の制御構文やバイナリファイルIOは頑張れば実装できそうですが、
それ以上の機能はOpenHSPのC++実装をC実装しつつ不足を埋めてくの大変そう。

ふと思ったのはHSPでOS作りたいって時にカーネルに重点を置くの方向性がずれてて、
HSPでX11ウィンドウマネージャやWaylandコンポジタ作れるライブラリあると独自カーネル作成よりは手軽に
独自デスクトップ作れて楽しそうじゃありません?



Wakuchan

リンク

2022/7/13(Wed) 10:30:55|NO.96798

わざわざありがとうございます。
買う前に、本屋などに行って検討します



zrs90(5さい)

リンク

2022/7/13(Wed) 11:37:10|NO.96799

●訂正と追記。

zakki さん ご紹介の書籍は
30日でできる! OS自作入門 (2006?2009?年発売)

私が紹介した、mikan osは
ゼロからのOS自作入門 (2021年発売)
の書籍内容でした。大変申し訳ないです。

どちらの書籍も、ネット上に
記事、内容の感想等は、ありますので
書籍タイトル名等で検索してみて下さい。

...とは言え、この書籍どちらも
Linux(ubuntu)、c言語等が理解出来ている事、少しアセンブラ言語等まで入って来ますので
覚悟して下さい。後、新本で買うと、一冊あたり4000円以上、吹っ飛びます。


hsposcmp については、当掲示板の過去スレッドにもある通り
openhsp の理解が必要で、c言語等で
os動作に不足している、hsp3の命令を、自分で実装しないといけない
地獄のような仕様(!!)...

掲示板で、話題になるたびに検索してますが
開発も10年程止まったままで
ネット上で、参考になる記事は
まず出てこないと思いますが
...頑張ってみて下さい。期待しています。



Wakuchan

リンク

2022/7/13(Wed) 15:33:43|NO.96800

ありがとうございます



ONION software Copyright 1997-2023(c) All rights reserved.