ときどきの雑記帖 RE* (新南口)
Garbage Collector
例の番組
については書きません (観てるけどね)
ゴミ収集車
ちょいと用事があって会社を休んだ日が 燃えるごみ収集の日だったのだけど、 回収に使われているクルマが 軽トラックでしかもオープンな荷台でちょいとびっくり。
あれだとそんなに積めない気がするんだけど その分台数が多いとか? (そうすると必要な人数が…)
これの5番かな。
狭い路地などでのごみ収集に活躍しています。
なるほど。
ホームドア
秋葉原asterisk(*)α : JR秋葉原駅総武線ホームにホームドアが設置(2025/04/03)
南武線の方が先に全線設置されるとは思わなかった😄
Excel
Altair BASIC
ちょっと「写経」しつつ眺めてみた。
MID$のルーチン。
MID$:   XCHG            	;PUT THE TEXT POINTER IN (H, L)
        MOV     A,H     	;GET THE FIRST CHARACTER
        CALL    PREAM2  	;GET OFFSET OFF STACK AND MAKE
                        	;SURE DOES NOT = 0.
        PUSH    B       	;PUT OFFSET ON TO THE STACK
        MVI     E,255   	;IF TWO ARG GUY, TRUNCATE,
        CPI     ")"
        JZ      MID2    	;[E] SAYS USE ALL CHARS
                        	;IF ONE ARGUMENT THIS IS CORRECT
        SYNCHK  44      	;COMMA? MUST DELINEATE 3RD ARG.
        CALL    GETBYT  	;GET ARGUMENT IN [E}
MID2:   SYNCHK  ")"     	;MUST BE FOLLOWED BY )
        POP     PSW     	;GET OFFSET BACK INA
        XTHL            	;SAVE TEXT POINTER, GET DESC.
        LXI     B,LEFT2 	;WHERE TO RETURN TO.
        PUSH    B       	;GOES ON STACK
        DCR     A       	;SUB ONE FROM OFFSET
        CMP     M       	;POINTER PAST END OF STR?
        MVI     B,0     	;ASSUME NULL LENGTH STR
        RNC             	;YES, JUST USE NULL STR
        MOV     C,A     	;SAVE OFFSET OF CHARACTER POINTER
        MOV     A,M     	;GET PRESENT LEN OF STR
        SUB     C       	:SUBTRACT INDEX (2ND ARG)
        CMP     E       	;IS IT TRUNCATION
        MOV     B,A     	;GET CALCED LENGTH IN B
        RC              	;IF NOT USE PARTIAL STR
        MOV     B,E     	;USE TRUNCATED LENGTH
        RET>            	;RETURN to LEFT2
GW BASICでもそうだったような記憶があるけど(要確認)
LEFT$と共有している部分があって、
上記のRET(>は条件アセンブルの終端マーカー(たぶん))で
LEFT2に飛んでくる
LEFT$:  CALL    PREAM   	;TEST THE PARAMETERS
        RRA     A       	;LEFT NEVER CHANGES STRING POINTER
LEFT3:  XTHL            	;SAVE TEXT POINTER
        MOV     C,A     	;OFFSET NOW IN [C}
LEFT2:  PUSH    H       	;SAVE DESC. FOR FRETMP
        MOV     A,M     	;GET STRING LENGTH
        CMP     B       	;ENTER STRING WANTED?
        JC      ALLSTR  	;IF #CHARS ASKED FOR.GE.LENGTH.YES
        MOV     A,B     	;GET TRUNCATED LENGTH OF STRING
        XWD     "U1000,"021	;SKIP OVER MVI USING "LXI D,"
ALLSTR: MVI     C,0     	;MAKE OFFSET ZERO
        PUSH    B       	;SAVE OFFSET ON STACK
        CALL    GETSPA  	;GET SPACE FOR NEW STRING
        POP     B       	;GET BACK OFFSET
        POP     H       	;GET BACK DESC POINTER.
        PUSH    H       	;BUT KEEP ON STACK
        INX     H       	;MOVE TO STRING POINTER FIELD
IFN     LENGTH=2<
        INX     H>
        MOV     B,M     	;GET POINTER LOW
        INX     H       	;
        MOV     H,M     	;POINTER HIGH
        MOV     L,B     	;GET LOW IN L
        MVI     B,0     	;GET READY TO ADD OFFSET TO POINTER
        DAD     B       	;ADD IT
        MOV     B,H     	;GET OFFSET POINTER IN [B,C]
        MOV     C,L     	;
        CALL    STRA02  	;SAVE INFO IN DSCTMP
        MOV     L,A     ;GET# OF CHARS TO MOVE IN L
        CALL    MOVSTR  ;MOVE THEN IN
        POP     D       ;GET BACK DESC. POINTER
        CALL    FRETMP  ;FREE IT UP.
        JMP     PUTNEW  ;PUT TEMP IN TEMP LIST
ALLSTRにジャンプで来た場合は 「命令の途中」に飛び込む形になるので ジャンプでなく来た場合と実行される命令が変わるという 8ビット機時代にはそれなりに見られたワザがここでも。
最後の方で呼んでいるMOVSTRはこう
MOVSTR: INR     L
MOVLP:  DER     L       ;SET CC'S
        RZ              ;0, NO BYTE TO MOVE
        LDAX    B       ;GET CHAR
        STAX    D       ;SAVE IT
        INX     B       ;MOVE POINTERS
        INX     D       ;
        JMP     MOVLP   ;KEEP DOING IT
Z80ならLDIRとか使うんですかね(遅いけど)
ついでにREMの処理部分。 ここでもDATA文と共有している部分がある
IFN     STRING,<
DATA:   XWD     "O1000,"01      ;"LXI B," TO PICK UP ":" INTO C AND SKIP
        ":"                     ;"DATA" TERMINATES ON ":"
                                ;AND 0, ";" ONLY APPLIES IF
                                ;QUOTES HAVE MATCHED UP
IFE     LENGTH=2,<ELSE:>        ;EXECUTED "ELSE"S ARE SKIPED
;
; NOTE: REM MUST PRESERVE [D,E] BECAUSE OF "GO TO" AND ERROR
;
REM:    XWD     "O1000,"O16     ;MVI C,    THE ONLY TERMINATOR IS 0
        XWD     "O1000,0        ;NO-OPEARATION
                                ;"DATA" ACTUALLY EXECUTES THIS 0
        MVI     B,0             ;INSIDE QUOTES THE ONLY TERMINATOR IS ZERO
EXCHQT: MOV     A,C             ;WHEN A QUOTE IS SEEN THE SECOND
        MOV     C,B             ;TERMINATOR IS TRADED, SO IN "DATA"
        MOV     B,A             ;COLONS INSIDE QUOATATIONS WILL HAVE NO EFFECT
REMER:  MOV     A,M             ;GET THE CHARACTER
        ORA     A               ;ZERO IS ALWAYS A TERMINATOR
        RZ
        CMP     B               ;TEST FOR THE OTHER TERMINATOR
        RZ
        INX     M
        CPI     34              ;IS IT A QUOTE?
        JZ      EXCHQT          ;IF SO TIME TO TRADE
IFE     LENGTH=2,<
        ;
        ; WHEN AN "IF" TAKES A FALSE BRANCH IT MUST FIND THE APPROPRIATE "ELSE"
        ; TO START EXECUTION AT, "DATA" COUNTS THE NUMBER OF "IF"S
        ; IT SEES SO THAT THE "ELSE" CODE CAN MATCH "ELSE"S WITH
        ; "IF"S. THE COUNT IS KEPT IN [D]
        ;
        SUI     IFTK            ;IS IT AN "IF"
        JNZ     REMER           ;IF NOT, CONTINUE ON
        CMP     B               ;SINCE "REM" CAN'T SMASH
                                ;[D,E] WE HAVE TO BE CAREFUL
                                ;SO ONLY IF B DOESN'T EQUAL
                                ;ZERO WE INCREMENT D. (THE "IF" COUNT)
        ADC     D               ;CARRY ON IF [B] NOT ZERO
        MOV     D,A>            ;UPDATE [D]
        JMP     REMER>
これを読む限りでは
マルチステートメントの区切りの:で
REM文は終わらないですね。
BASICの方言マップをまとめ中#BASIC pic.twitter.com/4UsHWB1WwI
— bugfire2009 (@bugfire01) April 5, 2025
新刊近刊
セガ 体感ゲームの時代
これはちょっと愉しみなタイトル
人生で残酷なことはドラゴンズに教えられた
人生で残酷なことはドラゴンズに教えられた (小学館新書 489) | 富坂 聰
本屋で見かけた。
4月中旬新刊予約受付中
— 書泉_MATH (@rikoushonotana) April 6, 2025
『数学を生み出す脳』中井智也(岩波科学ライブラリー)
数量の大まかな把握はヒトだけでなく多くの動物にもできるが、ヒトだけが正確に数え上げ計算する能力をもつ。その能力に必要なのが数の言葉だ。数学的思考の起源は言語にあるのだろうか。我々ヒトにとって数学とは何か。… pic.twitter.com/GIKiHlr1fE
awk
gawk
5.3.2がリリースされた
ONLY bug reports should be submitted to the bug-gawk list. All other questions should use the help-gawk@gnu.org mailing list.
そういやそういうメーリングリストもあったっけか。
FORTRAN Compiler on IBM 704
FORTRAN DAY
“Sometime in early April 1957 we felt the system was sufficiently bug-free to distribute to all 704 installations. " - John Backus, THE HISTORY OF FORTRAN I, II, AND III
とあるんだけど、この言葉を書いたのはバッカスじゃないような… (ドキュメント全体はバッカスの名前で出されている)
歌詞
塩沢さん発言に何か沢山リピありがとうございます。ついでにふと思い出したゴーショーグンの話して良いですか?オープニングの話ですが。首藤さんが歌詞作るにあたり「やだよ小さい子供が戦いに憧れるような歌作るの!でもアニメ作るからには売れないと困るし!うーん!」と悩んだ結果「カッコいい→
— 浪花愛 (@nezumigogo) April 5, 2025
けど、敢えて全く意味のない歌詞」にしたという。作曲の方の力もあって名曲に仕上がりましたが、歌詞に意味が無いのはそういうことだそうです。この後の小説もお読みの方はご存知だと思いますが、首藤さんの願いは「それでも生きぬけ!」だと思います。ポケモンの「ミュウツーの逆襲」も観た時思った。
— 浪花愛 (@nezumigogo) April 5, 2025
へー。
sum
【難読クイズ配信中!】@m3_engineering をフォローして最新技術情報を楽しもう
— エムスリー エンジニア公式 (@m3_engineering) February 5, 2025
わざわざこういう問題に出されるということは なにか面白い(?)仕様でもあるんだろうかとドキュメントを見てみると
sum(iterable, /, start=0)
start と iterable の要素を左から右へ合計し、総和を返します。 iterable の要素は通常は数値で、start の値は文字列であってはなりません。
引数にiterableをとるのか(まあ言われてみれば納得)。
でも二番目の/はなんだろう?
sumのほかにも
class bool(object=False, /)
class complex(number=0, /)
class complex(string, /)
class complex(real=0, imag=0)
eval(source, /, globals=None, locals=None)
などで使われているけど、やっぱり/の意味が分からん。
で、調べてみるとこういうことらしい
プログラミング FAQ — Python 3.13.2 ドキュメント
関数の引数リストにあるスラッシュ (/) は何を意味しますか?
パラメータ関数の仮引数にあるスラッシュは、それより前にある仮引数は位置専用引数であることを示します。 位置専用引数は、外で使える名前を持たない仮引数です。 位置専用引数を受け付ける関数の呼び出しにおいて、 実引数はその位置だけに基づいて仮引数に対応付けられます。 例えば、 divmod() は位置専用引数を受け付けます。 そのドキュメントは次のようになります:
\>>>help(divmod) Help on built-in function divmod in module builtins: divmod(x, y, /) Return the tuple (x//y, x%y). Invariant: div*y + mod == x.この引数リストの末尾にスラッシュは、この2つの仮引数が両方とも位置専用引数であることを意味します。 したがって、divmod() をキーワード引数を使って呼び出すとエラーになります:
\>>>divmod(x=3, y=4) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: divmod() takes no keyword arguments
もしもプログラミング言語がコーヒーだったら
If programming languages were coffee: Java would be a corporate chain latte, Python a smooth cold brew, and C++ the espresso that makes you question reality at 2AM. Open to other takes, of course.
— No Starch Press (@nostarch) April 6, 2025
リプライがいくつかついているけど これに一番ウケた
rust isn’t coffee, it’s monster energy drinks. if you see a shy boy with beautiful eyelashes drinking one, you’ve got max 4-6 months before she’s off the market forever.
— akano (@princessakano) April 6, 2025
NHK総合が4月13日の日曜深夜つまり月曜未明、アニメ版ミャクミャク様を一挙放送した上でタローマンを流すという気の狂ったもとい豪快な編成を組んでる。
— 猫もみ (@akky_OD_No7) April 8, 2025
うむ、支払った受信料は正しく使われているようだ。 pic.twitter.com/yYciG3bfWQ