以下は、sic/xe マシンのアセンブリ言語コードです。
clear a
ldx #128
loop jsub getc
rmo a,s
shift s,4
jsub getc
addr s,a
stch 0,x
tixr x,x
j loop
getc td input
jeq getc
rd input
comp #4 ;if input is 4 then eof
jeq 80 ;jump to start of program
comp #48 ; compare to charcter 0
jlt getc ;skip charcters less than 0
sub #48
comp #10 ;if result is less than 10, conversion is complete
jlt return
sub #7 ;for hex digits A through F
return rsub
input byte x'F1'
これはブートストラップ ローダーです...このプログラムの目的は、デバイス F1 から読み取り、入力を 80 から始まるアドレスに格納することです...私の質問は、なぜシフト s,4.. .入力を一度取得すると、その ascii 値から元の値を見つけ、それを「ループ」に送信して保存します...プログラムからは、最初の半バイトの文字のみがループに送信され、次にその他...これが事実である場合、最初にcharcterの最初の半分のバイトがあるため、最初の半分のASCII操作は入力の実際の値を提供しません...また、プログラムが「getc」に戻ったとき' 残りの半バイトを取得するために、代わりにリスト内の他の文字が読み取られることはありません...以下は同じ本からのヘルプの行です...
each byte of the code to be loaded is on device F1 as two hexadecimal digits