;*--------------------------------------------------------------------------- ; :Program. ElectroMAN.s ; :Contents. Slave for "ElectroMAN" from Tukinem & Retronics ; :Author. Tomek Wojcik, from Wepl sources ; :Original v1.0b1 ; :Version. $Id: ElectroMAN.s 1.0b1 2024/09/13 22:20:34 BTHLabs Exp BTHLabs $ ; :History. 2024-09-13 started ; :Requires. - ; :Copyright. Public Domain ; :Language. 68000 Assembler ; :Translator. Devpac 3.14, Barfly 2.9 ; :To Do. * Add support for quitting the game with ESC key :) ;---------------------------------------------------------------------------* INCLUDE whdload.i INCLUDE whdmacros.i INCLUDE lvo/dos.i IFD BARFLY OUTPUT "/ElectroMAN.Slave" BOPT O+ ;enable optimizing BOPT OG+ ;enable optimizing BOPT ODd- ;disable mul optimizing BOPT ODe- ;disable mul optimizing BOPT w4- ;disable 64k warnings BOPT wo- ;disable optimizer warnings SUPER ENDC ;============================================================================ CHIPMEMSIZE = $200000 ;size of chip memory FASTMEMSIZE = 0 ;size of fast memory NUMDRIVES = 1 ;amount of floppy drives to be configured WPDRIVES = %0000 ;write protection of floppy drives BLACKSCREEN ;set all initial colors to black ;BOOTBLOCK ;enable _bootblock routine BOOTDOS ;enable _bootdos routine ;BOOTEARLY ;enable _bootearly routine ;CBDOSLOADSEG ;enable _cb_dosLoadSeg routine ;CBDOSREAD ;enable _cb_dosRead routine ;CBKEYBOARD ;enable _cb_keyboard routine CACHE ;enable inst/data cache for fast memory with MMU ;CACHECHIP ;enable inst cache for chip/fast memory ;CACHECHIPDATA ;enable inst/data cache for chip/fast memory ;DEBUG ;add more internal checks ;DISKSONBOOT ;insert disks in floppy drives DOSASSIGN ;enable _dos_assign routine ;FONTHEIGHT = 8 ;enable 80 chars per line HDINIT ;initialize filesystem handler ;HRTMON ;add support for HrtMON IOCACHE = 10000 ;cache for the filesystem handler (per fh) INITAGA ;enable AGA ;MEMFREE = $200 ;location to store free memory counter ;NEEDFPU ;set requirement for a fpu ;POINTERTICKS = 1 ;set mouse speed ;SETPATCH ;enable patches from SetPatch 1.38 ;SNOOPFS ;trace filesystem handler ;STACKSIZE = 6000 ;increase default stack ;TRDCHANGEDISK ;enable _trd_changedisk routine ;============================================================================ slv_Version = 17 slv_Flags = WHDLF_NoError|WHDLF_Examine slv_keyexit = $59 ;F10 ;============================================================================ INCLUDE whdload/kick31.s ;============================================================================ slv_name dc.b "ElectroMAN",0 slv_copy dc.b "2024 Tukinem & Retronics",0 slv_info dc.b "adapted by Tomek Wojcik",10 dc.b "Version 1.0b1 2024-09-13" dc.b 0 slv_CurrentDir dc.b "data",0 slv_config dc.b 0 _disk1 dc.b "ELECTROMAN",0 _disk2 dc.b "SOUNDDATA",0 _program dc.b "ElectroMan.exu",0 _args dc.b 10 _args_end dc.b 0 EVEN ;============================================================================ _bootdos move.l _resload(pc),a2 ;A2 = resload lea (_saveregs,pc),a0 movem.l d1-d6/a2-a6,(a0) move.l (a7)+,(44,a0) ;open doslib lea (_dosname,pc),a1 move.l (4),a6 jsr (_LVOOldOpenLibrary,a6) lea (_dosbase,pc),a0 move.l d0,(a0) move.l d0,a6 ;A6 = dosbase ;assigns lea (_disk1,pc),a0 sub.l a1,a1 bsr _dos_assign lea (_disk2,pc),a0 sub.l a1,a1 bsr _dos_assign ;load exe lea (_program,pc),a0 move.l a0,d1 jsr (_LVOLoadSeg,a6) move.l d0,d7 ;D7 = segment beq .end ;patch move.l a3,a0 move.l d7,a1 jsr (resload_PatchSeg,a2) IFD DEBUG ;set debug clr.l -(a7) move.l d7,-(a7) pea WHDLTAG_DBGSEG_SET move.l a7,a0 jsr (resload_Control,a2) add.w #12,a7 ENDC ;call move.l d7,a1 add.l a1,a1 add.l a1,a1 moveq #_args_end-_args,d0 lea (_args,pc),a0 movem.l (_saveregs,pc),d1-d6/a2-a6 jsr (4,a1) pea TDREASON_OK jmp (resload_Abort,a2) IFEQ 1 ;remove exe move.l d7,d1 move.l (_dosbase),a6 jsr (_LVOUnLoadSeg,a6) ENDC .end moveq #0,d0 move.l (_saverts,pc),-(a7) rts ;============================================================================ _saveregs ds.l 11 _saverts dc.l 0 _dosbase dc.l 0 ;============================================================================ END