HI-TECH C256{(!?)ghLg

[n߂]

@͂́̕A͂߂́A{z[y[W MSX C MagazinéAHI-TECH C
ƂAHI-TECH CɊւR[i[ŃX^[g܂B
@̌AHI-TECH C Resource kit #1쎞ɉMECAuHI-TECH C
256{(!?)ghLgvƂāAJ܂B
@{ł͊{IɁA}jAɏĂȂƂAp}jAǂނ
ʓ|ŁAӂقǂ_𒆐SɏĂ܂B


1.C

[\[Xt@CEwb_t@Cɂ]
@HI-TECH C͌XACP/Mpɍꂽ̂ŁAt@C̑傫128oCgPʂ
Ȃ邽߁AeLXgt@C̏I1AH(EOF)ŔF܂B\[Xt@CE
wb_t@C̏Iɂ́A1AH(EOF)tȂ΂Ȃ܂B
@A1AH(EOF)tYƁA\[Xt@CɔFꂸAFX
ssN܂BႦ΁AP1.COMillegal character(00H)ƂG[
oAXɒvIȂƂł́ACPP.COMwb_t@C̃CN[h
sƂƂ܂B
@ƂɁA@Ń\[Xt@CāAMSXŃRpCĺA
Z[uEOFtݒɂ铙āACق悢Ǝv܂B


[ftHgchar^]
@HI-TECH Cł́AftHgchar^MSX-CƂ͈ႢAchar^łB
́Achar^̕ϐ128ȏ̐Aint^ȂǂɃLXgA
printfn֐ŁA16iŏo͂ƕ₷Ǝv܂B̏
ȂǁAӂǂƎv܂B

[萔̌^ɂ]
@HI-TECH Cł́A萔̌^̓ftHgłshort^̂悤łB
@̃vOsĂ݂܂傤B

#include	<stdio.h>

int main()
{

	char c; /* signed char̕ϐc */
	c = 0xff;

	if (c == 0xff){
		printf("True\n");
	}else{
		printf("False\n");
	}

	return(0);
}

@ϐcɂ0xff(-1)Ăɂ炸AʂɂFalseƕ\
B
@ȂAȂ邩ƂƁA萔short^ƂĈ̂ŁAif̒
oĂ鎮̉Eӂɂ0xff0xff==255Ƃɉ߂ǍʁA-1 !=
 255ƂƂŁA̒l͋UƂȂ܂B
@̓ɋCȂ΂ȂȂ̂́AMSX-CvOڐA
ƂłBMSX-Cł́Achar^́Aunsigned char^ƂĈ̂ŁAL
vO̕ϐc̒l255ƂȂA255 == 255ƂƂŁA̒l͐^Ƃ
܂B̂߁A̓lăvOȂł̂܂܃R
pCĂ܂ƎvʓsǂNƂ܂B
@ɂA萔long^菬^̕ϐƂ̉Žʂshort^
Ɏ܂͈͂𒴂邱Ƃ҂ꍇA萔̌L(long^)AF(
_̌^)̃}[J[tA(:1234L)^𖾎Kv
傤B

[V{Ɋւ]
@HI-TECH C̃V{̓At@xbgƁAA_,$,?Ƃ̂gA
1ڂɐgȂƂAI[\hbNXȂ̂łBڂ̂́A
('?'). The first character may not be numeric. Upper and
lower case are distinct. The following are all legal and
distinct symbols.

An_identifier
an_identifier
an_identifier1

@Ƃ悤ɁA啶ƏʂƂ_łB@
nł́AOłAMSX M80 & L80 gn(MSX-CA
Small-C)ł́AȂ̂ŁAfɊт܂傤B

[vvZbT̃oOƌdlƌ???]
@܂ÃR[hĂB

#define HI_TECH_C 1

#ifdef HI_TECH_C /* HI-TECH C */
#else /* MSX-C */
#pragma nonrec
#endif
@̃R[hł́A#ifdef HI_TECH_C#else܂łLƂȂǍɊւẮA͂łB
@AHI-TECH Cł͂ȂA#pragma nonrec(MSX-CLSI-C̔ċA[h錾)̕߂̂ŁApȌxoĂ܂B
@HI-TECH Cł́A#pragma𑼂̃vvZbTƂ͕ʂɁAubNɊ֌WȂ߂Ƃĉ߂Ă̂ŁÂ悤ȎN̂Ƃ͎v܂ARpCˑ̕Ǝv̂ɁAȂƌ̂͋ĈłB

[large offset (warning)]
@HI-TECH CŃvOgłƁAvOɂ͌肪ɂ
炸ACGEN.COMlarge offset (warning)ƂxoĂ邱Ƃ
܂B̌x͉ӖĂ̂ł傤?

@̓́Aautoϐւ̃ANZX@ɂ܂B

@HI-TECH Cł́Aautoϐ̓X^bN烁mۂ܂Amۂ
ւ̃ANZX@Aʂ̕ϐƔzϐňقȂ܂B
@zϐł́AHLWX^DEWX^ŃAhXvZāAHLW
X^gAhXwgLD߂ŃɃANZX܂B
@ɑ΂āAʂ̕ϐł́AIXWX^ƃItZbgŃAhXw肷
LD߂ŁAɃANZX̂ŁAItZbgɂAhXẃA
128oCg܂ł͂܂B
@̂߁A1̊֐autoϐ128oCg𒴂āAʂ̕ϐ`ƁA
_(ϐ) large offset (warning)
@Ƃxo܂B

@Ⴆ΁A
@int i,k[128];
@Ƃ`ł́Ak[64]ȍ~́A128oCg𒴂܂Ak͔zϐȂ̂ŁA
large offset x͏o܂B
@ȀԂςāA
@int k[128],i;
@Ƃ`sƁAíA128oCg𒴂AʕϐȂ̂ŁAlarge offset
 xo܂B

@ۂ́Aautoϐ128oCgȏ̃X^bNmۂꂽubN
ɑ݂ꍇɂ́AzϐƓl̃ANZX@ĝŁA肪o
Ȃꍇ܂AꍇɂĂ̓vO͐ɂ炸A
autoϐւ̃ANZX@Ŗ肪o\蓾̂ŁAȂׂ1̊
̒autoϐ128oCgɉĂقǂł傤B

[switchɏ鎮]
@HI-TECH Cł́Aswitch̎long^͏܂B
@LSI-C V3.3cHłłswitch̎long^̂ŁA悤ȋC
ŎĂƂ͂܂Ă܂܂B
@̏nvOĂۂ͂̕ӂɂCKv
łB

[RpC𑬂悤!]
@MSXHI-TECH CgĂāANXs[h̒xȂǂɃCC邱
Ǝv܂B
@AȂHDD̂悤ȍȋLuƁAڑ邽߂MEGA-
SCSIȂǂ̂悤ȃC^[tFCXĂƂȂAȋLu
RpC̎st@CEwb_t@CECuƌRpC
ɕKvȃt@CRpCɎgԃt@C(t@C$C?.TƂȂ
Ă)ȋL}̂ɈڂƂŁARpC邱Ƃ
܂B
@Ƃ͂Â悤ȏ[͊ȒPɂ낦̂ł͂܂B
ŁATvȂǂςƂƂǂ̂炢邩ɂ
čl@悤Ǝv܂B

@ɋ\[Xt@ĆA发ɕKoĂ"Hello,world"̗ނłB
̎ł́A256KRAMǉȊO̓m[}FS-A1STR800CPU,
MSX-DOS2ŗpԂŖ{t@CRpCʂƂɁAǂ
ƂǂꂾȂ邩ɂčlĂ݂܂B
@RpCԂɊւẮAXgbvEHb`𗘗pĎ蓮Ōv
Ȃ̂ŁAɂ͌܂A悻̑x̖ڈ͒͂߂Ǝv܂B

#include	<stdio.h>

int main(int argc,char *argv[])
{
	printf("This is a sample file.\n");
	return(0);
}

 RpCɂ Zk 
ׂẴt@CFDDɒu 142b --- 
̃t@ĈAe|t@CRAMDISKɒu 118b 24b 
XɃCut@C(LIBC.LIB)RAMɒu 51b 27b 
XɎst@CRAMDISKɏo͂ 28b 23b 

@̂悤ȏȃvÕRpCłAL}̂Ȃ̂ɂ
邾ŁARpCԂȂZȂĂ̂܂B
@e|t@CȋL}̂ɒu@́AvO傫Ȃ
ɂĒԃt@C傫Ȃ̂ŁAvO傫ȂɂėL
̂ł͂ȂƎv܂B
@܂A\[Xt@C𕪊ۂ́AɔႵăe|t@C
𗘗p@Ȃ̂ŁAXɗLƍl܂B
@Cut@CuꏊAst@Co͂ꏊȋL
}̂ɂ@́AIuWFNgt@CNۂɗLƂȂ̂ŁAv
ŐK͂Ɋւ炸RpCx̍}̂ŁAm[}
A1ST̂悤ɍȋL}̂gpł@ŁA쐬v
OK͂Ȃ͂D悳ق肵RpCx
オ}Ǝv܂B

@]kłAK6 200Mhz,RAM64MWin98}VőS̃t@CHDDɒu
CP/MG~[^Z/EM𗘗pēTvRpCƂ̎s
1bāAIȂ܂łɑłˁB 

[Ȃ?]
@HI-TECH CŃvOĂƁAȂƂ|̃G[bZ[WoăRpCłȂꍇ܂B
@ۂɃȂꍇ܂A(TPA)\ɂꍇłAvŐLq~XɂāÃbZ[Wo邱Ƃ悤łB
@ۂɂ̓vŐLq~XȂ̂ɁA֌WȂȃbZ[WôŁA(ۂɂ͓ŃsɘQĂƎv̂ŁA\֌W邯ǁB)̃vO͈ȂƂoɊׂ肪łAۂ̓vO̕ɖ肪ƂƂ\̂ŁAvO񌩒Ă݂Ă͂ł傤?


[s𒴂?]
@HI-TECH CMSX@ŎgĂƃsɔY܂邱ƂƎv܂B
@AȂMSXEFAN̕t^fBXNȂǂŁAView-KitĂȂA̒HX.COM𗘗p邱ƂŁAKvȐ錾sƂłA̕ߖł邱ƂŁAsŷł͂Ȃł傤B
@MSX-DOS2Ɍ肳Ap̃e[ut@CKvƂ_͂܂AN킵Ă݂Ă͂ł傤B


2.Cu

[HI-TECH C̃Cuɂ]
@HI-TECH C̃CúA({I)Pt@CɂP̊֐
OBJt@C(̊֐1OBJt@CɂĂ悢AeiX
ʂŌ)LIBR.COMɂČŁALIBR.COM̊eR}h́A
OBJt@CPʂŁAp܂B
@P̃t@Cł́AďoɂāACu̒̔zl
Kv܂B(܂AO͉RĂB)郂W[ʂ
W[𗘗pƂAp郂W[́Ap郂W[
OɖĂ͂Ȃ܂B
)outvdp.ovdpio.oVDPIO𗘗pƂ(libr s R}h̏o̓C[W\L)
outvdp.o U VDPIO D _outvdp VDPIO𗘗p
vdpio.o D VDPIO VDPIO𗘗p

@ALIBR.COM̃R}h̓̓Cu̒̔zlĖ
ŁA(Ԉ⁩l̂ɂȂ)Cu݌vۂ
ӂKv܂BȂ݂ɁALIBRRR}hŁÃW[
ւƂ́AW[̈ʒu͍ւÕW[̈ʒu
łB̓̓eiXɎg܂BVKW[
ԌɂȂ܂B

[Cȕɂ]

@JLINK̓R}hC̍珇ɃCu֐N
܂ÃCu֐Lꍇ͍ł̃t@CɗL
قN܂B
jlibf.lib,libc.libprintf֐LƂ
LINK -Z -Ptext=0,data,bss -C100H -Ouser.COM CRT.O user.O LIBF.LIB LIBC.LIB
@̏ꍇuser.comɂlibf.libprintf֐N܂B
@̐gƁAlibc.libɂWiIȁj֐̊֐
ւ鎖ł܂BȎg鎞AW֐ɕss
ɎgƗǂł傤BȂ݂ɁAVXeł́ALIBF.LIBLIBC.LIB
printf,scanfn̊֐ĂA_ZgǂŁA
N郂W[ςƂƂsĂ܂B

@̃Cut@C(gq.LIB)̃Cu֐𑼂
Cut@C̓̊֐ōւ鎞́Aւ֐̑O
Nt@Cւ֐ĂяoKv܂B
jlibe.lib,libc.libopen֐LƂ
LINK -Z -Ptext=0,data,bss -C100H -Ouser.COM CRT.O user.O LIBe.LIB LIBC.LIB
@̗ŁACRT.OyсAUSER.O̒̃W[open֐ĂяoĂ
ꍇ́ALIBE.LIBopen֐LɂȂ܂ACRT.OyсAUSER.O̒
W[open֐ĂяoĂ炸ALIBC.LIB̒ɂ݂̂fopen֐
ĂяoĂāAfopen֐open֐ĂяoĂꍇLIBC.LIB
open֐W[N܂B

@ÃCut@C(gq.LIB)̃Cu֐𑼂
IuWFNgt@C̓̊֐ōւ鎞́Aւ֐
OɃIuWFNgt@CĂ΁Aւ֐̑O
Nt@Cւ֐ĂяoKv͂܂B
jlibe.o,libc.libopen֐LƂ
LINK -Z -Ptext=0,data,bss -C100H -Ouser.COM CRT.O user.O LIBe.o LIBC.LIB
@̗ŁACRT.OyсAUSER.O̒̃W[open֐ĂяoĂ
ꍇALIBE.oopen֐LɂȂ܂ACRT.OyсAUSER.O̒
W[open֐ĂяoĂ炸ALIBC.LIB̒ɂ݂̂fopen֐
ĂяoĂāAfopen֐open֐ĂяoĂꍇłLIBE.O
open֐LɂȂ܂B
@͕̐W̃Cuł́AX^[gAbṽChJ[hWJ
yсAI/O_CNgG~[V[`KvɉăN
ۂɗpĂ܂B

[CũoO]

@HITECH-4.PMA̒ɂAMSX-C Library݊CuALIBGɂ́AFX
oO悤łBႦ΁AMSXBIOS.H̋L@ARpC
G[oȀAȓȂAƂ̂
悤łBɁAAMSXBIOS֘A[`ɑ悤łB
̂߁ALIBG𗘗pۂ́AoO̊mFAoO̖֐삵
Kv܂B

3.AZu

[AZuł̊֐̏]

@HI-TECH Cł́A֐̈́AX^bNēn܂Bp[^́A
X^bNɋti܂AWOn̕WI\ŁA
gGfBAēzjŐς܂AX^bN̐擪ɂ͖߂Ԓn
ς܂܂Bchar^̃p[^́AʃoCgɒu܂Bς܂ꂩ́A
ꒆ̃f[^A^̕\ƓłB
֐Ăяo sub((short int)1,'A',(unsigned short int)-3,(long int)65536);
ɂāAp[^͎Ɏ悤ɐݒ肳܂B
(SP+2):01H
(SP+3):00H
(SP+4):41H
(SP+5):?? (ӖȂ)
(SP+6):FDH
(SP+7):FFH
(SP+8):00H
(SP+9):00H
(SP+10):01H
(SP+11):00H
@float,double^ɊւĂ͖łAꒆ̃f[^A^̕\
ς܂Ǝv܂BimFj
@֐Ăяoɖ߂ہA|C^Ashort int^Achar^ł́A
HLWX^ɒl邱ƂŁA֐lԂo܂Blong^̏ꍇ́A
ʂQoCgHLWX^ɁAʂQoCgDEWX^ɓ邱ƂŁA
֐lԂo܂Bfloat,double^ɊւĂ͖łBm(..)m
@܂AAZuŁAfloatdouble^g悤Ȃ̂l͏Ȃ
v̂ŁAgl͊eĂ݂ĂB

@char^̃p[^[͉ʂɒuA̗(SP+4,5)ʃoCg̒l
słB̓_ɒӂȂƁAchar^̃p[^[AZu
Lq֐ɓnۂɎvʃoǑɂȂ̂ŁACt܂傤B

@AZuŊ֐Lqۂɂ́AAZuł́Aglobal錾
OV{gpׂ̈̐錾sKv܂B̍ہA֐̑OɁA
'_'KvƂȂ܂B
jfunc֐AZuŏꍇ


	psect	text	;Jɑ΂AvOł邱ƂB

	global	_func	;'_'+֐



_func:	ld	hl,0
	ret

@܂AWX^ɊւĂłAIX,IYWX^́Aۑ悤ɂ
BCŏꂽ֐A֐ĂяoہAIX,IYWX^̒l
ۑĂȂAĂяo̊֐ACŏĂꍇAĂяo
֐IXWX^gĂ邽߂łB̕ӂ́ARpC
AZu\[XƂ悢ł傤B

@Cŏ֐ł́AcsvƂ[`gĂ悤łA
IXWX^oRł̈̃ANZX̓Xs[hx̂Łij[jbN\
Ă݂悤IjȂׂgȂǂł傤B
@csvgƂ́An߂ɁAcsv,cretOV{錾(global csv,cret)A
֐̖`ŁAcsvR[(call csv)A֐߂ۂɁAcret
Wv(jp cret)Kv܂B̎AIX,IYWX^͕ۑ܂B
@csvgƂ̃p[^̃ANZX@́AixWX^̒lɃItZbg
l̎wAhXgāAANZX邱ƂɂȂAԍŏ
p[^(ix+6)ɓǍ́AʃAhXɌăp[^
ς܂Ƃ`ɂȂĂ܂B
).֐Ăяo sub((short int)1,'A',(unsigned short int)-3,(long int)65536);
(IX+6):01H
(IX+7):00H
(IX+8):41H
(IX+9):?? (ӖȂ)
(IX+10):FDH
(IX+11):FFH
(IX+12):00H
(IX+13):00H
(IX+14):01H
(IX+15):00H


[HI-TECH C}NAZuƂĎg!]

@Cũ\[Xt@CƁAAZuŏꂽ\[XR܂BǂāACuɂȂĂ邩ƌƁÃt@CZAS.COM
AZuāAlibrŌ邱ƂŃCuɂȂĂ܂B
̎番悤ɁAHI-TECH C̓P[^uAZu܂ł܂B
@ł́AúAC͕ȂǁAAZû͕ŁA
HI-TECH CAZuƂĎgvƂƂ͂ł̂ł傤H
́ACGXłBł́AAZuƂāAHI-TECH CgꍇA
ǂ̂悤ɂāAg΂悢ɂāATvĐ܂B

@́Aグƕ\鏉IȃTvgA
AZû݂ŁAMSX-DOSCOMt@Cɂ͂ǂ΂悢ɂ
܂B

@HI-TECH CPȂ郊P[^uAZuƂĎgƂ́A
ŒZAS.COMLINK.COM݂̂gԂɂΗǂłB܂A
CuALIBR.COM₻̑̃vOLƕ֗Ȃ̂ŁA
tCXg[ɂƂ͂܂񂪁B

@܂́AʂɁA\[XvO܂B
@vO{̂Oɂ́A'psect text'ƏāAAZuɁA
vOGAƋĂ܂Bf[^Oɂ́A
'psect data'ƏāAAZuɁAf[^GAƋĂ܂B
@܂AO[oV{gƂŁÃW[AW[
[`ĂяoAW[̃AhXQƂƂƂ
ł܂B̎́AĂяoW[ƌĂяo郂W[̗ŁA
@global x
@ƏƂŁAO[oV{gƂł܂B̐錾Ȃ
x̓\[Xt@C̒ŁALłBvɁACextern錾A
O֐̐錾̂悤Ȃ̂łB

@́AʓIȃAZűL@ŁAƂł܂B

@̋KɑďvOATEST.ASłB

<PROG>

-TEST.AS
	psect text	;̓vOłB



	global sample	;O[oV{sample`܂B



BDOS	equ	0005H

	jp	sample	;ԈႦāAMS-DOSŎsĂS(^^)
sample:
	ld	de,str
	ld	c,09H
	call	BDOS
	ret

	psect data	;̓f[^ȂłB



str:
	defm	'Hello,world.'
	defb	0dh,0ah,'$'

	end
[EOF]

@\[Xt@CAAZuANs܂B
@AZuɂ́AZASg܂B{Iɂ́A
zas \[Xt@C
@ővłA-oIvVŁAo͂郊P[^uIuWFNg
t@Cw肷邱Ƃł܂B

@ŃALINKg܂BŁAӂ̂́A-CIvVƁA
-PIvVłB܂A-CIvV͏o͂st@C̊JnԒn
w肵܂BMSX-DOSł́A100Hł̂ŁA-C100HƎw肵܂BɁA
-PIvVłAǂɁAvOGAf[^GAu邩
w肷̂łBvOGȀꏊ́A-P̌text=[uAhX]
w肵܂BlɁAf[^GȀꏊ́Adata=[uAhX]
w肵܂BŁA=ȉꍇ́AOɁAw肵GǍɘA
zu܂B
@o͂t@ĆA-OIvVŎw肵܂Bo͂t@C
ɔzuC[Wt@C(vɁAMSX-DOSCOMt@C
悤Ȃ)łB
@-C,-P,-OIvV͕Kw肵܂B

@̎菇̂AMKTEST.BATłB
@̃Tvł́ATEST.ASAZuāATEST.Oo͂ATEST.O
NāAMSX-DOS̎st@CTEST.COM쐬܂BMSX-DOS
st@C쐬̂ŁAvO̔zuAhX=st@C
JnԒn=100HAf[^GÁAvOGÂƂɂ܂B

-MKTEST.BAT
rem AZusȂB
ZAS -otest.O test.as
rem NsȂB
LINK -Z -Ptext=100H,data -C100H -Otest.COM test.O
[EOF]

@āAǂAvOs邩ƌƁAMSX-DOS̏ꍇA
R100Hł̂ŁAvOGA̐擪Ԓn=st@C̊JnԒn
ȂKv܂Bł́Aǂ̃vOGAsł傤H
@́Aԍŏɓǂݍ(R}hC̈ԍ
IuWFNg/Cut@C)̈ԍŏ̃vOGAłB
@̃Tvł́Ajp sampleƂƂ납łB
@HI-TECH C̃Cuł́Aԍŏ̃IuWFNgt@C(CRT.O)
X^[gAbv[`uĂ܂BɍlgƂẮA
JX^}CUXMARK/₩ɃvOΉƌƂ܂B

@ŁAƂ肠AHI-TECH CPȂ}NAZuƂĎgƂ
o悤ɂȂ܂BZAS.COM&LINK.COMɂ͑ɂSqׂ悤Ƃ
CɂȂ邭炢FXȋ@\̂ŁA}jAȂAs낵āA
@\gȂ悤ɂȂĂB

[Cӂ̃W[̃AhXɒu!]

@MSX̃^C}[荞݂́ARAM̃y[W1(4000H-7FFFH)ȍ~ɒuȂƐ
삵܂BɂAw肳ꂽAhXɒuȂƐ퓮삵Ȃ[`
f[^MSXŃvOĂꍇɂ݂͑܂B
@AHI-TECH CŕʂɃvOgłꍇ͎gpAZu
P[^uAZuȂ̂ŁAǂɁAR[hzu邩̓\[Xt@C
iKł́A܂Bł́As낵ȂƔCӂ̃W[
̃AhXɒuƂł܂B
@\[Xt@CiKŁACӂ̃W[̃AhXɒuɂ́A
AZuORG[߂g܂BORG[߂́A
@ORG AhX
@ƏƂŁAȍ~ɑvOf[^̃AhXȍ~ɒu悤
wł܂B
@ORG߂gႪ̃vOłBxstrȍ~text psectƂ
200Hȍ~ɁAxstr2ȍ~text psectƂ180Hȍ~ɎsɃ
[h܂B
@܂Aorg߂̌ʂ𖳌ɂꍇɂ́Apsect߂
(xstr3ȍ~)Aorg߂ŃAhXw肵肵܂Bxstr3ȍ~
text psectƂăxrealstr3ȍ~ɔzu܂B


-

	psect text

	global	sample

BDOS	equ	0005H

sample:				;ORG߂ꍇ̓J-PIvV

				;w肳ꂽAhXȍ~ɔzuB

	ld	de,str2		;ԈႦMS-DOSŎsƔߎSȂƂɂȂ邩

	ld	c,09H
	call	BDOS
	ret
realstr3:

	org	200H		;ORG߂ŃAhXw(200Hȍ~)
str:
	defm	'ORG 200H'
	defb	0dh,0ah,'$'

	org	180H		;̐180Hȍ~ɔzuB

str2:
	defm	'ORG 180H'
	defb	0dh,0ah,'$'

	psect	text		;ORG߂ɂAhXwZbg

str3:
	defm	'Where I stay?'
	defb	0dh,0ah,'$'

	end
-܂

@̃vOtest2.asƂt@CŃZ[uāA̎菇oāA
test2.comƂt@CŃZ[uƂ܂B
-
ZAS -J -N -otest2.O test2.as
LINK -Z -Ptext=100H -C100H -Otest2.COM test2.o
-܂
@ƃł͂̂悤ɂȂ܂B


0100  11 80 01 0E 09 CD 05 00 C9 57 68 65 72 65 20 49  .......Where I
0110  20 73 74 61 79 3F 0D 0A 24 1A 1A 1A 1A 1A 1A 1A   stay?..$.......
0120  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A  ................
0130  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A  ................
0140  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A  ................
0150  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A  ................
0160  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A  ................
0170  1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A  ................
0180  4F 52 47 20 31 38 30 48 0D 0A 24 14 47 14 48 14  ORG 180H..$.G.H.
0190  49 14 4A 14 4B 14 4C 14 4D 14 4E 14 4F 14 50 14  I.J.K.L.M.N.O.P.
01A0  51 14 52 14 53 14 54 14 55 14 56 14 57 14 58 14  Q.R.S.T.U.V.W.X.
01B0  59 14 5A 14 5B 14 5C 14 5D 14 5E 14 5F 14 60 14  Y.Z.[.\.].^._.`.
01C0  61 14 62 14 63 14 64 14 65 14 66 14 67 14 68 14  a.b.c.d.e.f.g.h.
01D0  FF FF 6A 14 6B 14 6C 14 6D 14 6E 14 6F 14 70 14  ..j.k.l.m.n.o.p.
01E0  71 14 72 14 73 14 74 14 75 14 76 14 77 14 78 14  q.r.s.t.u.v.w.x.
01F0  79 14 7A 14 7B 14 7C 14 7D 14 7E 14 7F 14 80 14  y.z.{.|.}.~.....
0200  4F 52 47 20 32 30 30 48 0D 0A 24 1A 1A 1A 1A 1A  ORG 200H..$.....

@C[WIɂPSECTORG߂gāAubN`āAubN
JzusƍlƗǂƎv܂B𗘗pƁA
AZuxŔzuAhXɈˑvOgނƂł܂B
@XɁAw肷AhXdˍ킹邱Ƃł܂BA
₷̂ŁA܂sȂȂقǂł傤B
@܂A킴Ədˍ킹ă\[XĂlɂ͕Ȃ悤
AWv߂R[߂ɏd˂킹āAfobOpɎgƂ
pr͍l܂B

@C̃vȌꍇ́A#asm߂𗘗pāAꂽAZu\[X
ORG߂𖄂ߍނƂl܂B̏ꍇAPSECT߂ŃW[
fORG߂̌͂ȂA\̌ƂȂ̂Őꂽ
AZu\[XȂǁA\ɋCtKv܂B̓Iɂ́A
O[oϐꏊɋCtA֐ŐÓI(static)ϐ
ȂƌƂ܂B

[̋ɂ\]
@O̍ł́Aorg߂găAZuŏꂽW[Cӂ̃AhXɒu@ɂāA܂B
@̕@gĔzuW[̃AhX́APSECT߂ɂAhXǗƂ͓ƗĊǗ邽߁ACӂ̈ʒuɃW[uƂł܂A̔ʁAPSECT߂ɂĊǗ郂W[ƃAhXdȂĂ̌xoȂ̂ŁA\̌ƂȂ܂B
@Ƃ΁ACŏāAPSECT߂ɂAR[hGA100Hn܂郂W[SAMPLEC.OƃAZuŏORG߂ɂA4000Hȍ~IuWFNgzu郂W[SAMPLEA.OƂW[NāAs`t@CSAMPLE.COM쐬Ƃ܂B(L̃R}hC)
LINK -Z -Ptext=100H -C100H -OSAMPLE.COM SAMPLEC.O SAMPLEA.O
@ŁASAMPLEC.ÕTCY傫ȂATEXTW[3F00Hȏ̃TCYɂȂꍇAJASAMPLEC.O4000Hȍ~̓eSAMPLEA.Oŏ㏑邽߁A4000Hȍ~̃vOsꂽꍇA\邱ƂɂȂ܂B
@̏ꍇAǏƂẮAr܂ł͐ɎsĂvO˔@\ƌǏ󂪌܂B
@΍ƂẮAPSECT߂ŃAhXǗ郂W[ȂAORG߂gW[̔zuȂǂāAW[̏㏑NȂ悤ACtKv܂B

[HI-TECH C̃AhXǗ]
@HI-TECH Cł́A傫āA5̕@ŃǗĂ܂B
@1߂́Adata psectɂ̂ŁAl̂O[oϐAl̂֐staticw肳ꂽϐ̃O[vɑAubN܂B̃O[v̕ϐ̃AhX́AJ-PIvVꍇ́A(-Pdata=1000H)-PIvVŎw肵ubN̐擪AhXɁAAhXw肪ꍇAtext psect̒̃AhXɔzu܂B
@2߂́Abss psectɂ̂ŁAl̖O[oϐAl̖֐staticw肳ꂽϐ̃O[vɑAubN܂B̃O[v̕ϐ̃AhX́AJ-PIvVꍇ́A(-Pbss=1000H)-PIvVŎw肵ubN̐擪AhXɁAAhXw肪ꍇAdata psect̒̃AhXɔzu܂B
@3߂̓X^bN𗘗p̂ŁAautoϐ̃O[vɑ܂B֐Ă΂ꂽۂɁA֐ncsv֐ɂāAX^bNϐ̂߂̗̈悪mۂA֐cret֐ɂĊJ܂B
@4߂́AAZuorg߂ŃAhXw肵̈łBAhX́Aorg߂̎wƁAȍ~̃vOR[h̖ߒAf[^Ō肵܂B
@ŌɂȂ̂Aq[v擾郁ŁAsbrk,malloc,calloc֐ɂĎ擾郁ubN̕@ɂĊǗ܂Bmalloc,calloc֐sƁAq[v̐擪X^bNɌāA荂ʃAhX̃擾悤ɂȂ܂Bq[v̐擪́AVXe`V{__HbssŎbss psect̏IɂȂ܂B
@}̂̐}łB


ʃAhX
 0000H         ------------
               |MSX-DOS   |
               |          |
 0100H      - ------------
               |  TPA     |
               |          |
-Ptext=xxxx - ------------
               |text psect|
               |          |
-Pdata=xxxx - ------------
               |data psect|
               |          |
-Pbss=xxxx  - ------------
               |bss psect |
               |          |
__Hbss      - ------------
               |q[v    |
               |    |     |
               |    |/    |
               |          |
               |          |
               |   /|     |
               |    |     |
-Pbss=xxxx  - ------------
               |X^bN  |
               |(autoϐ)|
-Pbss=xxxx  - ------------
               |VXe  |
               |[NȂ|
 0FFFFH        ------------
ʃAhX

[^CCug]
@Cɂ́A[U[CAZuĂяoCûقɁAVXeĂяo^CCu܂B
@^CCúACŏꂽvOŌĂяo֐QŁAZ80ɂ݂͑ȂZ⏜ZA_ZȂǂsĂ܂B
@ŗpƂ͌ĂAʂ̃CuƓl̊֐Ȃ̂ŁAglobal錾Ă΁A[U[AZũvOĂяoƂł܂B
@A|Z⊄ZȂǂ̊{IȉZ͕pɂɌĂяôŁAp[^[X^bNgēnĂẮAsxቺ̂ŁAp[^[WX^gēn肷ȂǁAR[@ʂ̊֐Ƃ͈قȂĂ܂B
@Ƃ΁A16bit̊|ZAZ/]́Â悤Ȍ`ōsƂł܂B


16bit|Z
[` amul
@HLWX^ * DEWX^̉ZsAʂHLWX^Ɋi[܂B
@HL,DEWX^signed̐g܂B

[` lmul
@HLWX^ * DEWX^̉ZsAʂHLWX^Ɋi[܂B
@HL,DEWX^unsigned̐g܂B

16bitZ
[` adiv
@HLWX^ / DEWX^̉ZsAʂHLWX^Ɋi[܂B
@HL,DEWX^signed̐g܂B

[` ldiv
@HLWX^ / DEWX^̉ZsAʂHLWX^Ɋi[܂B
@HL,DEWX^unsigned̐g܂B

16bit]Z
[` amod
@HLWX^ % DEWX^̉ZsAʂHLWX^Ɋi[܂B
@HL,DEWX^signed̐g܂B

[` lmod
@HLWX^ % DEWX^̉ZsAʂHLWX^Ɋi[܂B
@HL,DEWX^unsigned̐g܂B

@̊֐gƁAAZuŏꂽvOȒPɊ|Z⊄ZȂǂ̕GȉZł܂B(gAZuŊ|Z⊄Z@͒m܂^^)B
@܂ACŏꂽvOƉZ[`pł̂ŁAȃɂ𗧂܂B

4.NXJ

[HI-TECH C on CP/M Emulator]

@HI-TECH ĆAX́ACP/MpłACP/MG~[^[ł̓삪
mF܂B́A̕@ɂāAMS-DOS}VƁA
CP/MG~[^Z_EMނɂĐ܂傤B
(CPM.EXEł͂Ȃɓ삵ȂB)
@܂́AMS-DOS}VƁACP/MG~[^Z_EMpӂAZ_EM
st@ĈfBNgɁApXāAłAZ_EM
悤ɂ܂傤B
@ɁAHI-TECH C̐pfBNgAɁAHI-TECH C{
(HITECH-1.PMA)A[JCuWJ܂傤BȂ݂ɁÁA
MSX-DOSȂ̂ŁApb`Kv͂܂B
@ɁAC.COMCP/MG~[^Ŏg悤ɉǂĂ܂܂傤B
@C.C(C.COM̃\[X)


static char *	paths[] =
{
	"LINK",
	"OBJTOHEX",
	"CGEN",
	"OPTIM",
	"CPP",
	"ZAS",
	"LIB",
	"P1",
	"CRT.O",
	"$EXEC",
	"CREF",
};
@ƂȂĂ鏊A


static char *	paths[] =
{
	"z LINK",
	"z OBJTOHEX",
	"z CGEN",
	"z OPTIM",
	"z CPP",
	"z ZAS",
	"LIB",
	"z P1",
	"CRT.O",
	"$EXEC",
	"z CREF",
};
@ƂāACP/MG~[^sāȀŁAeRpC
st@Cs悤ɂĂ܂܂傤B(zƂ̂́AZ_EM
st@CłB)
@ɁAcmdrun֐PɃvO̎sI֐ɏ
܂܂傤Bcmdrun֐MSX̃L[obt@ĝŁA
CP/MG~[^ŎsƖ\鋰ꂪ̂ŁAȕ
Ă܂܂B
)

cmdrun(s)
char *s;
{
	exit(0);
}
@́A悢AC.C̃RpCłB
@HI-TECH CCXg[hCuEfBNgŁA
Z C -Q C[RET]
@Ɠ͂܂B
@łłA$exec.bat


REM 

z CPP -DCPM -DHI_TECH_C -Dz80 -I C.C $C1.T
z P1 $C1.T $C2.T $C3.T
Pause If error occur Hit CTRL-C
z CGEN $C2.T $C1.T
z ZAS -N -oC.O $C1.T
DEL $C1.T
DEL $C2.T
DEL $C3.T
z LINK -Z -Ptext=0,data,bss -C100H -OC.COM CRT.O C.O LIBC.LIB
DEL C.O
REM ܂

@ƏāA$exec.bats܂B
@ŁASāA͊܂B
@́AۂɎs鎞ɂ́A
z C (vÕt@CAgqȂ)[RET]
@ƂāAł$exec.batsƃvÕRpCs܂B
@́AHI-TECH CCP/MG~[^̃}jAǂ݂ȂAD
ĉB

@ŁAHI-TECH C̊JMS-DOS}VɎčsł܂B

@̕@̗_́AMS-DOS}VŊJ\ẑŁArIyɁA
n[hfBXNARAMfBXNAfBXNLbVȂǂ̉b󂯂邱Ƃ
łA\[Xt@CeLXgGfB^ȂǂMSXA@\
\tggłACPU(486ƂAPentium)ƍȃG~[^
ꍇAZ80HI-TECH C𓮂AARpCł
Ƃ_܂B
@ŋ߂́AWindows}VÂɓ̂ŁAF
Ă݂Ă͂ł傤H

[vvZbTւĂ݂]

@HI-TECH Cł́ARpC̍ہA\[Xt@CvvZbTCPP.COMɂ\߁AAZuR[h...ƂߒoāAŏIIɎs\ȃt@C܂B
@vvZbTƗĂƂƂ́AvvZbT𑼂̂̂ɕς邱Ƃł\ƌƂӖĂ܂BAHI-TECH C̃vvZbT荂\E@\ȃvvZbTpłƂȂAЎgłˁB
@ŁACP/MG~[^𗘗pHI-TECH CJŃvvZbTMS-DOSLSI-C 3.3CHł̂̂ɕςăRpCsĂ݂A̖ȂRpCsƂł܂BɂACN[ht@C̃fBNg𕪗邱ƂłAt@C̐₷Ȃ܂B
@̂悤ɁAHI-TECH C̃vvZbT͍ւ̂ŁAsɈڂȂAsɈڂĂ݂̂͂ł傤?

[CP/MG~[^eXg]
@HI-TECH C삷CP/MG~[^ɂ͂ǂ̂悤Ȃ̂̂ł傤?
@ׂ͈͂ŁA삵ǂɂĂĂ݂܂B


G~[^ 삵ǂ 
CP/M program EXEcuter CPM.EXE V0.6 s 
Z_EM Ver.2.0  
MSX-DOS Emulator Ver.0.08 s 

@̎ł́A삷G~[^PނƁAcOȌʂɏIĂ
܂܂ACP/MG~[^͂̑ɂ̂ŁAFXƎĂ݂Ɨ
Ǝv܂B
@CP/MV~[^ Ver 3.0ɊւẮA삵Ƃ̕񍐂󂯂Ă̂ł
Âقł͖mFłB

