I was bored so I made this thing.
Feel free to report me any bugs or suggestion for the design (cause yes it's ugly for now

Cheers.
Moderators: BigEvilCorporation, Mask of Destiny
I was about to suggest the same thing. The linux version is really nice - just CD to where the DOS program is and run "dosbox dosapp.exe" and it'll automatically mount the current dir as c: and run the app. That's enough for most DOS programs to work correctly. If you need more, you might have to change the config file, but I've managed to avoid that so far. I only need to set the config file to run Windows in dosbox. I don't know if the Windows version is as nice about handling DOS apps like that, but it's worth trying.Flygon wrote:You could always use DOSBox. Not perfect, but, hey.
Oh, I agree, I love a good console application. This is straight up 16-bit DOS code though, as Tiido mentions in the previous post he made it with QuickBASIC?HardWareMan wrote:Not to be confused DOS and console. For example, FAR is console programm but not DOS. It's WIN32 application. And yes, console programms are small, fast and simple. And they do not stink mice. :3LocalH wrote:Ugh, DOS. Someone needs to make a third-party NTVDM for 64-bit Windows...
Code: Select all
'Tiido's ultimate MD VDP command word calculator !!! version 0.1a
PRINT
PRINT "TmEE's MD VDP command word generator, v0.1"
PRINT "Copyright 2009 Tiido Priim„gi"
PRINT
ADDR$ = COMMAND$: B% = 0
IF ADDR$ = "" THEN INPUT "4 HEX digit address : $", ADDR$: B% = 1
IF LEN(ADDR$) > 4 THEN PRINT "Input too long, 4 HEX digits only": END
IF LEN(ADDR$) < 4 THEN PRINT "Input too short, 4 HEX digits only": END
ADDR$ = UCASE$(ADDR$)
ADDR& = 0
FOR i% = 1 TO 4
A$ = MID$(ADDR$, i%, 1)
SELECT CASE A$ 'dirty :P
CASE "0": A% = 0
CASE "1": A% = 1
CASE "2": A% = 2
CASE "3": A% = 3
CASE "4": A% = 4
CASE "5": A% = 5
CASE "6": A% = 6
CASE "7": A% = 7
CASE "8": A% = 8
CASE "9": A% = 9
CASE "A": A% = 10
CASE "B": A% = 11
CASE "C": A% = 12
CASE "D": A% = 13
CASE "E": A% = 14
CASE "F": A% = 15
CASE ELSE: A% = 0
END SELECT
ADDR& = ADDR& + ((16 ^ (4 - i%)) * A%)
NEXT i%
IF B% <> 1 THEN PRINT "Input address : $" + HEX$(ADDR& AND 65535)
PRINT
COMMADDR& = ((ADDR& AND &H3FFF) * 65536) OR ((ADDR& AND 49152) \ 16384&)
COMMWORD& = &H40000000: DMACOMM& = &H0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VRAM Write, No DMA : $"; HEX$(COMMWORD&)
COMMWORD& = &H40000000: DMACOMM& = &H80
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VRAM Write, DMA/Fill : $"; HEX$(COMMWORD&)
COMMWORD& = &H40000000: DMACOMM& = &HC0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VRAM Write, DMA/Copy : $"; HEX$(COMMWORD&)
COMMWORD& = &H0: DMACOMM& = &H0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VRAM Read : $"; HEX$(COMMWORD&)
PRINT
COMMWORD& = &H40000010: DMACOMM& = &H0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VSCR Write, No DMA : $"; HEX$(COMMWORD&)
COMMWORD& = &H40000010: DMACOMM& = &H80
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VSCR Write, DMA : $"; HEX$(COMMWORD&)
COMMWORD& = &H10: DMACOMM& = &H0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "VSCR Read : $"; HEX$(COMMWORD&)
PRINT
COMMWORD& = &HC0000000: DMACOMM& = &H0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "CRAM Write, No DMA : $"; HEX$(COMMWORD&)
COMMWORD& = &HC0000000: DMACOMM& = &H80
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "CRAM Write, DMA : $"; HEX$(COMMWORD&)
COMMWORD& = &H20: DMACOMM& = &H0
COMMWORD& = COMMWORD& OR (DMACOMM& AND 65535)
COMMWORD& = COMMWORD& OR COMMADDR&
PRINT "CRAM Read : $"; HEX$(COMMWORD&)