Minerva Assembly
-
- ROM Dongle
- Posts: 7
- Joined: Thu Mar 12, 2015 12:02 am
- Location: Stockport, Cheshire, UK
Minerva Assembly
Hi,
Please Hellp !
Okay, so I have downloaded the minerva 1.98 sources. I can't seem to find any kind of makefile, instructions or build plan for how to actually compile/assemble the source into a binary.
I've noticed that others do seem to be assembling/compiling the source, so what files/instructions have you guys got that I haven't and please can I have them or where can I get them ?
Or did I download the wrong sources (I got them off Laurence Reeves site and Dilwyn's site - just in case they were different.)
Cheers,
Dave
[Edited to change 1.89 to 1.98]
Please Hellp !
Okay, so I have downloaded the minerva 1.98 sources. I can't seem to find any kind of makefile, instructions or build plan for how to actually compile/assemble the source into a binary.
I've noticed that others do seem to be assembling/compiling the source, so what files/instructions have you guys got that I haven't and please can I have them or where can I get them ?
Or did I download the wrong sources (I got them off Laurence Reeves site and Dilwyn's site - just in case they were different.)
Cheers,
Dave
[Edited to change 1.89 to 1.98]
Last edited by quantumDavey on Fri Mar 13, 2015 12:58 pm, edited 1 time in total.
Re: Minerva Assembly
And of course if anyone has the details, please send the details to me too so I can make them available with the sources for others who may wish to do the same.
--
All things QL - https://dilwyn.theqlforum.com
All things QL - https://dilwyn.theqlforum.com
Re: Minerva Assembly
I have built a Makefile for the Minerva 1.98 sources some years ago and have it somewhere in svn. It builds Minnie properly without any errors, but as I have never found the time to actually test the resulting ROM image, I have never published it.
Once back home on the weekend, I will try and dig it out. If someone wants the ready-built image for a test, please give me a shout.
Tobias
Once back home on the weekend, I will try and dig it out. If someone wants the ready-built image for a test, please give me a shout.
Tobias
ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
-
- Font of All Knowledge
- Posts: 4610
- Joined: Mon Dec 20, 2010 11:40 am
- Location: Sunny Runcorn, Cheshire, UK
Re: Minerva Assembly
Hi,
I can programme eproms and it would be nice to assemble Minerva.
I can programme eproms and it would be nice to assemble Minerva.
Regards,
Derek
Derek
Re: Minerva Assembly
I have the Minerva 1.98 sources, obtained from either Dilwyn or Laurence. In the directory M_ROM you should find the link file. I just assembled it now and everything appeared to go well. However, the resultant file is 48822 bytes which differs from other rom files, including one I have here called min198_rom weighing in at 48744. Was expecting 48k exactly. Hmm. I have no way of testing beyond that at the moment.
Per
Per
Per
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
Re: Minerva Assembly
That's the tricky bit....
The original build process (which seems to be missing from Dilwyn's sources) built libraries. That is, whatever is not referenced from code will not end up in the binary.
The other thing is: You need to get the order of linked modules right, so that stuff (like the vector tables) ends up in the right places.
And no, the resulting binary doesn't actually need to be exactly 48k (as long as it is smaller, obviously). Mine is a few hundred bytes off as well (size: 48821, to be exact. Funny - Why is this odd and one byte off yours?).
Tobias
The original build process (which seems to be missing from Dilwyn's sources) built libraries. That is, whatever is not referenced from code will not end up in the binary.
The other thing is: You need to get the order of linked modules right, so that stuff (like the vector tables) ends up in the right places.
And no, the resulting binary doesn't actually need to be exactly 48k (as long as it is smaller, obviously). Mine is a few hundred bytes off as well (size: 48821, to be exact. Funny - Why is this odd and one byte off yours?).
Tobias
ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
Re: Minerva Assembly
Tobias,
The link file I mentioned only contains library references. I believe it was put together by Lau himself, so it should be pukka. I attach it here, in case it has gone missing elsewhere. However, this presupposes that you have all the other cct files.
Most Qdos roms are exactly 48k. I thought the padding had to do with burning the Eproms, but on reflection I see that it probably has to do with the way they were acquired (ie Sbytes 0 to 48k)
Anyway some emulators, specifically Qemulator, wants its roms to be 48k - 80k; it wont accept my freshly compiled rom, which is just under. So I had to
and that solved the problem: The Minerva V1.98 rom I just assembled from source seems to run flawlessly - under Qemulator, at least 
Per
PS: I had to add the line
to the head of this link file to make it produce a rom image under Qmake/Qmac/Qlink
The link file I mentioned only contains library references. I believe it was put together by Lau himself, so it should be pukka. I attach it here, in case it has gone missing elsewhere. However, this presupposes that you have all the other cct files.
Most Qdos roms are exactly 48k. I thought the padding had to do with burning the Eproms, but on reflection I see that it probably has to do with the way they were acquired (ie Sbytes 0 to 48k)
Anyway some emulators, specifically Qemulator, wants its roms to be 48k - 80k; it wont accept my freshly compiled rom, which is just under. So I had to
Code: Select all
adr = ALCHP(48 * 1024)
LBYTES 'win1_M_MINERVA198_ROM', adr
SBYTES 'dos3_Minerva198.rom', adr, 48 * 1024
RECHP adr

Per
Code: Select all
input win1_m_ss_lib
input win1_m_io_lib
input win1_m_ip_lib
input win1_m_mt_lib
input win1_m_bp_lib
input win1_m_mm_lib
input win1_m_cn_lib
input win1_m_ut_lib
input win1_m_bv_lib
input win1_m_md_lib
input win1_m_nd_lib
input win1_m_ca_lib
input win1_m_ri_lib
input win1_m_od_lib
input win1_m_sd_lib
input win1_m_dd_lib
input win1_m_pa_lib
input win1_m_pf_lib
input win1_m_sb_lib
input win1_m_bf_lib
input win1_m_ib_lib
input win1_m_gw_lib
input win1_m_cs_lib
input win1_m_ii_lib
input win1_m_tb_lib
Code: Select all
program win1_M_Minerva198_rom
Per
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
I love long walks, especially when they are taken by people who annoy me.
- Fred Allen
Re: Minerva Assembly
Just checked: Even the odd length is OK, comes from the font tables at the end of the ROM that have an odd length.tofro wrote: Why is this odd and one byte off yours?).
Tobias
See attached my Makefile (works with C68 make).
Tobias
Code: Select all
#
# Toplevel Makefile for Minerva 1.98
#
# Assumptions:
# DATA_USE points to Device/Directory holding the source directories
#
# Program filenames, adapt if needed
#
ASM = win1_assembler_qmac
LK = win1_assembler_qlink
MK = win1_c68_make
SH = win1_c68_sh
TC = win1_c68_touch
RM = win1_c68_rm
VERSION = 1.98
#
# Assembler command line options
#
ASMCMD = -errors ram1_err -nosym -bin -link -filetype 2
LINK_TARGET = MINERVA_${VERSION}
#
# Object files
#
OBJECTS = \
ut_windw_rel \
ut_messb_rel \
ut_link_rel \
ut_cstr_rel\
ut_err_rel\
\
tb_trn_rel\
tb_otrn_rel\
tb_multi_rel\
tb_msg_rel\
tb_kbenc_rel\
tb_kbd_rel\
tb_itrn_rel\
tb_f1_rel\
tb_f0_rel\
\
ss_util_rel\
ss_tlist_rel\
ss_reshd_rel\
ss_ramt_rel\
ss_list_rel\
ss_job_rel\
ss_iser_rel\
ss_int2_rel\
ss_init_rel\
ss_ext_rel\
ss_base_rel\
\
sd_wdef_rel\
sd_setfo_rel\
sd_setco_rel\
sd_setat_rel\
sd_pos_rel\
sd_fresh_rel\
sd_fill_rel\
sd_entry_rel\
sd_enq_rel\
sd_curw_rel\
sd_area_rel\
\
sb_unvr_rel\
sb_start_rel\
\
ri_swap_rel\
ri_nabs_rel\
ri_mldv_rel\
ri_add_rel\
ri_power_rel\
ri_int_rel\
ri_trig_rel\
ri_sqrt_rel\
ri_misc_rel\
ri_exec_rel\
\
pf_nwlin_rel\
pf_relst_rel\
\
pa_grtab_rel\
pa_table_rel\
pa_strip_rel\
pa_mist_rel\
pa_kywrd_rel\
pa_graph_rel\
pa_code_rel\
pa_chnlt_rel\
pa_chnam_rel\
\
od_ser_rel\
od_pipe_rel\
od_conx_rel\
od_net_rel\
\
nd_phys_rel\
\
mt_trap_rel\
mt_inf_rel\
mt_cjob_rel\
mt_jinf_rel\
mt_free_rel\
mt_trapv_rel\
mt_susjb_rel\
mt_alloc_rel\
mt_dmode_rel\
mt_ipcom_rel\
mt_baud_rel\
mt_rclck_rel\
mt_lxint_rel\
mt_cntry_rel\
\
mm_fssb_rel\
mm_scafr_rel\
mm_mvjob_rel\
mm_lnkfr_rel\
mm_alloc_rel\
mm_retrn_rel\
mm_rechp_rel\
mm_altrn_rel\
mm_alchp_rel\
mm_move_rel\
\
md_endgp_rel\
md_formt_rel\
md_sedes_rel\
md_serve_rel\
md_slave_rel\
md_read_rel\
md_write_rel\
\
ip_int_rel\
ip_kbrd_rel\
\
io_chanx_rel\
io_fdriv_rel\
io_fopen_rel\
io_name_rel\
io_queue_rel\
io_sched_rel\
io_serio_rel\
io_trap2_rel\
io_trap3_rel\
io_trap4_rel\
\
ii_clock_rel\
ii_drive_rel\
\
ib_error_rel\
ib_when_rel\
ib_golin_rel\
ib_call_rel\
ib_npass_rel\
ib_start_rel\
ib_gost_rel\
ib_end_rel\
ib_let_rel\
ib_array_rel\
ib_symbl_rel\
ib_sel_rel\
ib_restr_rel\
ib_name_rel\
ib_wscan_rel\
ib_next_rel\
ib_proc_rel\
ib_def_rel\
ib_chinl_rel\
ib_dim_rel\
ib_exit_rel\
ib_for_rel\
ib_goto_rel\
ib_if_rel\
ib_kywrd_rel\
ib_stop_rel\
\
gw_pixel_rel\
gw_pixad_rel\
gw_choct_rel\
gw_pitt_rel\
gw_trans_rel\
gw_fig_rel\
gw_flood_rel\
gw_scale_rel\
gw_gcur_rel\
\
dd_mdv_rel\
dd_mdvio_rel\
dd_mdvop_rel\
dd_mdvcl_rel\
dd_mdvsc_rel\
dd_mdvrn_rel\
dd_mdvbu_rel\
\
cs_char_rel\
cs_color_rel\
cs_area_rel\
\
cn_ston_rel\
cn_itos_rel\
cn_ftod_rel\
cn_date_rel\
\
ca_carg_rel\
ca_cncat_rel\
ca_cnvrt_rel\
ca_opexe_rel\
ca_eval_rel\
ca_etos_rel\
ca_fun_rel\
ca_garg_rel\
ca_gtarg_rel\
ca_indx_rel\
ca_stind_rel\
\
bv_vtype_rel\
bv_names_rel\
bv_chstk_rel\
bv_alvv_rel\
bv_upnxt_rel\
\
bp_windw_rel\
bp_turtl_rel\
bp_misc_rel\
bp_print_rel\
bp_poke_rel\
bp_grafx_rel\
bp_files_rel\
bp_chan_rel\
bp_beep_rel\
bp_init_rel\
bp_read_rel\
bp_stop_rel\
bp_let_rel\
bp_renum_rel\
bp_list_rel\
bp_data_rel\
\
bf_erfun_rel\
bf_date_rel\
bf_keyrw_rel\
bf_most_rel
default: ${OBJECTS}
${LK} ${LINK_TARGET} link
clean:
${RM} ${OBJECTS}
#
# Header file dependencies
#
# Rule for turning _asm into _rel files
#
_asm_rel:
${ASM} $C$*_asm ${ASMCMD}
Code: Select all
!input win1_m_ss_lib
input ss_base_rel
input ss_ramt_rel
input ss_init_rel
input ss_list_rel
input ss_ext_rel
input ss_int2_rel
input ss_job_rel
input ss_iser_rel
input ss_util_rel
input ss_tlist_rel
input ss_reshd_rel
!input win1_m_io_lib
input io_chanx_rel
input io_fdriv_rel
input io_fopen_rel
input io_name_rel
input io_queue_rel
input io_sched_rel
input io_serio_rel
input io_trap2_rel
input io_trap3_rel
input io_trap4_rel
!input win1_m_ip_lib
input ip_int_rel
input ip_kbrd_rel
!input win1_m_mt_lib
input mt_trap_rel
input mt_inf_rel
input mt_cjob_rel
input mt_jinf_rel
input mt_free_rel
input mt_trapv_rel
input mt_susjb_rel
input mt_alloc_rel
input mt_dmode_rel
input mt_ipcom_rel
input mt_baud_rel
input mt_rclck_rel
input mt_lxint_rel
input mt_cntry_rel
!input win1_m_bp_lib
input bp_windw_rel
input bp_turtl_rel
input bp_misc_rel
input bp_print_rel
input bp_poke_rel
input bp_grafx_rel
input bp_files_rel
input bp_chan_rel
input bp_beep_rel
input bp_init_rel
input bp_read_rel
input bp_stop_rel
input bp_let_rel
input bp_renum_rel
input bp_list_rel
input bp_data_rel
!input win1_m_mm_lib
input mm_fssb_rel
input mm_scafr_rel
input mm_mvjob_rel
input mm_lnkfr_rel
input mm_alloc_rel
input mm_retrn_rel
input mm_rechp_rel
input mm_altrn_rel
input mm_alchp_rel
input mm_move_rel
!input win1_m_cn_lib
input cn_ston_rel
input cn_itos_rel
input cn_ftod_rel
input cn_date_rel
!input win1_m_ut_lib
input ut_cstr_rel
input ut_err_rel
input ut_link_rel
input ut_messb_rel
input ut_windw_rel
!input win1_m_bv_lib
input bv_vtype_rel
input bv_names_rel
input bv_chstk_rel
input bv_alvv_rel
input bv_upnxt_rel
!input win1_m_md_lib
input md_endgp_rel
input md_formt_rel
input md_sedes_rel
input md_serve_rel
input md_slave_rel
input md_read_rel
input md_write_rel
!input win1_m_nd_lib
input nd_phys_rel
!input win1_m_ca_lib
input ca_carg_rel
input ca_cncat_rel
input ca_cnvrt_rel
input ca_opexe_rel
input ca_eval_rel
input ca_etos_rel
input ca_fun_rel
input ca_garg_rel
input ca_gtarg_rel
input ca_indx_rel
input ca_stind_rel
!input win1_m_ri_lib
input ri_swap_rel
input ri_nabs_rel
input ri_mldv_rel
input ri_add_rel
input ri_power_rel
input ri_int_rel
input ri_trig_rel
input ri_sqrt_rel
input ri_misc_rel
input ri_exec_rel
!input win1_m_od_lib
input od_ser_rel
input od_pipe_rel
input od_conx_rel
input od_net_rel
!input win1_m_sd_lib
input sd_wdef_rel
input sd_setfo_rel
input sd_setco_rel
input sd_setat_rel
input sd_pos_rel
input sd_fresh_rel
input sd_fill_rel
input sd_entry_rel
input sd_enq_rel
input sd_curw_rel
input sd_area_rel
!input win1_m_dd_lib
input dd_mdv_rel
input dd_mdvio_rel
input dd_mdvop_rel
input dd_mdvcl_rel
input dd_mdvsc_rel
input dd_mdvrn_rel
input dd_mdvbu_rel
!input win1_m_pa_lib
input pa_grtab_rel
input pa_table_rel
input pa_strip_rel
input pa_mist_rel
input pa_kywrd_rel
input pa_graph_rel
input pa_code_rel
input pa_chnlt_rel
input pa_chnam_rel
!input win1_m_pf_lib
input pf_nwlin_rel
input pf_relst_rel
!input win1_m_sb_lib
input sb_unvr_rel
input sb_start_rel
!input win1_m_bf_lib
input bf_erfun_rel
input bf_date_rel
input bf_keyrw_rel
input bf_most_rel
!input win1_m_ib_lib
input ib_error_rel
input ib_when_rel
input ib_golin_rel
input ib_call_rel
input ib_npass_rel
input ib_start_rel
input ib_gost_rel
input ib_end_rel
input ib_let_rel
input ib_array_rel
input ib_symbl_rel
input ib_sel_rel
input ib_restr_rel
input ib_name_rel
input ib_wscan_rel
input ib_next_rel
input ib_proc_rel
input ib_def_rel
input ib_chinl_rel
input ib_dim_rel
input ib_exit_rel
input ib_for_rel
input ib_goto_rel
input ib_if_rel
input ib_kywrd_rel
input ib_stop_rel
!input win1_m_gw_lib
input gw_pixel_rel
input gw_pixad_rel
input gw_choct_rel
input gw_pitt_rel
input gw_trans_rel
input gw_fig_rel
input gw_flood_rel
input gw_scale_rel
input gw_gcur_rel
!input win1_m_cs_lib
input cs_char_rel
input cs_color_rel
input cs_area_rel
!input win1_m_ii_lib
input ii_clock_rel
input ii_drive_rel
!input win1_m_tb_lib
input tb_trn_rel
input tb_otrn_rel
input tb_multi_rel
input tb_msg_rel
input tb_kbenc_rel
input tb_kbd_rel
input tb_itrn_rel
input tb_f1_rel
input tb_f0_rel
ʎɐqǝ ɯoɹɟ ǝq oʇ ƃuᴉoƃ ʇou sᴉ pɹɐoqʎǝʞ ʇxǝu ʎɯ 'ɹɐǝp ɥO
-
- ROM Dongle
- Posts: 7
- Joined: Thu Mar 12, 2015 12:02 am
- Location: Stockport, Cheshire, UK
Re: Minerva Assembly
Thanks all - just what I needed.
Now all I have to do is work out what the macros in the source are doing - sooo I'll carry on reading the assembler manual.
Cheers,
Dave
Now all I have to do is work out what the macros in the source are doing - sooo I'll carry on reading the assembler manual.
Cheers,
Dave
The only stupid question is the one that isn't asked.