NEW AUTO 3,1 Enable MASM3 auto line num .LIST OFF .OP Z80 Target CPU, must = CPU header level .OR $2000 usually $2000, any value > $100 ok .TF root/helloworldz *-------------------------------------- .INB inc/a2osx.i *-------------------------------------- * Zero Page Segment, up to 32 bytes *-------------------------------------- .DUMMY .OR ZPBIN ZS.START * MyPtr .BS 2 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START ccf jp (HL) TODO .....Z80 jmp table .DA #$80 Z80 .DA #1 BIN Layout Version 1 .DA #0 S.PS.F.EVENT .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT * Add any address you want be relocated by loader * Usefull if you have to pass EFFECTIVE address to an API call... L.MSG.HELLO .DA MSG.HELLO .DA 0 *-------------------------------------- * Called once at process creation * Put code for loading LIB here *-------------------------------------- CS.INIT ccf ret *-------------------------------------- * Called until exit with CS * if RUN exits with CC, RN entered again *-------------------------------------- CS.RUN ld de,(L.MSG.HELLO) ld a,SYS.PutS call A2osX.ZCALL .8 ld a,0 Exit Code = Success scf QUIT Process ret .9 ld a,E.SYN Exit Code = Error scf QUIT Process ret *-------------------------------------- * Called if option S.PS.F.EVENT enabled in Header * Timer Event : every 10th seconds *-------------------------------------- CS.DOEVENT scf ret *-------------------------------------- * Called once, when RUN exited with CS * Put code for unloading LIB here *-------------------------------------- CS.QUIT scf ret *-------------------------------------- CS.END *-------------------------------------- * Initialized DATA *-------------------------------------- * Put your constant here : MSG.HELLO .AZ "Z80 Hello World" *-------------------------------------- * Per Process DATA segement (0 filled before INIT) *-------------------------------------- .DUMMY .OR 0 DS.START DS.END .ED *-------------------------------------- MAN SAVE root/helloworld.z