From 840299187d0164607b7797099c4bffe26c94641a Mon Sep 17 00:00:00 2001 From: slederer Date: Sat, 9 Nov 2024 23:18:58 +0100 Subject: [PATCH 01/80] adjust Makefile for precompiled stdlib --- pcomp/Makefile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/pcomp/Makefile b/pcomp/Makefile index 3f6473d..3a6d10b 100644 --- a/pcomp/Makefile +++ b/pcomp/Makefile @@ -9,15 +9,14 @@ LIBGEN=./libgen .pas: fpc -Mobjfpc -gl $< -all: pcomp sasm sdis libgen lsymgen +all: pcomp sasm sdis lsymgen shortgen -libs: pcomp sasm lsymgen libgen +libs: pcomp sasm lsymgen shortgen $(SASM) ../lib/coreloader.s $(LSYMGEN) ../lib/coreloader.sym $(PCOMP) -n ../lib/stdlib.pas - $(LIBGEN) ../lib/stdlib.s - $(LIBGEN) ../lib/runtime.s - $(LIBGEN) ../lib/float32.s + $(SASM) ../lib/stdlibwrap.s ../lib/stdlib.lib + $(LSYMGEN) ../lib/stdlibwrap.sym ../lib/stdlib.lsym nativecomp: pcomp sasm libs $(PCOMP) sasm.pas From 66052dca6f4525e6e3bf68defd117f8ac092eebd Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 10 Nov 2024 01:20:15 +0100 Subject: [PATCH 02/80] README: update download links --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1be73d5..7b6e63b 100644 --- a/README.md +++ b/README.md @@ -34,9 +34,9 @@ has a strange mixture of features from three different eras of computing: - the [source repository](https://gitlab.com/slederer/Tridora-CPU) - the [Hackaday project](https://hackaday.io/project/198324-tridora-cpu) (mostly copy-paste from this README) - the [YouTube channel](https://www.youtube.com/@tridoracpu/videos) with some demo videos -- the [emulator](https://git.insignificance.de/slederer/-/packages/generic/tridoraemu/0.0.2/files/8) (source and windows binary) +- the [emulator](https://git.insignificance.de/slederer/-/packages/generic/tridoraemu/0.0.4/files/11) (source and windows binary) - the [FPGA bitstream](https://git.insignificance.de/slederer/-/packages/generic/tdr-bitstream/0.0.1/files/3) for the Arty-A7-35T board -- an [SD-card image](https://git.insignificance.de/slederer/-/packages/generic/tdr-cardimage/0.0.2/files/7) +- an [SD-card image](https://git.insignificance.de/slederer/-/packages/generic/tdr-cardimage/0.0.3/files/9) Contact the author here: tridoracpu [at] insignificance.de From 7fdbd247e6a54d9f83903e75327e32383d145ea2 Mon Sep 17 00:00:00 2001 From: slederer Date: Mon, 11 Nov 2024 00:33:26 +0100 Subject: [PATCH 03/80] adjust some filename suffixes for new stdlib scheme --- pcomp/pcomp.pas | 2 +- pcomp/shortgen.pas | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pcomp/pcomp.pas b/pcomp/pcomp.pas index 89d5ff9..205ee3f 100644 --- a/pcomp/pcomp.pas +++ b/pcomp/pcomp.pas @@ -261,7 +261,7 @@ const insSize = 2; MaxIncludes = 4; StdLibName = 'stdlib'; UnitSuffix1 = '.inc'; - UnitSuffix2 = '.lib'; + UnitSuffix2 = '.s'; FilenameSuffix = '.pas'; OutfileSuffix = '.s'; InputFileName = 'INPUT'; diff --git a/pcomp/shortgen.pas b/pcomp/shortgen.pas index b8ecc94..d0acf41 100644 --- a/pcomp/shortgen.pas +++ b/pcomp/shortgen.pas @@ -5,7 +5,7 @@ const shortcutChar = '`'; firstShCChar = 'A'; lastShCChar = 'i'; - OutfileSuffix = '.lib'; + OutfileSuffix = '.cs'; {$I 'platfile-types+.pas'} From 4ff6129bc35156b4c2e4e81ba7ffd276fd6817ce Mon Sep 17 00:00:00 2001 From: slederer Date: Fri, 22 Nov 2024 23:52:08 +0100 Subject: [PATCH 04/80] add 3dplot example, small doc fixes --- doc/pascalprogramming.md | 6 +-- examples/3dplot.pas | 97 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 100 insertions(+), 3 deletions(-) create mode 100644 examples/3dplot.pas diff --git a/doc/pascalprogramming.md b/doc/pascalprogramming.md index 1007213..f45a0be 100644 --- a/doc/pascalprogramming.md +++ b/doc/pascalprogramming.md @@ -44,7 +44,7 @@ var a:array [1..3] of integer; ... - a[1] := 3; a[3] := 2; a[5] := 1; + a[1] := 3; a[2] := 2; a[3] := 1; for i in a do writeln(i); @@ -66,7 +66,7 @@ var c:char; ``` In Tridora Pascal, this syntax also works because `[ 'y', 'n' ]` will not be treated as a set literal, but as an array literal. -The _in_ operator also works for linear arrays, so the _if_ statement will have the same result. +The _in_ operator also works for linear arrays, so the above _if_ statement will have the same result. Note that the array _in_ operator will be more inefficient for larger ranges (i.e. `'A'..'z'`), but more efficient for sparse sets (i.e. `'A','z'`). @@ -123,7 +123,7 @@ The implementation also has the following properties: - _read_/_write_ do ASCII conversion on scalar variables, records and arrays are processed as binary - enums and booleans are treated as integers - _readln_/_writeln_ operate as expected, that is, they perform _read_/_write_ and then wait for/write a newline sequence -- other file operations available are _eof_, _eoln_ and _seek_ +- other file operations available are _eof_, _eoln_, _seek_ and _filepos_ - for error handling there is a function _IOResult_ - terminating the program without calling _close_ on open files will lose data diff --git a/examples/3dplot.pas b/examples/3dplot.pas new file mode 100644 index 0000000..07ec51b --- /dev/null +++ b/examples/3dplot.pas @@ -0,0 +1,97 @@ +program threedeeplot; +const w = 640; + h = 400; + +var u0,v0:integer; + +function fun(x0,y0:real):real; +const vscale = 50.0; + hscale = 20.0; + +var x,y,f:real; +begin + x := x0 / hscale; + y := y0 / hscale; + f := sin(sqrt(x*x + y*y)); + + fun := f * vscale; +end; + +procedure plot; +var maxV,minV:array [0..w] of real; + shift:integer; + x,y,z:integer; + lastZ:integer; + numLines:integer; + i:integer; + u,v,lastU,lastV:integer; + color:integer; + + procedure resetCurve; + begin + lastU := -1; + lastV := -1; + end; + +begin + for i := 0 to w do + begin + maxV[i] := -10000; + minV[i] := 10000; + end; + + color := 1; + shift := 4; + x := 0; + numLines := 80; + u0 := w div 2; + v0 := h div 2; + + for i := -(numLines div 2) to numLines do + begin + resetCurve; + x := i * (w div numLines); + for y := -w to w do + begin + z := round(fun(x,y)); + u := round(y + u0 + i * shift); + v := round(-z + v0 - i * shift); + + if (u >= 0) and (u < w) then + begin + if (v < maxV[u]) and (v > minV[u]) then + resetCurve + else + begin + if (u >= 0) and (u < w) and (v > maxV[u]) then + maxV[u] := v; + if (u >= 0) and (u < w) and (v < minV[u]) then + minV[u] := v; + + if lastZ < z then + color := 8 + else + color := 1; + + if (u >= w) or (u < 0) or (v >= h) or (v < 0) then + resetCurve + else + begin + if lastU = -1 then + putpixel(u,v,color) + else + drawline(lastU,lastV,u,v,color); + end; + lastU := u; + lastV := v; + lastZ := z; + end; + end; + end; + end; +end; + +begin + initgraphics; + plot; +end. From 3f6e16377f0932fe0eb5b0cc2903e690bf9c95f3 Mon Sep 17 00:00:00 2001 From: slederer Date: Mon, 25 Nov 2024 00:08:44 +0100 Subject: [PATCH 05/80] reclaim: Bugfix marking last slot on empty volume on reclaim --- progs/reclaim.pas | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/progs/reclaim.pas b/progs/reclaim.pas index 6c3584d..9983501 100644 --- a/progs/reclaim.pas +++ b/progs/reclaim.pas @@ -62,8 +62,13 @@ begin begin if lastUsed < endSlot then begin + (* if the volume is empty mark the first slot *) + if lastUsed = 0 then + slotNo := reservedCount + else + slotNo := lastUsed + 1; + writeln('Updating directory...'); - slotNo := lastUsed + 1; getdirslot(volid, slotNo, dirslot, error); if error <> IONoError then begin @@ -119,7 +124,7 @@ begin lastUsed := 0; openvolumeid(volid); - i := volumeTable[volid].startSlot; + i := 0; endSlot := volumeTable[volid].part.dirSize - 1; if verbose then From def08c6c94485247ff057ce90075707917e6ba0d Mon Sep 17 00:00:00 2001 From: slederer Date: Mon, 25 Nov 2024 00:09:35 +0100 Subject: [PATCH 06/80] add serload python script, wrong filename in make.bat --- pcomp/make.bat | 2 +- utils/serload.py | 287 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 288 insertions(+), 1 deletion(-) create mode 100644 utils/serload.py diff --git a/pcomp/make.bat b/pcomp/make.bat index 5cf30e9..41275cc 100644 --- a/pcomp/make.bat +++ b/pcomp/make.bat @@ -17,7 +17,7 @@ rem exit /b py pcomp.py sasm.pas py pcomp.py pcomp.pas py pcomp.py lsymgen.pas -py pcomp.py libgen.pas +py pcomp.py shortgen.pas rem exit /b diff --git a/utils/serload.py b/utils/serload.py new file mode 100644 index 0000000..ddb8d60 --- /dev/null +++ b/utils/serload.py @@ -0,0 +1,287 @@ +#!/usr/bin/python3 +# vim: tabstop=8 expandtab shiftwidth=4 softtabstop=4 +# +# Copyright 2021 Sebastian Lederer +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import serial +import time +import random + +blocksize = 32 +BEL = 7 +ACK = 6 +NAK = 21 +ENQ = 5 +SOH = 1 +STX = 2 +EOT = 4 +wordmask = 0xFFFFFFFF +pattern = 0xAFFECAFE + + +def serwrite_slow(databytes, ser): + total = len(data) + count = 1 + for d in data: + sys.stdout.write("writing {0:02x} {1:04d}/{2:04d}\r".format(ord(d), count, total)) + ser.write(bytes(d,"utf8")) + count += 1 + time.sleep(0.020) + print() + + +def serwrite(datafile, ser): + with open(datafile) as f: + data = f.read() + total = len(data) + count = 1 + for d in data: + sys.stdout.write("writing {0:02x} {1:04d}/{2:04d}\r".format(ord(d), count, total)) + ser.write(bytes(d,"utf8")) + count += 1 + time.sleep(0.020) + print() + + +def checksum(databytes): + i = 0 + cksum = 0 + while i < len(databytes): + word = databytes[i] << 24 | \ + databytes[i+1] << 16 | \ + databytes[i+2] << 8 | \ + databytes[i+3] + # print("word:{0:08x}".format(word)) + i += 4 + + cksum = (((cksum + word) ^ pattern) << 1) & wordmask + + return cksum + + +def sendchar(char, ser): + ser.write(char.to_bytes(1, 'big')) + + +def sendcommand(ser, cmd=b'L'): + ser.write(cmd) + resp = ser.read_until() + print(cmd,"sent, response:", str(resp)) + return resp + + +def send_size_header(ser, filesize): + ser.write(b'\x05') # ENQ + resp = ser.read(1) + if resp != b'\x15': # NAK + # print("ENQ response:",str(resp)) + ser.write(b'\x01') # SOH + + databytes = filesize.to_bytes(4, 'big') + chksum = ~filesize & 0xFFFFFFFF + + #print(str(databytes), len(databytes), type(filesize), filesize) + #print(str(chksum.to_bytes(4,'big')), len(databytes)) + + ser.write(databytes) + ser.write(chksum.to_bytes(4,'big')) + + resp = ser.read(1) + if len(resp) == 0: + print("timeout waiting for ACK on size header") + return False + char = resp[0] + # print("response to size header:", str(resp), repr(char)) + return char == ACK # ACK + else: + print("Not using size header.") + return True + + +def serload_bin(datafile, ser): + resp = sendcommand(ser) + if len(resp) == 0: + print("timeout sending 'L' command") + return + + sentblocks = 0 + resend = 0 + + data = [] + + if datafile.endswith('.mem'): + with open(datafile) as f: + for l in f.readlines(): + b3 = l[0:8] + b2 = l[8:16] + b1 = l[16:24] + b0 = l[24:32] + data.extend([ int(b,2) for b in [b3,b2,b1,b0]]) + else: + with open(datafile, 'rb') as f: + data = f.read() + + filesize = len(data) + + if filesize % blocksize > 0: + l = len(data) + pad = blocksize - (l % blocksize) + + print("padding {} bytes with {} to {}".format(l, pad, l+pad)) + + data += bytearray(pad) + + if not send_size_header(ser, filesize): + print("Error sending size header.") + return + + while len(data) > 0: + block = data[0:32] + databytes = bytearray(block) + + sendchar(STX, ser) + #print("block:",databytes) + chksum = checksum(databytes) + #print("checksum: {0:08x}".format(chksum)) + #if random.randrange(2) == 0: + # databytes[random.randrange(len(databytes))] = 0 + ser.write(databytes) + #print(chksum.to_bytes(4, 'big')) + ser.write(chksum.to_bytes(4,'big')) + + resp = ser.read(1) + if len(resp) == 0: + print("timeout waiting for ACK") + break + char = resp[0] + + if char == ACK: + #print("ACK received") + sentblocks += 1 + data = data[32:] # ack received, send next block + elif char == NAK: # nak received, send same block + # print("NAK received") + resend += 1 + pass + else: + print("garbage received: ",char) + print(ser.read(80)) + break # anything else, give up + + print("{} blocks sent, {} retries".format(sentblocks, resend), end='\r') + + sendchar(EOT, ser) + print() + + +def word_from_bytes(b): + w = b[0] << 24 | b[1] << 16 | b[2] << 8 | b[3] + return w + + +def read_word(ser): + b = ser.read(4) + if len(b) != 4: + return None + return word_from_bytes(b) + + +def serdownload(fname, ser): + resp = sendcommand(ser, b'D') + if len(resp) == 0: + print("timeout sending 'D' command") + return + + sendchar(BEL, ser); + + resp = ser.read(1) + if len(resp) == 0: + print("Timeout receiving size header.") + return + if resp[0] != SOH: + print("Error receiving size header.", resp[0]) + return + + size = read_word(ser) + cksize = read_word(ser) + if (~cksize & 0xFFFFFFFF) != size: + print("Invalid size header received.") + return + + sendchar(ACK, ser) + + print("File size: {} bytes".format(size)) + + count = size + with open(fname, "wb") as f: + while count > 0: + startbyte = ser.read(1) + if len(startbyte) == 0: + print("Timeout receiving STX.") + return + if startbyte[0] != STX: + print("Error receiving STX.", resp[0]) + return + + block = ser.read(32) + if len(block) != 32: + print("Error receiving block") + return + + cksum = read_word(ser) + if cksum is None: + print("Error receiving block checksum") + return + + mysum = checksum(block) + if cksum != mysum: + print("Checksum error, retry block") + sendchar(NAK, ser) + continue + + print(".", end="", flush=True) + count -= 32 + f.write(block) + sendchar(ACK, ser) + + resp = ser.read(1) + if len(resp) == 0: + print("Timeout receiving EOT.") + if resp[0] != EOT: + print("Error receiving EOT.", resp[0]) + + print("\nEnd of transmission, {} bytes received.".format(size)) + f.truncate(size) + f.close() + + +if __name__ == "__main__": + cmd = None + if len(sys.argv) == 4: + cmd = sys.argv[1] + filename = sys.argv[2] + serial_port = sys.argv[3] + ser = serial.Serial(serial_port,115200, timeout=3) + + if cmd == 'get': + serdownload(filename, ser) + elif cmd == 'put': + serload_bin(filename, ser) + else: + print("Usage: {} get|put ".format(sys.argv[0])) + + if cmd is not None: + ser.close() From d22baa3f36cbfd4dcfe440b9dffe23daccd11799 Mon Sep 17 00:00:00 2001 From: slederer Date: Tue, 24 Dec 2024 03:05:46 +0100 Subject: [PATCH 07/80] add sprites library and Xmas demo --- .gitignore | 1 + examples/sprites.inc | 5 + examples/sprites.s | 363 +++++++++++++++++++++++++++++++++++++++++++ examples/xmas.pas | 220 ++++++++++++++++++++++++++ utils/png2pict.py | 110 +++++++++++++ 5 files changed, 699 insertions(+) create mode 100644 examples/sprites.inc create mode 100644 examples/sprites.s create mode 100644 examples/xmas.pas create mode 100644 utils/png2pict.py diff --git a/.gitignore b/.gitignore index 100c169..765db6a 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ tests/*.s examples/*.s !runtime.s !stdlibwrap.s +!sprites.s *.o *.exe *.bin diff --git a/examples/sprites.inc b/examples/sprites.inc new file mode 100644 index 0000000..2b25366 --- /dev/null +++ b/examples/sprites.inc @@ -0,0 +1,5 @@ +type SpritePixels = array[0..31] of integer; +type BackgroundPixels = array[0..31999] of integer; + +procedure PutSprite(x,y:integer; var sprite: SpritePixels); external; +procedure UndrawSprite(x,y:integer; var background: BackgroundPixels); external; diff --git a/examples/sprites.s b/examples/sprites.s new file mode 100644 index 0000000..42a3d0e --- /dev/null +++ b/examples/sprites.s @@ -0,0 +1,363 @@ + .EQU SPRITE_HEIGHT 16 + + .EQU WORDS_PER_LINE 80 + .EQU FB_RA $900 + .EQU FB_WA $901 + .EQU FB_IO $902 + .EQU FB_PS $903 + +; calculate mask for a word of pixels +; args: word of pixels with four bits per pixel +; returns: value that masks out all pixels that are set +CALC_MASK: + LOADC $F ; pixel mask +C_M_L0: + SWAP ; swap mask and pixels value + AND.S1.X2Y ; isolate one pixel, keep args + CBRANCH.Z C_M_L1 ; if pixel is zero, dont set mask bits + OVER ; copy current mask + OR ; or into pixels value +C_M_L1: + SWAP ; swap back, ToS is now mask bits + SHL 2 ; shift mask for next pixel to the left + SHL 2 + + DUP + CBRANCH.NZ C_M_L0 ; if mask is zero, we are done + DROP ; remove mask bits + NOT ; invert result + RET + +; calculate vmem address from coordinates +; args: x,y +; returns: vmem word number +CALC_VMEM_ADDR: + ; only works if WORDS_PER_LINE is 80 + ; and pixels per word is 8 + + DUP + ; y + SHL 2 + SHL 2 + SHL 2 ; * 64 + + SWAP + ; + y + SHL 2 + SHL 2 ; * 16 + ADD + + SWAP + ; word offset = X/8 + SHR + SHR + SHR + ADD + + RET + +; put a sprite on screen +; arg: x,y pointer to sprite data + .EQU PS_VMEM_ADDR 0 + .EQU PS_SPRITE_DATA 4 + .EQU PS_SPRITE_LINES 8 + .EQU PS_X 12 + .EQU PS_Y 16 + .EQU PS_SHIFT_C 20 + .EQU PS_SPILL 24 + .EQU PS_FS 28 +PUTSPRITE: + FPADJ -PS_FS + STORE PS_SPRITE_DATA + STORE PS_Y + STORE PS_X + + ; calculate vmem address + LOAD PS_X + LOAD PS_Y + LOADCP CALC_VMEM_ADDR + CALL + STORE PS_VMEM_ADDR + + LOAD PS_X ; shift count = x mod 8 + LOADC 7 + AND + STORE PS_SHIFT_C + + LOADC SPRITE_HEIGHT + STORE PS_SPRITE_LINES + + ; loop over each line of the sprite +PS_LOOP1: + ; set read and write address + ; in the vga controller + LOADC FB_RA ; read address register + LOAD PS_VMEM_ADDR + STOREI 1 ; use autoincrement to get to the next register + LOAD PS_VMEM_ADDR + STOREI + DROP + + LOAD PS_SPRITE_DATA ; address of sprite data + DUP + INC 4 ; increment pointer + STORE PS_SPRITE_DATA ; and store it again + LOADI ; load word from orig. address + + + LOADC 0 + STORE PS_SPILL + + ; loop to shift pixel data to right + LOAD PS_SHIFT_C ; load shift count +PS_LOOP2: + DUP ; test it for zero + CBRANCH.Z PS_LOOP2_X + + SWAP ; swap count with pixels + + ; save the pixel that is shifted out + LOADC $F ; mask the four bits + AND.S0 ; keep original value on stack + BROT ; and move them to MSB + BROT + BROT + SHL 2 + SHL 2 ; shift by 28 in total + + LOAD PS_SPILL ; load spill bits + SHR ; shift by four to make space + SHR + SHR + SHR + OR ; or with orig value + STORE PS_SPILL ; store new value + + SHR ; shift pixels right + SHR ; four bits per pixel + SHR + SHR + + SWAP ; swap back, count now ToS + DEC 1 + BRANCH PS_LOOP2 +PS_LOOP2_X: + DROP ; remove shift count, shifted pixels now in ToS + + DUP + LOADCP CALC_MASK ; calculate sprite mask for this word + CALL + + LOADCP FB_IO ; address of the i/o register + LOADI ; read word from video mem + + AND ; and word with mask + + OR ; OR sprite data with original pixels + + LOADCP FB_IO + SWAP + STOREI ; store result into i/o reg + DROP + + ; + ; process spilled bits and right half of sprite data + ; + + ; put spill bits on stack for later + LOAD PS_SPILL + + LOAD PS_SPRITE_DATA ; address of sprite data + DUP + INC 4 ; increment pointer + STORE PS_SPRITE_DATA ; and store it again + LOADI ; load word from orig. address + + ; reset spill bits + LOADC 0 + STORE PS_SPILL + + ; shift pixel data to right + LOAD PS_SHIFT_C ; load shift count +PS_LOOP3: ; test it for zero + DUP + CBRANCH.Z PS_LOOP3_X + + SWAP ; swap count with pixels + + ; save the pixel that is shifted out + LOADC $F ; mask the four bits + AND.S0 ; keep original value on stack + BROT ; and move them to MSB + BROT + BROT + SHL 2 + SHL 2 ; shift by 28 in total + + LOAD PS_SPILL ; load spill bits + SHR ; shift by four to make space + SHR + SHR + SHR + OR ; or with orig value + STORE PS_SPILL ; store new value + + SHR ; shift pixels right + SHR ; four bits per pixel + SHR + SHR + + SWAP ; swap back, count now ToS + DEC 1 + BRANCH PS_LOOP3 +PS_LOOP3_X: + DROP ; remove shift count, shifted pixels now in ToS + + OR ; or together with spill bits + + DUP + LOADCP CALC_MASK ; calculate sprite mask + CALL + + LOADCP FB_IO ; load original pixels + LOADI + + AND ; and with mask + + OR ; or together with original pixels + + LOADCP FB_IO + SWAP + STOREI + DROP + + ; write spilled bits into next vmem word + LOAD PS_SPILL ; get spill bits + DUP + LOADCP CALC_MASK ; calculate sprite mask for spill bits + CALL + + LOADCP FB_IO + LOADI ; load next vmem word + AND ; apply sprite mask + + OR ; OR in spill bits + + LOADCP FB_IO + SWAP ; swap pixels and addr + STOREI ; write back + DROP + + LOAD PS_SPRITE_LINES ; decrement lines count + DEC 1 + DUP + CBRANCH.Z PS_L_XT ; exit if zero + STORE PS_SPRITE_LINES + ; prepare next line + LOAD PS_VMEM_ADDR + LOADC WORDS_PER_LINE ; increment to next screen line + ADD + STORE PS_VMEM_ADDR + BRANCH PS_LOOP1 +PS_L_XT: + DROP + + FPADJ PS_FS + RET + +; undraw a sprite, i.e. draw background data +; over a sprite location +; args: x,y, ptr to background data + .EQU UD_S_X 0 + .EQU UD_S_Y 4 + .EQU UD_S_PXS 8 + .EQU UD_S_BGDATA 12 + .EQU UD_S_OFFSET 16 + .EQU UD_S_BGORIG 20 + .EQU UD_S_FS 24 +UNDRAWSPRITE: + FPADJ -UD_S_FS + STORE UD_S_BGORIG + STORE UD_S_Y + STORE UD_S_X + + ; calculate pixel shift + LOAD UD_S_X + LOADC $7 + AND + STORE UD_S_PXS + + ; calculate vmem offset + LOAD UD_S_X + LOAD UD_S_Y + LOADCP CALC_VMEM_ADDR + CALL + + DUP + STORE UD_S_OFFSET + + ; calculate background data address from offset + SHL 2 + LOAD UD_S_BGORIG + ADD + STORE UD_S_BGDATA + + LOADC SPRITE_HEIGHT ; line count +UD_S_L1: + ; store vmem offset into write addr reg + LOADCP FB_WA + LOAD UD_S_OFFSET + STOREI 1 ; ugly but fast: reuse addr + ; with postincrement to + ; get to FB_IO for STOREI below + + ; load a word of background data + LOAD UD_S_BGDATA + LOADI + ; and write it to vmem + STOREI + ; reuse addr from STOREI + + ; load 2nd word of background data + LOAD UD_S_BGDATA + INC 4 + DUP + STORE UD_S_BGDATA + LOADI + STOREI ; and write it to vmem + DROP + + ; if pixel shift is zero, no 3rd word + LOAD UD_S_PXS + CBRANCH.Z UD_S_L2 + + ; load 3rd word of background data + LOADCP FB_IO + LOAD UD_S_BGDATA + INC 4 + DUP + STORE UD_S_BGDATA + LOADI + STOREI ; and write it to vmem + DROP + +UD_S_L2: + LOAD UD_S_OFFSET + LOADCP WORDS_PER_LINE + ADD + DUP + STORE UD_S_OFFSET + SHL 2 + LOAD UD_S_BGORIG + ADD + STORE UD_S_BGDATA + + DEC 1 ; decrement counter + DUP + CBRANCH.NZ UD_S_L1 ; check for zero + + DROP ; remove counter + + FPADJ UD_S_FS + RET + diff --git a/examples/xmas.pas b/examples/xmas.pas new file mode 100644 index 0000000..12b2da3 --- /dev/null +++ b/examples/xmas.pas @@ -0,0 +1,220 @@ +program XmasAnimation; +uses sprites; + +type PictData = record + magic, mode:integer; + palette: array [0..15] of integer; + pixeldata: array [0..31999] of integer; + end; + + Sprite = record + x,y:integer; + oldX,oldY:integer; + xdelta,ydelta:integer; + curFrame:integer; + frameCount:integer; + frameTime:integer; + frameLeft:integer; + changed:boolean; + frame:array [0..3] of SpritePixels; + end; + +var pic:PictData; + filename:string; + infile:file; + ch:char; + santaSprite: Sprite; + deerSprite: Sprite; + ohDeerSprite: Sprite; + rudolfSprite: Sprite; + smokeSprite: Sprite; + +procedure WaitVSync; external; + +procedure loadPalette(var pic:PictData); +var i:integer; +begin + for i := 0 to 15 do + setpalette(i, pic.palette[i]); +end; + +procedure showPic(var pic:PictData); +begin + PutScreen(pic.pixeldata); +end; + +procedure loadSpriteFrame(var aSprite:Sprite;spriteIndex:integer; + var sheetFile:file;sheetIndex:integer); +begin + seek(sheetFile, 8 + sheetIndex * 128); + read(sheetFile, aSprite.frame[spriteIndex]); + if aSprite.frameCount <= spriteIndex then + aSprite.frameCount := spriteIndex + 1; + + aSprite.curFrame := 0; + writeln('loaded sprite frame ', spriteIndex, ' from ', sheetIndex); +end; + +procedure animateSprite(var aSprite:Sprite); +var frameIndex:integer; + frameTime,frameLeft:integer; + ydelta:integer; + oldX,oldY:integer; +begin + ydelta := aSprite.ydelta; + frameIndex := aSprite.curFrame; + frameTime := aSprite.frameTime; + frameLeft := aSprite.frameLeft; + oldX := aSprite.x; oldY := aSprite.y; + aSprite.oldX := oldX; aSprite.oldY := oldY; + + frameLeft := frameLeft - 1; + if frameLeft <= 0 then + begin + frameIndex := frameIndex + 1; + frameLeft := aSprite.frameTime; + aSprite.frameLeft := frameLeft; + aSprite.curFrame := frameIndex; + if frameIndex >= aSprite.frameCount + then + aSprite.curFrame := 0; + + if frameIndex = 1 then + begin + ydelta := - ydelta; + aSprite.ydelta := ydelta; + end; + aSprite.y := aSprite.y + ydelta; + end; + + aSprite.frameLeft := frameLeft; + + aSprite.x := aSprite.x + aSprite.xdelta; + if aSprite.x > 620 then aSprite.x := 0; +end; + +procedure animate; +var i:integer; + ydelta:integer; + frameIndex:integer; + frameTime:integer; + oldX,oldY:integer; +begin + santaSprite.x := 0; + santaSprite.y := 60; + santaSprite.frameTime := 10; + santaSprite.xdelta := 2; + santaSprite.ydelta := 1; + + smokeSprite.x := 434; + smokeSprite.y := 252; + smokeSprite.frameTime := 20; + + deerSprite.x := 18; + deerSprite.y := 60; + deerSprite.frameTime := 10; + deerSprite.xdelta := 2; + deerSprite.ydelta := 1; + + ohDeerSprite.x := 33; + ohDeerSprite.y := 61; + ohDeerSprite.frameTime := 10; + ohDeerSprite.xdelta := 2; + ohDeerSprite.ydelta := 1; + + rudolfSprite.x := 49; + rudolfSprite.y := 60; + rudolfSprite.frameTime := 10; + rudolfSprite.xdelta := 2; + rudolfSprite.ydelta := 1; + + ydelta := 1; + + frameTime := santaSprite.frameTime; + + while not ConAvail do + begin + frameIndex := santaSprite.curFrame; + oldX := santaSprite.x; oldY := santaSprite.y; + PutSprite(oldX, oldY, santaSprite.frame[frameIndex]); + i := i + 1; + frameTime := frameTime - 1; + if frameTime = 0 then + begin + frameTime := santaSprite.frameTime; + santaSprite.curFrame := frameIndex + 1; + if frameIndex >= santaSprite.frameCount + then + santaSprite.curFrame := 0; + + if frameIndex = 0 then ydelta := - ydelta; + santaSprite.y := santaSprite.y + ydelta; + end; + santaSprite.x := santaSprite.x + 2; + if santaSprite.x > 620 then santaSprite.x := 0; + + PutSprite(deerSprite.x, deerSprite.y, + deerSprite.frame[deerSprite.curFrame]); + + PutSprite(ohDeerSprite.x, ohDeerSprite.y, + ohDeerSprite.frame[ohDeerSprite.curFrame]); + + PutSprite(rudolfSprite.x, rudolfSprite.y, + rudolfSprite.frame[rudolfSprite.curFrame]); + + PutSprite(smokeSprite.x, smokeSprite.y, + smokeSprite.frame[smokeSprite.curFrame]); + + animateSprite(deerSprite); + animateSprite(ohDeerSprite); + animateSprite(rudolfSprite); + animateSprite(smokeSprite); + + Delay(10); + WaitVSync; + + UndrawSprite(oldX, oldY, pic.pixeldata); + UndrawSprite(deerSprite.oldX, deerSprite.oldY, pic.pixeldata); + UndrawSprite(ohDeerSprite.oldX, ohDeerSprite.oldY, pic.pixeldata); + UndrawSprite(rudolfSprite.oldX, rudolfSprite.oldY, pic.pixeldata); + UndrawSprite(smokeSprite.oldX, smokeSprite.oldY, pic.pixeldata); + end; +end; + + +begin + filename := 'background.pict'; + open(infile, filename, ModeReadonly); + read(infile, pic); + close(infile); + + writeln('magic: ', pic.magic, ' mode:', pic.mode); + + loadPalette(pic); + showPic(pic); + + open(infile, 'sprites.sprt', ModeReadOnly); + loadSpriteFrame(santaSprite, 0, infile, 0); + loadSpriteFrame(santaSprite, 1, infile, 1); + + loadSpriteFrame(deerSprite, 0, infile, 5); + loadSpriteFrame(deerSprite, 1, infile, 6); + loadSpriteFrame(deerSprite, 2, infile, 7); + + loadSpriteFrame(ohDeerSprite, 0, infile, 7); + loadSpriteFrame(ohDeerSprite, 1, infile, 5); + loadSpriteFrame(ohDeerSprite, 2, infile, 6); + + loadSpriteFrame(rudolfSprite, 0, infile, 3); + loadSpriteFrame(rudolfSprite, 1, infile, 4); + loadSpriteFrame(rudolfSprite, 2, infile, 2); + + loadSpriteFrame(smokeSprite, 0, infile, 8); + loadSpriteFrame(smokeSprite, 1, infile, 9); + loadSpriteFrame(smokeSprite, 2, infile, 10); + loadSpriteFrame(smokeSprite, 3, infile, 11); + + close(infile); + + animate; +end. diff --git a/utils/png2pict.py b/utils/png2pict.py new file mode 100644 index 0000000..73c4670 --- /dev/null +++ b/utils/png2pict.py @@ -0,0 +1,110 @@ +#!/usr/bin/python3 +import sys +import png + +def process_pixdata(outfile, pixdata, frameindex = 0, pix_w=640, pix_h=400): + + pixmask = 15 + y = pix_h * frameindex + max_y = y + pix_h - 1 + + while y <= max_y: + x = 0 + max_x = pix_w - 1 + pixline = pixdata[y] + while x <= max_x: + px1 = pixline[x+0] & pixmask + px2 = pixline[x+1] & pixmask + px3 = pixline[x+2] & pixmask + px4 = pixline[x+3] & pixmask + px5 = pixline[x+4] & pixmask + px6 = pixline[x+5] & pixmask + px7 = pixline[x+6] & pixmask + px8 = pixline[x+7] & pixmask + vmem_word = (px1 << 28) | (px2 << 24) | (px3 << 20) | (px4 << 16) | \ + (px5 << 12) | (px6 << 8) | (px7 << 4) | px8 + + outfile.write(vmem_word.to_bytes(4, 'big')) + x += 8 + y += 1 + + +def process_palette(outfile, palette): + for r,g,b in palette: + r4 = r >> 4 + g4 = g >> 4 + b4 = b >> 4 + c12 = r4 << 8 | g4 << 4 | b4 + + outfile.write(c12.to_bytes(4, 'big')) + + +def write_header(outfile): + magic = b'PIct' + mode = 1 + outfile.write(magic); + outfile.write(mode.to_bytes(4, 'big')) + + +def write_sprite_header(outfile): + magic = b'SPRT' + mode = 1 + outfile.write(magic); + outfile.write(mode.to_bytes(4, 'big')) + + +def write_pict_file(width, height, px, metadata, outfile): + print("processing as PICT file...") + if width != 640: + print("width must be 640, aborting") + sys.exit(1) + pixdata = list(px) + palette = metadata['palette'] + + if len(palette) != 16: + print("palette must have 16 colors, aborting") + sys.exit(0) + + with open(outfile,'wb') as f: + write_header(f) + process_palette(f, palette) + process_pixdata(f, pixdata) + + +def write_sprite_file(width, height, px, metadata, outfile): + sprite_height=16 + + print("processing as SPRT file with {} sprites...".format(height//sprite_height)) + if width != 16: + print("width must be 16, aborting") + sys.exit(1) + pixdata = list(px) + palette = metadata['palette'] + + if len(palette) != 16: + print("palette must have 16 colors, aborting") + sys.exit(0) + + with open(outfile,'wb') as f: + write_sprite_header(f) + process_pixdata(f, pixdata, pix_w=16, pix_h=height) + + +if __name__ == '__main__': + if len(sys.argv) != 3: + print("Usage: {} ".format(sys.argv[0])) + sys.exit(1) + + infile = sys.argv[1] + outfile = sys.argv[2] + + r = png.Reader(infile) + p = r.read() + width, height, px, metadata = p + if width == 640: + write_pict_file(width, height, px, metadata, outfile) + elif width == 16: + write_sprite_file(width, height, px, metadata, outfile) + else: + print("Can't handle this file, need a width of\n640 or 16 pixels with 16 color palette.") + From 21bd825a8ab33a98eec05a491365f4dc7e0cd0ba Mon Sep 17 00:00:00 2001 From: slederer Date: Tue, 24 Dec 2024 03:07:16 +0100 Subject: [PATCH 08/80] add image data for Xmas demo --- examples/background.pict | Bin 0 -> 128072 bytes examples/sprites.sprt | Bin 0 -> 1544 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/background.pict create mode 100644 examples/sprites.sprt diff --git a/examples/background.pict b/examples/background.pict new file mode 100644 index 0000000000000000000000000000000000000000..76b99f645b605e71a29ff6884c66fbe0729a00f6 GIT binary patch literal 128072 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 literal 0 HcmV?d00001 diff --git a/examples/sprites.sprt b/examples/sprites.sprt new file mode 100644 index 0000000000000000000000000000000000000000..475bd4df760f1631f1c3cd71185631cc41f9ea17 GIT binary patch literal 1544 zcmd5(yKciU47?&0JQ#?RIYU38{)FsZ)Q6zo@FHmJFU7M5{ff74Mp~d#fT~B@-h!g3 z(V_&bBPo%0q#y0W6M!pz>z)VJ!!QUobb4_R^HHF9zS$^FF^1Tbk{Mni+OC7V@4B|# zZu_#^c4{qlcVZjtG?oT??5_>c!kT+HHR&_*ivW4WcFMn=_?utnS5`SzsMTMsrqmb$ z>7a@7?L<(!#6r1vOkR7WWCI8L!5s!Bq@$nY0gJqfAnv24~=jyjNT4@jp> zB_Gt4v+^e{j?YVy%O^e(XH&ByoIjV%&n3f~Q?i=qqoH~(z^uYbJ% zGxIOszx;zG7PYvDQU7!iVvq!5Ma*c%`yVnD-p@3lq345-nu*b?06*~?Khl1mN6Ui` z&auWgXM;LpAH%eS-gyBOjR`uZL8JU4=7+|HhP{H6J4 Date: Fri, 27 Dec 2024 03:02:11 +0100 Subject: [PATCH 09/80] update Vivado project file --- tridoracpu/tridoracpu.xpr | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index 5e4a64f..a4c6545 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -25,7 +25,7 @@ IRblljSlt`C4`ERe)}gBgA8QZOv6G* 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 literal 0 HcmV?d00001 diff --git a/examples/sprites.inc b/examples/sprites.inc index 2b25366..2713c8e 100644 --- a/examples/sprites.inc +++ b/examples/sprites.inc @@ -1,4 +1,4 @@ -type SpritePixels = array[0..31] of integer; +type SpritePixels = array[0..128] of integer; type BackgroundPixels = array[0..31999] of integer; procedure PutSprite(x,y:integer; var sprite: SpritePixels); external; diff --git a/examples/sprites.s b/examples/sprites.s index 42a3d0e..3391339 100644 --- a/examples/sprites.s +++ b/examples/sprites.s @@ -1,4 +1,5 @@ - .EQU SPRITE_HEIGHT 16 + .EQU SPRITE_HEIGHT 32 ; height in lines + .EQU SPRITE_STRIPES 4 ; width in words i.e. 8-pixel stripes .EQU WORDS_PER_LINE 80 .EQU FB_RA $900 @@ -65,7 +66,8 @@ CALC_VMEM_ADDR: .EQU PS_Y 16 .EQU PS_SHIFT_C 20 .EQU PS_SPILL 24 - .EQU PS_FS 28 + .EQU PS_STRIPE_C 28 + .EQU PS_FS 32 PUTSPRITE: FPADJ -PS_FS STORE PS_SPRITE_DATA @@ -160,10 +162,14 @@ PS_LOOP2_X: STOREI ; store result into i/o reg DROP - ; - ; process spilled bits and right half of sprite data - ; + ; set counter for remaining stripes + LOADC SPRITE_STRIPES - 1 + STORE PS_STRIPE_C + ; + ; process spilled bits and next vertical stripe of sprite data + ; +PS_NEXT_STRIPE: ; put spill bits on stack for later LOAD PS_SPILL @@ -176,7 +182,9 @@ PS_LOOP2_X: ; reset spill bits LOADC 0 STORE PS_SPILL - + + ; last spill bits are on ToS now + ; shift pixel data to right LOAD PS_SHIFT_C ; load shift count PS_LOOP3: ; test it for zero @@ -230,8 +238,14 @@ PS_LOOP3_X: SWAP STOREI DROP - - ; write spilled bits into next vmem word + + LOAD PS_STRIPE_C ; decrement stripe count + DEC 1 + DUP + STORE PS_STRIPE_C + CBRANCH.NZ PS_NEXT_STRIPE ; if non-zero, next stripe + + ; write spilled bits of the last stripe into next vmem word LOAD PS_SPILL ; get spill bits DUP LOADCP CALC_MASK ; calculate sprite mask for spill bits @@ -274,7 +288,8 @@ PS_L_XT: .EQU UD_S_BGDATA 12 .EQU UD_S_OFFSET 16 .EQU UD_S_BGORIG 20 - .EQU UD_S_FS 24 + .EQU UD_STRIPE_C 24 + .EQU UD_S_FS 28 UNDRAWSPRITE: FPADJ -UD_S_FS STORE UD_S_BGORIG @@ -318,25 +333,35 @@ UD_S_L1: STOREI ; reuse addr from STOREI - ; load 2nd word of background data + LOADC SPRITE_STRIPES - 1 ; set remaining stripe count + STORE UD_STRIPE_C + +UD_NEXT_STRIPE: + ; load next word of background data LOAD UD_S_BGDATA INC 4 DUP STORE UD_S_BGDATA LOADI STOREI ; and write it to vmem - DROP + ; reuse addr from STOREI - ; if pixel shift is zero, no 3rd word + LOAD UD_STRIPE_C ; decrease remaining stripe count + DEC 1 + DUP + STORE UD_STRIPE_C + CBRANCH.NZ UD_NEXT_STRIPE ; if non-zero, next stripe + + DROP ; remove addr from STOREI + + ; if pixel shift is zero, no spill word LOAD UD_S_PXS CBRANCH.Z UD_S_L2 - ; load 3rd word of background data + ; load next word of background data LOADCP FB_IO LOAD UD_S_BGDATA INC 4 - DUP - STORE UD_S_BGDATA LOADI STOREI ; and write it to vmem DROP diff --git a/examples/walking.sprt b/examples/walking.sprt new file mode 100644 index 0000000000000000000000000000000000000000..2cdd0ceda91d8f52c7e9e6e4471d8620271d1dea GIT binary patch literal 2056 zcmd5-2@1n74D;}Z0{O_;_W!p`P9e6`LRcxRDTOF@d`Lv-yrjIp~i z6xH?{Jhnp6JWG)G7v@`RY=`Hl__?L3) Date: Sun, 22 Jun 2025 00:33:02 +0200 Subject: [PATCH 46/80] vga framebuffer: use 640x480@60Hz video timings - we still can only display 400 lines, so 80 blank lines are added at the bottom - we get square pixels this way and are hopefully more compatible with monitors and other devices like scan converters and capture cards --- tridoracpu/tridoracpu.srcs/vgafb.v | 27 +++++++++++++++++++++++---- tridoracpu/tridoracpu.xpr | 30 ++++++++++++++++-------------- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/tridoracpu/tridoracpu.srcs/vgafb.v b/tridoracpu/tridoracpu.srcs/vgafb.v index 37c1376..f87e514 100644 --- a/tridoracpu/tridoracpu.srcs/vgafb.v +++ b/tridoracpu/tridoracpu.srcs/vgafb.v @@ -6,8 +6,11 @@ // Learn more at https://projectf.io //128K video memory is not enough for 640x480x4 -`define RES_640_400 +//`define RES_640_400 //`define RES_1024_768 +// RES_640_480 mode displays 400 lines with 640x480/60 video timings, +// adding blank lines at the bottom +`define RES_640_480 module display_timings #( H_RES=640, // horizontal resolution (pixels) @@ -126,6 +129,8 @@ module vgafb #(VMEM_ADDR_WIDTH = 15, VMEM_DATA_WIDTH = 32) ( localparam COLOR_WIDTH = 12; localparam PALETTE_WIDTH = 4; + localparam signed PIC_LINES = 400; // visible picture lines + // Display Clocks wire pix_clk = CLK; // pixel clock wire clk_lock = 1; // clock locked? @@ -202,6 +207,18 @@ module vgafb #(VMEM_ADDR_WIDTH = 15, VMEM_DATA_WIDTH = 32) ( .V_BP(35), .H_POL(0), .V_POL(1) + `endif + `ifdef RES_640_480 + .H_RES(640), // 640 800 1280 1920 + .V_RES(480), // 480 600 720 1080 + .H_FP(16), // 16 40 110 88 + .H_SYNC(96), // 96 128 40 44 + .H_BP(48), // 48 88 220 148 + .V_FP(10), // 10 1 5 4 + .V_SYNC(2), // 2 4 5 5 + .V_BP(33), // 33 23 20 36 + .H_POL(0), // 0 1 1 1 + .V_POL(0) // 0 1 1 1 `endif ) display_timings_inst ( @@ -217,6 +234,8 @@ module vgafb #(VMEM_ADDR_WIDTH = 15, VMEM_DATA_WIDTH = 32) ( .o_sy(sy) ); + wire pic_enable = (sy >= 0) && (sy < PIC_LINES); // when to display pixels from VRAM + wire [7:0] red; wire [7:0] green; wire [7:0] blue; @@ -288,7 +307,7 @@ module vgafb #(VMEM_ADDR_WIDTH = 15, VMEM_DATA_WIDTH = 32) ( // 12 bit RGB palette assign VGA_HS = h_sync; assign VGA_VS = v_sync; - assign VGA_R = de ? color_data[11:8] : 4'b0; - assign VGA_G = de ? color_data[7:4] : 4'b0; - assign VGA_B = de ? color_data[3:0] : 4'b0; + assign VGA_R = (pic_enable && de) ? color_data[11:8] : 4'b0; + assign VGA_G = (pic_enable && de) ? color_data[7:4] : 4'b0; + assign VGA_B = (pic_enable && de) ? color_data[3:0] : 4'b0; endmodule diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index 24f05b5..b0ba2bb 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -351,7 +351,9 @@ - + + Vivado Synthesis Defaults + @@ -361,9 +363,7 @@ - - Vivado Synthesis Defaults - + @@ -371,21 +371,25 @@ - + - + + Best predicted directive for place_design. + - + + + - + - + - + @@ -393,15 +397,13 @@ - + - - Default settings for Implementation. - + From 901a2b3e6d9411bbfddd235eb370807277ce7c03 Mon Sep 17 00:00:00 2001 From: slederer Date: Thu, 3 Jul 2025 00:45:26 +0200 Subject: [PATCH 47/80] sasm: set stack size correctly --- pcomp/sasm.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcomp/sasm.pas b/pcomp/sasm.pas index 7b01f32..1858f11 100644 --- a/pcomp/sasm.pas +++ b/pcomp/sasm.pas @@ -1,7 +1,7 @@ (* Copyright 2021-2024 Sebastian Lederer. See the file LICENSE.md for details *) {$MODE objfpc} {$H600} -{$S4} +{$S32} program sasm; {$!}{$ifdef FPC}uses math,crt;{$endif} {$R+} From 8c420dff752909b20669fc739c54f1cd00f25e67 Mon Sep 17 00:00:00 2001 From: slederer Date: Sat, 5 Jul 2025 00:05:44 +0200 Subject: [PATCH 48/80] changemem: program to change heap/stack size in program files --- pcomp/Makefile | 1 + pcomp/make.bat | 1 + progs/changemem.pas | 173 ++++++++++++++++++++++++++++++++++++++++++++ utils/tdrimg.py | 1 + 4 files changed, 176 insertions(+) create mode 100644 progs/changemem.pas diff --git a/pcomp/Makefile b/pcomp/Makefile index 4200997..6cace65 100644 --- a/pcomp/Makefile +++ b/pcomp/Makefile @@ -31,6 +31,7 @@ nativeprogs: nativecomp $(PCOMP) ../progs/partmgr.pas $(PCOMP) ../progs/xfer.pas $(PCOMP) ../progs/recover.pas + $(PCOMP) ../progs/changemem.pas $(SASM) ../lib/rommon.s $(SASM) -A ../lib/rommon.s ../lib/rom.mem diff --git a/pcomp/make.bat b/pcomp/make.bat index 0db1f59..564885d 100644 --- a/pcomp/make.bat +++ b/pcomp/make.bat @@ -28,6 +28,7 @@ py pcomp.py ..\progs\dumpdir.pas py pcomp.py ..\progs\partmgr.pas py pcomp.py ..\progs\xfer.pas py pcomp.py ..\progs\recover.pas +py pcomp.py ..\progs\changemem.pas sasm ..\lib\rommon.s sasm -A ..\lib\rommon.s ..\lib\rom.mem diff --git a/progs/changemem.pas b/progs/changemem.pas new file mode 100644 index 0000000..7c0bca8 --- /dev/null +++ b/progs/changemem.pas @@ -0,0 +1,173 @@ +program changemem; +const ProgramMagic = $00100AFE; +type ProgramHeader = record + magic:integer; + heapSize:integer; + stackSize:integer; + mainPtr:integer; + end; + +var filename:string; + h:ProgramHeader; + +procedure showHex(value:integer); +var i:integer; + digit:integer; + digits:array[1..8] of char; + ch:char; +begin + for i := 1 to 8 do + begin + digit := value and 15; + value := value shr 4; + + if digit < 10 then + ch := chr(digit + ord('0')) + else + ch := chr(digit - 10 + ord('A')); + digits[i] := ch; + end; + for i := 8 downto 1 do + write(digits[i]); +end; + +procedure showValue(labl:string; value:integer); +begin + write(labl:20, ' '); + write(value:8, ' ('); + showHex(value); + writeln(')'); +end; + +procedure showHeader(var h:ProgramHeader); +begin + showValue('heap size', h.heapSize); + showValue('stack size', h.stackSize); + showValue('main entry point', h.mainPtr); +end; + +procedure readHeader(var filename:string;var h:ProgramHeader); +var f:file; +begin + writeln('reading file ', filename); + open(f, filename, ModeReadOnly); + if IOResult(f) <> 0 then + begin + writeln('Error opening file: ', ErrorStr(IOResult(f))); + halt; + end + else + begin + read(f, h); + if IOResult(f) <> 0 then + begin + writeln('Error reading header: ', ErrorStr(IOResult(f))); + halt; + end; + close(f); + end; +end; + +procedure writeHeader(var filename:string;var h:ProgramHeader); +var f:file; +begin + writeln('writing file ', filename); + open(f, filename, ModeModify); + if IOResult(f) <> 0 then + begin + writeln('Error opening file: ', ErrorStr(IOResult(f))); + halt; + end + else + begin + write(f, h); + if IOResult(f) <> 0 then + begin + writeln('Error writing header: ', ErrorStr(IOResult(f))); + halt; + end; + close(f); + end; +end; + +procedure modifyHeader(var filename:string;var h:ProgramHeader); +var done:boolean; + ch:char; + changed:boolean; + + function getNewValue(descr:string):integer; + var buf:string; + v,e:integer; + begin + getNewValue := 0; + write('New ',descr, ' size (decimal)> '); + readln(buf); + val(buf, v, e); + if(e > 0 ) or (v <= 0) then + writeln('invalid size') + else + getNewValue := v; + end; + + procedure changeStackSize; + var v:integer; + begin + v := getNewValue('stack'); + if v > 0 then + begin + h.stackSize := v; + changed := true; + end; + end; + + procedure changeHeapSize; + var v:integer; + begin + v := getNewValue('heap'); + if v > 0 then + begin + h.heapSize := v; + changed := true; + end; + end; + +begin + changed := false; done := false; + + while not done do + begin + writeln(filename, ' header:'); + showHeader(h); + writeln('Change H)eap size Change S)tack size eX)it'); + write('> '); + read(ch); + writeln; + case upcase(ch) of + 'S': changeStackSize; + 'H': changeHeapSize; + 'X': done := true; + else + writeln('invalid command'); + end; + end; + + if changed then + writeHeader(filename, h); +end; + +begin + if ParamCount > 0 then + filename := ParamStr(1) + else + begin + write('File name> '); + readln(filename); + end; + + readHeader(filename, h); + + if h.magic <> ProgramMagic then + writeln('invalid magic value ', h.magic) + else + modifyHeader(filename, h); +end. diff --git a/utils/tdrimg.py b/utils/tdrimg.py index a120250..83f7e35 100644 --- a/utils/tdrimg.py +++ b/utils/tdrimg.py @@ -536,6 +536,7 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../progs/editor.prog", None , f, part, partstart, slotnr) slotnr = putfile("../progs/xfer.prog", None , f, part, partstart, slotnr) slotnr = putfile("../progs/recover.prog", None , f, part, partstart, slotnr) + slotnr = putfile("../progs/changemem.prog", None , f, part, partstart, slotnr) listdir(f, part) From 91306135b2ddd2b76a5adf5718dbdd5a410095e3 Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 13 Jul 2025 02:10:03 +0200 Subject: [PATCH 49/80] tdrimg: changes to createimg, rogue: update submodule --- rogue | 2 +- utils/tdrimg.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/rogue b/rogue index b0cfc83..73936b4 160000 --- a/rogue +++ b/rogue @@ -1 +1 @@ -Subproject commit b0cfc8334349d51f2610b24c023b6498be3fb17b +Subproject commit 73936b4167bad01642675252e53a096d80fa6b35 diff --git a/utils/tdrimg.py b/utils/tdrimg.py index 83f7e35..1195649 100644 --- a/utils/tdrimg.py +++ b/utils/tdrimg.py @@ -585,7 +585,7 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../tests/test133.pas", None , f, part, partstart, slotnr) # slotnr = putfile("../tests/test133.prog", None , f, part, partstart, slotnr) - slotnr = putfile("../tests/test159.pas", None , f, part, partstart, slotnr) + # slotnr = putfile("../tests/test159.pas", None , f, part, partstart, slotnr) # slotnr = putfile("../tests/test159.prog", None , f, part, partstart, slotnr) slotnr = putfile("../tests/umlaut.pas", None , f, part, partstart, slotnr) From 0ea7dcef2943eab435c3a50c769534053da8924c Mon Sep 17 00:00:00 2001 From: slederer Date: Fri, 15 Aug 2025 23:43:09 +0200 Subject: [PATCH 50/80] improve Makefile, update example pictures --- examples/LICENSES.md | 7 +++++- examples/Toco_Toucan.pict | Bin 0 -> 128072 bytes examples/animate.pas | 40 +++++++++++++++++++++++++----- examples/background.pict | Bin 128072 -> 128072 bytes examples/rocket.sprt | Bin 0 -> 2056 bytes examples/shinkansen.pict | Bin 128072 -> 128072 bytes examples/snow_leopard.pict | Bin 128072 -> 128072 bytes examples/xmas.pas | 4 +++ pcomp/Makefile | 43 +++++++++++++++------------------ tridoracpu/tridoracpu.xpr | 8 ++---- tridoraemu/ADDS-Envoy-620.pict | Bin 0 -> 128072 bytes utils/png2pict.py | 21 ++++++++++------ utils/tdrimg.py | 16 +++++++----- 13 files changed, 89 insertions(+), 50 deletions(-) create mode 100644 examples/Toco_Toucan.pict create mode 100644 examples/rocket.sprt create mode 100644 tridoraemu/ADDS-Envoy-620.pict diff --git a/examples/LICENSES.md b/examples/LICENSES.md index 8992b88..6f0bb8b 100644 --- a/examples/LICENSES.md +++ b/examples/LICENSES.md @@ -7,4 +7,9 @@ https://commons.wikimedia.org/wiki/File:Ara-Zoo-Muenster-2013.jpg https://commons.wikimedia.org/wiki/File:Snow_leopard_portrait.jpg * shinkansen.pict: 投稿者が撮影, CC BY-SA 3.0 , via Wikimedia Commons https://commons.wikimedia.org/wiki/File:0key22-86.JPG - +* Toco_Toucan.pict: Bernard DUPONT, CC BY-SA 2.0 , via Wikimedia Commons +https://commons.wikimedia.org/wiki/File:Toco_Toucan_(Ramphastos_toco)_-_48153967707.jpg +* 1911_Detroit_Electric.pict: Cullen328, CC BY-SA 3.0 , via Wikimedia Commons +https://commons.wikimedia.org/wiki/File:1911_Detroit_Electric.jpg +* ADDS-Envoy-620.pict: ADDS Envoy-1.jpg from terminals-wiki.org, CC-BY-SA 3.0 +https://terminals-wiki.org/wiki/index.php/File:ADDS_Envoy-1.jpg diff --git a/examples/Toco_Toucan.pict b/examples/Toco_Toucan.pict new file mode 100644 index 0000000000000000000000000000000000000000..341f6923a12b3fa8d6d4f69629957738c32e61d4 GIT binary patch literal 128072 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 _hR9KKR@$(tCRFYrJ_Iu;~4{V$u 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 literal 0 HcmV?d00001 diff --git a/examples/animate.pas b/examples/animate.pas index 2869c46..0e4bb73 100644 --- a/examples/animate.pas +++ b/examples/animate.pas @@ -24,6 +24,7 @@ var pic:PictData; infile:file; ch:char; stickMan:Sprite; + rocket:Sprite; procedure WaitVSync; external; @@ -80,6 +81,12 @@ begin aSprite.y := aSprite.y + aSprite.ydelta; if aSprite.x > 608 then aSprite.x := 0; + + if aSprite.y < 0 then + begin + aSprite.y := 200; + aSprite.x := 0; + end; end; aSprite.frameLeft := frameLeft; end; @@ -87,6 +94,7 @@ end; procedure animLoop; var i:integer; oldX,oldY:integer; + roldX,roldY:integer; begin stickMan.x := 0; stickMan.y := 310; @@ -96,26 +104,39 @@ begin stickMan.xdelta := 2; stickMan.ydelta := 0; - oldX := stickMan.x; - oldY := stickMan.y; + + rocket.x := 0; + rocket.y := 200; + rocket.frameTime := 1; + rocket.frameLeft := rocket.frameTime; + rocket.curFrame := 0; + rocket.xdelta := 2; + rocket.ydelta := -1; while not ConAvail do begin oldX := stickMan.x; oldY := stickMan.y; - + + roldX := rocket.x; + roldY := rocket.y; + + PutSprite(roldX, roldY, rocket.frame[rocket.curFrame]); PutSprite(oldX, oldY, stickMan.frame[stickMan.curFrame]); + animateSprite(rocket); animateSprite(stickMan); - Delay(10); + + {Delay(1);} WaitVSync; UndrawSprite(oldX, oldY, pic.pixeldata); + UndrawSprite(roldX, roldY, pic.pixeldata); end; end; begin - filename := 'grey.pict'; + filename := 'background.pict'; open(infile, filename, ModeReadonly); read(infile, pic); close(infile); @@ -125,12 +146,19 @@ begin loadPalette(pic); showPic(pic); - open(infile, 'Walking.sprt', ModeReadOnly); + open(infile, 'walking.sprt', ModeReadOnly); loadSpriteFrame(stickMan, 0, infile, 0); loadSpriteFrame(stickMan, 1, infile, 1); loadSpriteFrame(stickMan, 2, infile, 2); loadSpriteFrame(stickMan, 3, infile, 3); close(infile); + open(infile, 'rocket.sprt', ModeReadOnly); + loadSpriteFrame(rocket, 0, infile, 0); + loadSpriteFrame(rocket, 1, infile, 1); + loadSpriteFrame(rocket, 2, infile, 2); + loadSpriteFrame(rocket, 3, infile, 3); + close(infile); + animLoop; end. diff --git a/examples/background.pict b/examples/background.pict index 76b99f645b605e71a29ff6884c66fbe0729a00f6..55e7a2c02072cc8b4a8a1b921466d67bea03eeb2 100644 GIT binary patch literal 128072 zcmeFaOKv2|wywt@C|pSgk{ASW3OLnC55z#|jzDhQo`!HXl&bbEp@5o#pi!LN-K|}> zshWglpb-er45aV-mzlfAi%GIFv$ATZk@SZ>*5kK-nVCN#_&@*W|K+Efo0|=Pr2poB zy}9{s|M#1lfB8ReZvKb=hvV(d&3|`G!T-VE|9x}wKfb%U`JetT{{Dl%|Bt-?!rwpm z`+xcSmcAkIM?v8Jk7DRIJFg?q2CeHA{#YenoRfbt{Qg+I{mt4x1Ood%gq5!_@@+x? zwpN(+_zKg$RsDv52yC8?aCkHKj->n(oovQ`B4@w3`VE0^2z*1}b0M(#;+JKg%ah+n z?&0wJ=>4;3Jsh6?EUx?>eryhhZvp&Ufd3Z1Z$+={LeOdWm1i#0p?$qYbcD20u0`YruGo$vnqGHGN+y0{nbe3=a z6gRtmhXvE2c=z}vM%$0}<{z-aV~DqDF#Z7@_`OZeZNftF_crAZss9lG{ri^Qh5+~Z zN#ADQx1mQX$oK70)0@$|xw#X+KiReKZ-C?VO@9ykzR1PF>!Em4i{AskKhb!b3FPTb z$iKPK=1(-=-^sr(?9ZQRy;=Bu(Fw#UfBcxn-{E5RP4R>)gz(!2q&NDw6~8wb`}H*f zJB)hc3g)frp1a?6yXR{fKJS7-q4?_FJ-mB$lWOo*;H!1n{6^KExLFINx0&?jW!!I@ zuf8Jw&A5Hp8_;hCzS#4zx#tse>=|(jY`-m}o>6hB=#3N4B~ia`-h$en?E&T&!S!yn zjM)C3QL%m$edhVv%Co}XHRI@0hQD!8`h1Rjy-#OW^!t47|7OXL%P3Q_e$Pl*d-Dew z#?RvS4`TNk>en8BR*HO9;ji`d&sP80sp!w2bP_(9!kQ z^=g0ilIQq$b8Y?=bn*KWt#95soIlII+bih$MlT;S_%bi{{(%{Mm0#Rof`8A<&VOL1 zzl7Hcv4XZxJNTY&pdySKFZ_Nr7z?dSjP$`IEpT-*PNo;zQ2@df#tpYPv}-y2)L zz^t#K%8S;wn;$oCoVfSj-V~*mH$VUU>;mR05xlm$eriAzSkvQ|9&Ij+wc>&KiU0* zw*fK#*NWFS|91a0n7w%jd(ryx_1*GEYw^bAGgrXBucz1Mt}i_#U*z9QjCeEfp9c5e zS^ez9MX1KP`1--u;=pwazevfO`S(Sv`(#R9!iYC1yU4#cN&2cAeZ%h+-SZ`fmUpkP z>yJ|P?&6^Id8{8kkJx`2saFSvFBt@XT(sYK|K&?N{PlL`#rXZ|%>8Ot2`B$&=1cSH zx9IyiFulmX-{RJnYWsD3&)6ULqf%eT7iDe!u>AWv-oCkv-&Z$(e5pa<)p{<+@7FOj zzuKA4(O~&h?M3OA`S%UK4%WxMP2e*Bd^YqgiNM`6Z_rzQd-46XFL?c}5nploD1PH5 zheP8QsZayzK*NbG7<0|9vXhbB^o{JNfln^-y4O!Kp*RY7u5O! zRW^Xvu*>ec%g@dr7e67h`F!8M@|EDX*$%@Rz1{9&9Ht*%-{TiS{WP5TD&lu@#Js}s zI{%)!l0UI5=l`t8nF-+xyALAYVquAtf!cx=x&^aA*9ZYNp}=lpv-hx8@lzVbSN z1$xIoF%~}X2MBL5p72E=pCdnMym|IpO-?HRQBIBA;>CvOZFseX%)^S4ukhz#K%}%)U*XYn$()5-Ru)U@@o7$9sQ2~ z1L9TuHq&tPJ#79>6#7k#Uk-%dQ*V0zp3T$C+W{N!2?2&~w~uy$4#Q+oGknjlAYRD7 z&0+YLUw^$p+%X8`pZ3UW4E_vtMelvm4&u02+q|*ajw06*4u^gT z-;XU`uH$!j2Yw96$NYoh)0>9rmwWZ9ns++=!w(?$;lmHc@B6==bog~~59P>x5C4YW z6ZqY~YvDUwZ=RB8@H2il56AF9ziAq;4w@fP_UVf=ZGaxoy-)NWKK$@P{5HUcK}2rD zt?!=1udiM{ChR(Xlgr5M!?A!n@%wrPzy{wB!bbuDP<+|&%n+w*XXrTrX=9uH9~T_nFx{b1-}>JmQXKJdN&AbjxdhYx}8!;1#Mnm9Hmp&JU;SD$hD zz~cFsJr``h`uyW|;_8i+`LP7)w?AExUl996vWk5_1U}FcKIf44$0lDgg?ZQPO(X=g z)y7NIw)p!f{jPsWANYAM5&o?VV6p?g{pqB#s__L6@AO&3pdYY_-v?0q@FDoE%|11X z3pBGbbt`1Mo_|MznlkB^0rIr*@%hycItM>w9NmDqWAVb`{No*btmLztVTmw58AoH?o$zIJ{Vb5YMrf`3q?@V1ClkjX z{wjP&adRZNb$^CF$kx(K#)R+f3*o!Dir?K7_>Sj~&EuAv+z%fgR=ZW7Z!cGzI*iyK z{wn(*mr1G=BK&hXdTZj2+`z`2&3GQAhxTo-dSg{Ia!+c3yoM zxAX6vqd`x1Ouy5#>tjaG{_=aHP52VK?7Z-J&)5f+9RK^(`0ZoQwo#ysPWag4SNi1< z`tTyJ7XGbqqG{*fkm0n+0>Axkw?A1_A1S(f?G2=()-OG2@Bx`g_8n>w{jWyynAp8Q z!ZqiBjAab>*wM)v_YM)HC+X+2%NIp&z9{#y%@_Gc)a-WCI2{G`ar-awKWy$C>;O#g ze)#JTI&K^%9o};b0TB3IcfD2~nZ4-`Crx1J524X3=y!eoc$nw}#(`7*P5Z}3 zCU(?ZPIu$w{7;!ntT|T@yBofLd*kIY=d2YL^~FyNyEq?$q+{T%(s zd{MggO*1$0Z+nZNwF!?0a!G4TUZm#JR)QafF z#SzHRZyx&yS`zRX%LN}i4E4YQm%0D3v9;bm7JTc661-$8R(DEa-l5hjCJ#kkMAZWL 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 diff --git a/examples/rocket.sprt b/examples/rocket.sprt new file mode 100644 index 0000000000000000000000000000000000000000..3108b4a9762d1ec95a5f4fde13e0717d3022ea88 GIT binary patch literal 2056 zcmeH{u};G<5J1mDcamOxI`~e795KER?^4x)6U|>cHU9uAL1GEfCjPOyM z<22Y^SU^;$mXhe{Y@efd=ZmxRO8{W>{L)~EcrxzIFp)GyM&U5uGLs@vcgvm;0cdin zZkK}Ms1%}D;q@ zd0#(L%8~2Z*nqh)l{->79M!LaG>@1K$%p7(e*UX}s3QMB`U3yJZQBI?fePR?@DEe~ zZQvU$6+p-{`!$bf7 n-TnWaf3xG?#{Ny+hW*d&s;+~2p!V+tkM}>PYKZ(h{5k)hxWAXA literal 0 HcmV?d00001 diff --git a/examples/shinkansen.pict b/examples/shinkansen.pict index 7b1ac55d261bc1f2536bc870f1a3119507401972..e180d5b368a396823c8cc536c4eb948076fa818b 100644 GIT binary patch literal 128072 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 z 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�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 z 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 G{Qfsf$9=y5 literal 128072 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 XFEtMNgb^v?HPKCBaB%SdlYjpQ=KrLF diff --git a/examples/xmas.pas b/examples/xmas.pas index 12b2da3..406e944 100644 --- a/examples/xmas.pas +++ b/examples/xmas.pas @@ -1,3 +1,7 @@ +(* This program does not work anymore, because + it uses the old sprite routines with 16x16 sprites. + It is only included for historical reasons. + *) program XmasAnimation; uses sprites; diff --git a/pcomp/Makefile b/pcomp/Makefile index 6cace65..e183f73 100644 --- a/pcomp/Makefile +++ b/pcomp/Makefile @@ -3,12 +3,17 @@ SASM=./sasm LSYMGEN=./lsymgen .SUFFIXES: -.SUFFIXES: .pas .o +.SUFFIXES: .pas .o .s .prog + +.pas.s: + $(PCOMP) $< +.s.prog: + $(SASM) $< .pas: fpc -Mobjfpc -gl $< -all: pcomp sasm sdis lsymgen shortgen +all: pcomp sasm sdis lsymgen shortgen nativeprogs libs: pcomp sasm lsymgen shortgen $(SASM) ../lib/coreloader.s @@ -17,33 +22,23 @@ libs: pcomp sasm lsymgen shortgen $(SASM) ../lib/stdlibwrap.s ../lib/stdlib.lib $(LSYMGEN) ../lib/stdlibwrap.sym ../lib/stdlib.lsym -nativecomp: pcomp sasm libs - $(PCOMP) sasm.pas - $(PCOMP) pcomp.pas - $(PCOMP) lsymgen.pas - $(PCOMP) shortgen.pas +test: sasm.s pcomp.s lsymgen.s shortgen.s -nativeprogs: nativecomp - $(PCOMP) ../progs/shell.pas - $(PCOMP) ../progs/editor.pas - $(PCOMP) ../progs/reclaim.pas - $(PCOMP) ../progs/dumpdir.pas - $(PCOMP) ../progs/partmgr.pas - $(PCOMP) ../progs/xfer.pas - $(PCOMP) ../progs/recover.pas - $(PCOMP) ../progs/changemem.pas +testprgs: sasm.prog pcomp.prog lsymgen.prog shortgen.prog + +nativecomp: libs pcomp.prog sasm.prog lsymgen.prog shortgen.prog + +nativeprogs: pcomp ../progs/shell.prog ../progs/editor.prog ../progs/reclaim.prog \ + ../progs/dumpdir.prog ../progs/partmgr.prog ../progs/xfer.prog \ + ../progs/recover.prog ../progs/changemem.prog $(SASM) ../lib/rommon.s $(SASM) -A ../lib/rommon.s ../lib/rom.mem -examples: nativecomp - $(PCOMP) ../tests/readtest.pas - $(PCOMP) ../tests/readchartest.pas - $(PCOMP) ../tests/timetest.pas - $(PCOMP) ../tests/test133.pas +examples: nativecomp ../tests/readtest.prog ../tests/readchartest.prog ../tests/timetest.prog \ + ../tests/test133.prog ../tests/cchangetest.prog ../tests/tree.prog -$(PCOMP) ../examples/chase.pas - $(PCOMP) ../tests/cchangetest.pas - $(PCOMP) ../tests/tree.pas + -$(SASM) ../examples/chase.s -$(MAKE) -C ../rogue -f Makefile.tridoracpu clean: - rm -f pcomp sasm sdis libgen lsymgen *.o *.s + rm -f pcomp sasm sdis libgen lsymgen *.o *.s *.prog diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index b0ba2bb..304490b 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -351,9 +351,7 @@ - - Vivado Synthesis Defaults - + @@ -373,9 +371,7 @@ - - Best predicted directive for place_design. - + diff --git a/tridoraemu/ADDS-Envoy-620.pict b/tridoraemu/ADDS-Envoy-620.pict new file mode 100644 index 0000000000000000000000000000000000000000..7394d5d82949cf1f2c0085bb2285a035449c610e GIT binary patch literal 128072 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

Hg1(KpPLCSV$R$`*4V@Yy(o`^| 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 4 + g4 = g >> 4 + b4 = b >> 4 + c12 = r4 << 8 | g4 << 4 | b4 + + outfile.write(c12.to_bytes(4, 'big')) + def process_palette(outfile, palette): - for r,g,b in palette: - r4 = r >> 4 - g4 = g >> 4 - b4 = b >> 4 - c12 = r4 << 8 | g4 << 4 | b4 - - outfile.write(c12.to_bytes(4, 'big')) + if len(palette[0]) == 4: + for r,g,b,a in palette: + write_palette_word(outfile, r, g, b) + else: + for r,g,b in palette: + write_palette_word(outfile, r, g, b) def write_header(outfile): diff --git a/utils/tdrimg.py b/utils/tdrimg.py index 1195649..6061a98 100644 --- a/utils/tdrimg.py +++ b/utils/tdrimg.py @@ -592,9 +592,6 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../examples/rtpair.pas", None , f, part, partstart, slotnr) - slotnr = putfile("../examples/5cubes.pas", None , f, part, partstart, slotnr) - # slotnr = putfile("../examples/5cubes.prog", None , f, part, partstart, slotnr) - slotnr = putfile("../examples/3dcube.pas", None , f, part, partstart, slotnr) slotnr = putfile("../examples/conway.pas", None , f, part, partstart, slotnr) @@ -604,12 +601,19 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../examples/lines.pas", None , f, part, partstart, slotnr) slotnr = putfile("../examples/pictviewer.pas", None , f, part, partstart, slotnr) - slotnr = putfile("../examples/ara.pict", "ara.pict" , f, part, partstart, slotnr) - slotnr = putfile("../examples/shinkansen.pict", "shinkansen.pict" , f, part, partstart, slotnr) - slotnr = putfile("../examples/snow_leopard.pict", "snow_leopard.pict" , f, part, partstart, slotnr) + slotnr = putfile("../examples/Toco_Toucan.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/shinkansen.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/snow_leopard.pict", None , f, part, partstart, slotnr) slotnr = putfile("../examples/benchmarks.pas", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/animate.pas", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/sprites.inc", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/sprites.s", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/background.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/walking.sprt", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/rocket.sprt", None , f, part, partstart, slotnr) + listdir(f, part) part, partstart, slotnr = initfs(f, 5) From 95cc02ffcb47a0ad89d3bb3c51a124c840806c07 Mon Sep 17 00:00:00 2001 From: slederer Date: Fri, 22 Aug 2025 02:20:21 +0200 Subject: [PATCH 51/80] stdlib: fix memory leak on file errors stdlib: throw runtime error when reading invalid real number stdlib: bugfix val (real) for empty strings tdrimg: add another demo image --- doc/pascalprogramming.md | 4 +++- lib/stdlib.pas | 46 +++++++++++++++++++++++++++++++--------- utils/tdrimg.py | 1 + 3 files changed, 40 insertions(+), 11 deletions(-) diff --git a/doc/pascalprogramming.md b/doc/pascalprogramming.md index f45a0be..b534f2b 100644 --- a/doc/pascalprogramming.md +++ b/doc/pascalprogramming.md @@ -153,10 +153,12 @@ var f:file; ### Error Handling When an I/O error occurs, the _IOResult_ function can be called to get the error code. Unlike TP, the _IOResult_ function requires a file variable as a parameter. When you call _IOResult_, an error that may have occurred is considered to be _acknowledged_. If an -error is not ackowledged and you do another I/O operation, a runtime error is thrown. +error is not ackowledged and you do another I/O operation on that file, a runtime error is thrown. That means you can either write programs without checking for I/O errors, while resting assured that the program will exit if an I/O error occurs. You can also choose to check for errors with _IOResult_ if you want to avoid having runtime errors. +If an I/O error occurs on a file, it is then considered closed. Closing a file in this state, or a file that has been closed normally, will cause a runtime error. + The function _ErrorStr_ from the standard library takes an error code as an argument and returns the corresponding textual description as a string. Example: diff --git a/lib/stdlib.pas b/lib/stdlib.pas index 8ad45d9..dc122eb 100644 --- a/lib/stdlib.pas +++ b/lib/stdlib.pas @@ -1183,7 +1183,17 @@ ext: code := 0; end else - code := i - 1; + begin + if i = 1 then (* empty string gives error position 1 *) + code := 1 + else + code := i - 1; + end; +end; + +procedure errorhalt(var fil:file); +begin + RuntimeError(ioerrordesc[fil.lastError]); end; procedure checkerror(var fil:file); @@ -1191,7 +1201,7 @@ begin if fil.lastError <> 0 then begin if not fil.errorAck then - RuntimeError(ioerrordesc[fil.lastError]) + errorhalt(fil) else begin fil.lastError := 0; @@ -1334,12 +1344,16 @@ procedure freadreal(var v:real;var f:file); var buf:string[40]; errpos:integer; begin + errpos := -1; fskipwhite(f); fscanbuf(f,ScanReal, buf); if f.lastError = 0 then val(buf, v, errpos); if errpos <> 0 then + begin fileerror(f, IOInvalidFormat); + checkerror(f); + end; end; procedure freadstring(var s:string; var f:file); @@ -1665,12 +1679,21 @@ begin { writeln(' readbuf data: ', fil.buffer^[0][0]); } end; +procedure close(var aFile:file); forward; + +(* Set error state on file and close it. + Buffer will not be flushed as that might + have caused the error. +*) procedure fileerror(var fil:file; error:integer); begin - (* should check if there was an error already - and throw a runtime error in that case *) fil.lastError := error; fil.errorAck := false; + if fil.buffer <> nil then + begin + fil.needsflush := false; + close(fil); + end; end; function IOResult(var fil:file):integer; @@ -2052,19 +2075,22 @@ procedure close(var aFile:file); begin if aFile.typ = IODiskFile then begin + if aFile.lastError = IOFileClosed then + errorhalt(aFile); { writeln('close needsflush:', aFile.needsflush, ' changed:', aFile.changed, ' error:', aFile.lastError); } if aFile.needsflush then flushfile(aFile); + + { writeln('close f.buffer:', aFile.buffer); } + dispose(aFile.buffer); + aFile.buffer := nil; + if aFile.lastError = 0 then begin - fileerror(aFile, IOFileClosed); - { writeln('close f.buffer:', aFile.buffer); } - dispose(aFile.buffer); - aFile.buffer := nil; - if aFile.changed then updatedirslot(aFile); - + if aFile.lastError = 0 then + fileerror(aFile, IOFileClosed); end; closevolumeid(aFile.volumeid); diff --git a/utils/tdrimg.py b/utils/tdrimg.py index 6061a98..be93ed9 100644 --- a/utils/tdrimg.py +++ b/utils/tdrimg.py @@ -604,6 +604,7 @@ def create_image_with_stuff(imgfile): slotnr = putfile("../examples/Toco_Toucan.pict", None , f, part, partstart, slotnr) slotnr = putfile("../examples/shinkansen.pict", None , f, part, partstart, slotnr) slotnr = putfile("../examples/snow_leopard.pict", None , f, part, partstart, slotnr) + slotnr = putfile("../examples/ADDS-Envoy-620.pict", None , f, part, partstart, slotnr) slotnr = putfile("../examples/benchmarks.pas", None , f, part, partstart, slotnr) From 165517a9c8446ebaafba45b296a3aee138648c0f Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 24 Aug 2025 02:04:42 +0200 Subject: [PATCH 52/80] runtime: add MemAvail function --- lib/runtime.s | 27 +++++++++++++++++++++++++++ lib/stdlib.inc | 1 + 2 files changed, 28 insertions(+) diff --git a/lib/runtime.s b/lib/runtime.s index 6f248b9..a230e09 100644 --- a/lib/runtime.s +++ b/lib/runtime.s @@ -1764,6 +1764,33 @@ MEM_DUMP_L0: DROP RET +; calculate total free heap space +; args: none +; returns: cumulative size of all free chunks in bytes +MEMAVAIL: + FPADJ -4 + LOADC 0 + STORE 0 ; start with zero as result + + LOADCP _HEAP_ANCHOR +MAV_L: + DUP ; dup chunk ptr for later + INC 4 ; move to size field + LOADI ; load chunk size + LOAD 0 ; add to current result value + ADD + STORE 0 + + LOADI ; load next ptr + DUP + LOADCP _HEAP_ANCHOR ; compare with anchor + CMPU NE + CBRANCH MAV_L ; if not equal, loop +MAX_XT: + LOAD 0 ; put result value on stack + FPADJ 4 + RET + ; check if a pointer is part of the free list ; args: pointer returned by MEM_ALLOC ; throws runtime error if the pointer is found diff --git a/lib/stdlib.inc b/lib/stdlib.inc index e0b08a7..3ba4a4c 100644 --- a/lib/stdlib.inc +++ b/lib/stdlib.inc @@ -148,6 +148,7 @@ procedure appendchar(var s:string; aChar:char); external; procedure strmoveup(var s:string;index,length,delta:integer); external; procedure strmovedown(var s:string;index,length,delta:integer); external; procedure RuntimeError(var s:string); external; +function MemAvail:integer; external; (* from stdlib *) function copy(s:string[256];index,count:integer):string[256]; external; From 14d6de059d8bd17afa76d0fee9e88eaf97d1337e Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 31 Aug 2025 23:30:40 +0200 Subject: [PATCH 53/80] implement newOrNil, changes to stdlib - newOrNil works like new, but sets the variable to nil if the heap allocation failed - change stdlib to use newOrNil in openfile and openvolumeid - changes to programs that use openvolumeid --- doc/pascalprogramming.md | 3 +- lib/corelib.s | 3 ++ lib/stdlib.inc | 7 +++-- lib/stdlib.pas | 60 ++++++++++++++++++++++++---------------- pcomp/pcomp.pas | 26 +++++++++-------- progs/dumpdir.pas | 4 +-- progs/reclaim.pas | 5 ++-- progs/recover.pas | 4 +-- progs/shell.pas | 2 +- progs/xfer.pas | 2 +- 10 files changed, 68 insertions(+), 48 deletions(-) diff --git a/doc/pascalprogramming.md b/doc/pascalprogramming.md index b534f2b..1c53cc1 100644 --- a/doc/pascalprogramming.md +++ b/doc/pascalprogramming.md @@ -193,7 +193,8 @@ Possible error codes from _IOResult_ are: | 8 | IOReadOnly | file is readonly | | | 9 | IOInvalidOp | invalid operation | | | 10 | IOInvalidFormat | invalid format | when parsing numbers with _read_ | -| 11 | IOUserIntr | interrupted by user | program terminated by ^C, not visible from _IOResult_ | +| 11 | IONoMem | not enough memory | heap allocation failed inside the standard library, e.g. open() | +| 12 | IOUserIntr | interrupted by user | program terminated by ^C, not visible from _IOResult_ | ### Read, Readln and Line Input In Turbo Pascal, using _read_ (and _readln_) from the console always waits until a complete line has been entered. diff --git a/lib/corelib.s b/lib/corelib.s index 6970971..8b8f403 100644 --- a/lib/corelib.s +++ b/lib/corelib.s @@ -612,6 +612,9 @@ WAIT1LOOP: ; length must be multiple of wordsize. ; if it is not, the last (partial) word is not cleared. _CLEARMEM: + OVER ; check for null pointer + CBRANCH.Z CLEARMEM_X + SHR SHR ; calculate length in words diff --git a/lib/stdlib.inc b/lib/stdlib.inc index 3ba4a4c..5304403 100644 --- a/lib/stdlib.inc +++ b/lib/stdlib.inc @@ -18,8 +18,9 @@ const IONoError = 0; IOReadOnly = 8; IOInvalidOp = 9; IOInvalidFormat = 10; - IOUserIntr = 11; - IOMaxErr = 11; + IONoMem = 11; + IOUserIntr = 12; + IOMaxErr = 12; const PArgMax = 7; @@ -206,7 +207,7 @@ procedure readvolumeblks(volumeid:integer; destbuf:^iobuffer; blkno:integer; blk procedure writevolumeblks(volumeid:integer; srcbuf:^iobuffer; blkno:integer; blkCount: integer; var error:integer); external; function findvolume(name:string):integer; external; -procedure openvolumeid(volid:integer); external; +procedure openvolumeid(volid:integer;var error:integer); external; procedure closevolumeid(volid:integer); external; function IOResult(var fil:file):integer; external; function ErrorStr(err:integer):string; external; diff --git a/lib/stdlib.pas b/lib/stdlib.pas index dc122eb..dd6294c 100644 --- a/lib/stdlib.pas +++ b/lib/stdlib.pas @@ -26,8 +26,9 @@ const IONoError = 0; IOReadOnly = 8; IOInvalidOp = 9; IOInvalidFormat = 10; - IOUserIntr = 11; - IOMaxErr = 11; + IONoMem = 11; + IOUserIntr = 12; + IOMaxErr = 12; const PArgMax = 7; @@ -133,7 +134,7 @@ var DefaultVolumeId:integer; character to the runtime error routine which takes null-terminated strings. *) -var ioerrordesc: array [0..11] of string[20] = ( +var ioerrordesc: array [0..IOMaxErr] of string[20] = ( 'No error', 'File not found', 'Volume not found', @@ -145,6 +146,7 @@ var ioerrordesc: array [0..11] of string[20] = ( 'File is readonly', 'Invalid operation', 'Invalid format', + 'Not enough memory', 'Interrupted by user' ); @@ -1554,13 +1556,17 @@ begin end; end; -procedure openvolumeid(volid:integer); +procedure openvolumeid(volid:integer;var error:integer); begin + error := 0; with volumeTable[volid] do begin if dirCache = nil then - new(dirCache); - openFilesCount := openFilesCount + 1; + newOrNil(dirCache); + if dirCache <> nil then + openFilesCount := openFilesCount + 1 + else + error := IONoMem; end; end; @@ -2036,23 +2042,28 @@ begin aFile.typ := IODiskFile; aFile.mode := mode; - new(aFile.buffer); - aFile.bufpos := 0; - aFile.bufsize := DefaultBufSize; - aFile.needsflush := false; - aFile.changed := false; - aFile.lastError := 0; - aFile.errorAck := false; - aFile.volumeid := volid; - aFile.fileno := slotno; - aFile.filpos := 0; - aFile.bufStart := 1; - aFile.size := dirslot.sizeBytes; - aFile.sizeExtents := dirslot.sizeBytes div extentSize + 1; - aFile.bufBlocks := DefaultBufBlocks; - aFile.extentBlocks := extentSize div 512; + newOrNil(aFile.buffer); + if aFile.buffer = nil then + fileerror(aFile, IONoMem) + else + begin + aFile.bufpos := 0; + aFile.bufsize := DefaultBufSize; + aFile.needsflush := false; + aFile.changed := false; + aFile.lastError := 0; + aFile.errorAck := false; + aFile.volumeid := volid; + aFile.fileno := slotno; + aFile.filpos := 0; + aFile.bufStart := 1; + aFile.size := dirslot.sizeBytes; + aFile.sizeExtents := dirslot.sizeBytes div extentSize + 1; + aFile.bufBlocks := DefaultBufBlocks; + aFile.extentBlocks := extentSize div 512; - seek(aFile,0); + seek(aFile,0); + end; end; procedure updatedirslot(var aFile:file); @@ -2269,8 +2280,9 @@ begin if volid > 0 then begin - openvolumeid(volid); - slotno := findfile(volid, fname, dirs, error) + openvolumeid(volid, error); + if error = 0 then + slotno := findfile(volid, fname, dirs, error) end else error := IOVolNotFound; diff --git a/pcomp/pcomp.pas b/pcomp/pcomp.pas index d7be8a5..73947a1 100644 --- a/pcomp/pcomp.pas +++ b/pcomp/pcomp.pas @@ -43,7 +43,7 @@ type TokenType = ( ArrayType, RecordType, PointerType, StringCharType, EnumType, SetType, UnresolvedType ); - SpecialProc = ( NoSP, NewSP, DisposeSP, ReadSP, WriteSP, ReadlnSP, WritelnSP, + SpecialProc = ( NoSP, NewSP, New0SP, DisposeSP, ReadSP, WriteSP, ReadlnSP, WritelnSP, SetlengthSP, ValSP, StrSP, ExitSP ); SpecialFunc = ( NoSF, TruncSF, FracSF, IntSF, SqrSF, SuccSF, PredSF, OddSF, ChrSF, OrdSF, AbsSF); @@ -291,7 +291,7 @@ var 'UNIT', 'IMPLEMENTATION', 'INTERFACE', 'USES', '_' ); specialprocnames: array [SpecialProc] of string[12] = ( - '_', 'NEW', 'DISPOSE', 'READ', 'WRITE', 'READLN', 'WRITELN', 'SETLENGTH', + '_', 'NEW', 'NEWORNIL', 'DISPOSE', 'READ', 'WRITE', 'READLN', 'WRITELN', 'SETLENGTH', 'VAL','STR', 'EXIT'); specialfuncnames: array [SpecialFunc] of string[8] = ( '_', 'TRUNC', 'FRAC', 'INT', 'SQR', 'SUCC', 'PRED', 'ODD', @@ -4500,7 +4500,7 @@ begin isFunction := aProc^.returnType.baseType <> NoType; end; -procedure parseNew; +procedure parseNew(checkNil:boolean); var memLoc: MemLocation; typeReturn: TypeSpec; begin @@ -4526,17 +4526,17 @@ begin emitLoadConstantInt(memLoc.typ.pointedType^.size); emitMemAlloc; + (*We need to call CLEARMEM when the allocated type + contains strings. + INITSTRING checks if the header is non-zero to see if + the string is already initialized, and the allocated + chunk might contain random data so it would look + like an initialized string. *) if typeContainsString(memLoc.typ.pointedType^) then emitClearAlloc(memLoc.typ.pointedType); end; - emitCheckAlloc; - - (*We need to call CLEARMEM when the allocated type - contains strings. - INITSTRING checks if the header is non-zero to see if - the string is already initialized, and the allocated - chunk might contain random data so it would look - like an initialized string. *) + if checkNil then + emitCheckAlloc; writeVariable(memLoc); @@ -5017,7 +5017,9 @@ begin NoSP: errorExit2('internal error in parseSpecialProcCall', lastToken.tokenText); NewSP: - parseNew; + parseNew(true); + New0SP: + parseNew(false); DisposeSP: parseDispose; ReadSP: diff --git a/progs/dumpdir.pas b/progs/dumpdir.pas index 584e812..7411cae 100644 --- a/progs/dumpdir.pas +++ b/progs/dumpdir.pas @@ -14,8 +14,8 @@ var dirs:DirectorySlot; error:integer; begin lastSlot := volumeTable[volid].part.dirSize - 1; - openvolumeid(volid); - + openvolumeid(volid, error); (* we just ignore error here because + we should always have enough heap space *) for i := 0 to lastSlot do begin getdirslot(volid, i, dirs, error); diff --git a/progs/reclaim.pas b/progs/reclaim.pas index 9983501..fed0e90 100644 --- a/progs/reclaim.pas +++ b/progs/reclaim.pas @@ -123,7 +123,8 @@ begin freeAreaCount := 0; lastUsed := 0; - openvolumeid(volid); + openvolumeid(volid, error); + (* ignoring theoretically possible out-of-heap-error *) i := 0; endSlot := volumeTable[volid].part.dirSize - 1; @@ -308,7 +309,7 @@ begin writeln('Volume ', volname, ' not found.') else begin - openvolumeid(volid); + openvolumeid(volid, error); endSlot := volumeTable[volid].part.dirSize - 1; extentSize := volumeTable[volid].part.extentSize; diff --git a/progs/recover.pas b/progs/recover.pas index cca6204..b2303b2 100644 --- a/progs/recover.pas +++ b/progs/recover.pas @@ -102,8 +102,8 @@ begin count := PageMargin; lastSlot := volumeTable[volid].part.dirSize - 1; - openvolumeid(volid); - + openvolumeid(volid, error); + (* ignoring theoretically possible out-of-heap-space error *) for i := 0 to lastSlot do begin getdirslot(volid, i, dirs, error); diff --git a/progs/shell.pas b/progs/shell.pas index 6423b3f..84920d6 100644 --- a/progs/shell.pas +++ b/progs/shell.pas @@ -149,7 +149,7 @@ begin count := PageMargin; writeln('reading directory of ', DefaultVolume); - openvolumeid(volid); + openvolumeid(volid, error); readdirfirst(volid, index, dirs, error); while index > 0 do begin diff --git a/progs/xfer.pas b/progs/xfer.pas index 7a4a389..13a7cc2 100644 --- a/progs/xfer.pas +++ b/progs/xfer.pas @@ -398,7 +398,7 @@ begin writeln('Volume ', DefaultVolume, ' not found.') else begin - openvolumeid(volid); + openvolumeid(volid, error); readdirfirst(volid, index, dirs, error); while (index > 0) and (error = 0) do begin From 52f82fe6ae1da03eec88068482b2a3d514aa51c3 Mon Sep 17 00:00:00 2001 From: slederer Date: Sun, 31 Aug 2025 23:31:00 +0200 Subject: [PATCH 54/80] runtime: bugfix stack corruption in MEMAVAIL --- lib/runtime.s | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/runtime.s b/lib/runtime.s index a230e09..ce60b8d 100644 --- a/lib/runtime.s +++ b/lib/runtime.s @@ -1787,6 +1787,7 @@ MAV_L: CMPU NE CBRANCH MAV_L ; if not equal, loop MAX_XT: + DROP ; drop chunk ptr LOAD 0 ; put result value on stack FPADJ 4 RET From d2cae9480c287cb7a2cc7d4e82e1f8114afdb1dc Mon Sep 17 00:00:00 2001 From: slederer Date: Tue, 9 Sep 2025 00:13:56 +0200 Subject: [PATCH 55/80] mem: make SRAM size configurable --- tridoracpu/tridoracpu.srcs/mem.v | 8 +++++--- tridoracpu/tridoracpu.xpr | 8 ++++++-- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/tridoracpu/tridoracpu.srcs/mem.v b/tridoracpu/tridoracpu.srcs/mem.v index 2928a7d..2fe1b5f 100644 --- a/tridoracpu/tridoracpu.srcs/mem.v +++ b/tridoracpu/tridoracpu.srcs/mem.v @@ -91,8 +91,10 @@ module mem #(parameter ADDR_WIDTH = 32, // RAM1 $1000 - $FFFF 60K // RAM2 $10000 - $FFFFFFFF ~4GB + localparam RAM1_ADDR_WIDTH = 16; + wire ram_cs = addr[ADDR_WIDTH-1:12] != { {(ADDR_WIDTH-12){1'b0}}}; - wire ram1_cs = ram_cs && (addr[ADDR_WIDTH-1:16] == { {(ADDR_WIDTH-16){1'b0}}}); + wire ram1_cs = ram_cs && (addr[ADDR_WIDTH-1:RAM1_ADDR_WIDTH] == { {(ADDR_WIDTH-RAM1_ADDR_WIDTH){1'b0}}}); wire ram2_cs = ram_cs && !ram1_cs; wire rom_cs = !ram_cs && addr[11] == 1'b0; wire io_cs = !ram_cs && addr[11] == 1'b1; @@ -116,10 +118,10 @@ module mem #(parameter ADDR_WIDTH = 32, // test reg [1:0] wait_state; - ram32 #(.ADDR_WIDTH(16)) ram0 // 64KB RAM + ram32 #(.ADDR_WIDTH(RAM1_ADDR_WIDTH)) ram0 // 64KB RAM ( .clk(clk), - .addr(addr[15:0]), + .addr(addr[RAM1_ADDR_WIDTH-1:0]), .data_out(ram_out), .read_enable(ram_read), .data_in(data_in), diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index 304490b..b0ba2bb 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -351,7 +351,9 @@ - + + Vivado Synthesis Defaults + @@ -371,7 +373,9 @@ - + + Best predicted directive for place_design. + From b2c2e8dc0c86c49e2ea0b113b6bc8f0145a36dc7 Mon Sep 17 00:00:00 2001 From: slederer Date: Sat, 13 Sep 2025 22:59:21 +0200 Subject: [PATCH 56/80] tridoraemu: enable debug display via F12 --- tridoraemu/cpu.go | 2 +- tridoraemu/mem.go | 16 +++++++++++++++- tridoraemu/tridoraemu.go | 17 +++++++++++++---- 3 files changed, 29 insertions(+), 6 deletions(-) diff --git a/tridoraemu/cpu.go b/tridoraemu/cpu.go index c0c7739..9d6b08d 100644 --- a/tridoraemu/cpu.go +++ b/tridoraemu/cpu.go @@ -125,7 +125,7 @@ func (c *CPU) step() error { Y := c.estack[c.ESP] - insWord, err := c.mem.read(c.PC) + insWord, err := c.mem.readIns(c.PC) if err != nil { return err } if c.PC % 4 == 0 { insWord = insWord >> 16 diff --git a/tridoraemu/mem.go b/tridoraemu/mem.go index 4765c8b..624c7bd 100644 --- a/tridoraemu/mem.go +++ b/tridoraemu/mem.go @@ -17,6 +17,12 @@ const IOSlotSize = 128 const IOSlotCount = 16 +const DRAMStart = 65536 + +const CacheAddrShift = 8 + +const CacheWriteThrough = true + type Mem struct { ram [] word iohandler [IOSlotCount] IOHandler @@ -79,7 +85,7 @@ func (m *Mem) attachIO(h IOHandler, slot int) { m.iohandler[slot] = h } -func (m *Mem) read(byteaddr word) (word, error) { +func (m *Mem) readRaw(byteaddr word) (word, error) { if byteaddr >= IOStartAddr && byteaddr < RAMStartAddr { ioslot := (byteaddr - IOStartAddr) / IOSlotSize if m.iohandler[ioslot] != nil { @@ -96,6 +102,14 @@ func (m *Mem) read(byteaddr word) (word, error) { } } +func (m *Mem) read(byteaddr word) (word, error) { + return m.readRaw(byteaddr); +} + +func (m *Mem) readIns(byteaddr word) (word, error) { + return m.readRaw(byteaddr); +} + func (m *Mem) write(value word, byteaddr word) error { if byteaddr < IOStartAddr { return fmt.Errorf("Write to ROM area at %08X value %08X", byteaddr, value) diff --git a/tridoraemu/tridoraemu.go b/tridoraemu/tridoraemu.go index 88804b4..c148515 100644 --- a/tridoraemu/tridoraemu.go +++ b/tridoraemu/tridoraemu.go @@ -8,7 +8,8 @@ import ( "flag" "time" "github.com/hajimehoshi/ebiten/v2" - // "github.com/hajimehoshi/ebiten/v2/ebitenutil" + "github.com/hajimehoshi/ebiten/v2/ebitenutil" + "github.com/hajimehoshi/ebiten/v2/inpututil" // "image/color" ) @@ -35,6 +36,7 @@ func idle(canGoIdle bool) { } type Game struct{ + debug bool x,y int stepsPerFrame int lastFrameDuration time.Duration @@ -58,16 +60,23 @@ func (g *Game) Update() error { } g.lastFrameDuration = time.Since(startTime) + if inpututil.IsKeyJustReleased(ebiten.KeyF12) { + g.debug = !g.debug + } + return nil } func (g *Game) Draw(screen *ebiten.Image) { screen.DrawImage(framebuffer.framebuffer, nil) - /* - buf := fmt.Sprintf("PC: %08X FP: %08X RP: %08X ESP: %2X\n%v", cpu.PC, cpu.FP, cpu.RP, cpu.ESP, g.lastFrameDuration) - ebitenutil.DebugPrint(screen, buf) + if g.debug { + buf := fmt.Sprintf("PC: %08X FP: %08X RP: %08X ESP: %2X %v", + cpu.PC, cpu.FP, cpu.RP, cpu.ESP, g.lastFrameDuration) + ebitenutil.DebugPrint(screen, buf) + } + /* screen.Set(g.x, g.y, color.RGBA{255,0,0,0}) screen.Set(g.x, g.y+1, color.RGBA{0,255,0,0}) screen.Set(g.x, g.y+2, color.RGBA{0,255,255,0}) From 278f90a464992dc89b1301d2f5f4a5807c7260c5 Mon Sep 17 00:00:00 2001 From: slederer Date: Mon, 15 Sep 2025 23:02:22 +0200 Subject: [PATCH 57/80] tridoracpu: implement data cache --- examples/benchmarks.results.text | 57 ++++++++++++++++- tridoracpu/tridoracpu.srcs/dram_bridge.v | 80 +++++++++++++++++++----- tridoracpu/tridoracpu.xpr | 39 ++++++------ 3 files changed, 138 insertions(+), 38 deletions(-) diff --git a/examples/benchmarks.results.text b/examples/benchmarks.results.text index 5ae8a13..7b4023e 100644 --- a/examples/benchmarks.results.text +++ b/examples/benchmarks.results.text @@ -45,6 +45,7 @@ Running benchmarks.prog exp() 10K 00:00:29 cos() 10K 00:00:06 +-------------------------------------- Arty-A7-35T 76.92MHz, 64KB SRAM, 256MB DRAM running in DRAM (except corelib, stdlib, runtime) @@ -68,7 +69,7 @@ Running benchmarks.prog exp() 10K 00:00:32 cos() 10K 00:00:06 - +-------------------------------------- Arty-A7-35T 76.92MHz, 64KB SRAM, 256MB DRAM, 16B instruction cache running in DRAM (except corelib, stdlib, runtime) @@ -91,3 +92,57 @@ Running benchmarks.prog array copy 128k 1K 00:00:48 exp() 10K 00:00:32 cos() 10K 00:00:06 + +-------------------------------------- +Arty-A7-35T +76.92MHz, 64KB SRAM, 256MB DRAM, + 16B instruction cache, 16B wt data cache +running in DRAM (except corelib, stdlib, runtime) + +Running benchmarks.prog + empty loop 10M 00:00:07 + write variable 10M 00:00:17 + read variable 10M 00:00:20 + integer addition 10M 00:00:20 + real addition 1M 00:00:28 + integer multiplication 1M 00:01:11 + real multiplication 1M 00:00:59 + integer division 1M 00:01:36 + real division 1M 00:01:05 + string indexing 1M 00:00:39 + string iteration 1M 00:00:19 + new/dispose 1k 1M 00:00:19 + new/dispose 128k 1M 00:00:19 + array copy 1k 10K 00:00:03 + array copy 128k 1K 00:00:39 + exp() 10K 00:00:26 + cos() 10K 00:00:05 + + + +-------------------------------------- +Arty-A7-35T +76.92MHz, 64KB SRAM, 256MB DRAM, + 16B instruction cache, 16B wb data cache +running in DRAM (except corelib, stdlib, runtime) + +Running benchmarks.prog + empty loop 10M 00:00:04 + write variable 10M 00:00:11 + read variable 10M 00:00:18 + integer addition 10M 00:00:18 + real addition 1M 00:00:27 + integer multiplication 1M 00:00:49 + real multiplication 1M 00:00:58 + integer division 1M 00:01:06 + real division 1M 00:01:04 + string indexing 1M 00:00:36 + string iteration 1M 00:00:19 + new/dispose 1k 1M 00:00:18 + new/dispose 128k 1M 00:00:18 + array copy 1k 10K 00:00:03 + array copy 128k 1K 00:00:39 + exp() 10K 00:00:25 + cos() 10K 00:00:05 + + diff --git a/tridoracpu/tridoracpu.srcs/dram_bridge.v b/tridoracpu/tridoracpu.srcs/dram_bridge.v index c3f948a..d4f798b 100644 --- a/tridoracpu/tridoracpu.srcs/dram_bridge.v +++ b/tridoracpu/tridoracpu.srcs/dram_bridge.v @@ -107,8 +107,14 @@ module dram_bridge #(ADDR_WIDTH = 32, WIDTH = 32) ); (*KEEP*) reg [DRAM_DATA_WIDTH-1:0] ins_cache; - (*KEEP*) reg [DRAM_ADDR_WIDTH-1:4] cached_addr; - (*KEEP*) wire cache_hit = mem_read_enable && mem_read_ins && (cached_addr == mem_addr[DRAM_ADDR_WIDTH-1:4]); + (*KEEP*) reg [DRAM_ADDR_WIDTH-1:4] icached_addr; + (*KEEP*) wire icache_hit = mem_read_enable && mem_read_ins && (icached_addr == mem_addr[DRAM_ADDR_WIDTH-1:4]); + + (*KEEP*) reg [DRAM_DATA_WIDTH-1:0] d_cache; + (*KEEP*) reg [DRAM_ADDR_WIDTH-1:4] dcached_addr; + (*KEEP*) wire dcache_hit = mem_read_enable && !mem_read_ins && (dcached_addr == mem_addr[DRAM_ADDR_WIDTH-1:4]); + + wire cache_hit = icache_hit | dcache_hit; reg [WIDTH-1:0] read_buf; reg read_inprogress = 0; @@ -125,25 +131,32 @@ module dram_bridge #(ADDR_WIDTH = 32, WIDTH = 32) wire [1:0] word_sel = mem_addr[3:2]; wire [WIDTH-1:0] read_word = - word_sel == 3'b11 ? app_rd_data[31:0] : - word_sel == 3'b10 ? app_rd_data[63:32] : - word_sel == 3'b01 ? app_rd_data[95:64] : + word_sel == 2'b11 ? app_rd_data[31:0] : + word_sel == 2'b10 ? app_rd_data[63:32] : + word_sel == 2'b01 ? app_rd_data[95:64] : app_rd_data[127:96]; - wire [WIDTH-1:0] read_cached_word = - word_sel == 3'b11 ? ins_cache[31:0] : - word_sel == 3'b10 ? ins_cache[63:32] : - word_sel == 3'b01 ? ins_cache[95:64] : + wire [WIDTH-1:0] read_icached_word = + word_sel == 2'b11 ? ins_cache[31:0] : + word_sel == 2'b10 ? ins_cache[63:32] : + word_sel == 2'b01 ? ins_cache[95:64] : ins_cache[127:96]; - (*KEEP*) assign mem_read_data = cache_hit ? read_cached_word : + wire [WIDTH-1:0] read_dcached_word = + word_sel == 2'b11 ? d_cache[31:0] : + word_sel == 2'b10 ? d_cache[63:32] : + word_sel == 2'b01 ? d_cache[95:64] : + d_cache[127:96]; + + (*KEEP*) assign mem_read_data = icache_hit ? read_icached_word : + dcache_hit ? read_dcached_word : app_rd_data_valid ? read_word : read_buf; // set the write mask according to the lower bits of the address // (ignoring bit 0) - assign app_wdf_mask = word_sel == 3'b11 ? 16'b1111111111110000 : - word_sel == 3'b10 ? 16'b1111111100001111 : - word_sel == 3'b01 ? 16'b1111000011111111 : + assign app_wdf_mask = word_sel == 2'b11 ? 16'b1111111111110000 : + word_sel == 2'b10 ? 16'b1111111100001111 : + word_sel == 2'b01 ? 16'b1111000011111111 : 16'b0000111111111111 ; wire write_ready = mem_write_enable & app_wdf_rdy & app_rdy; @@ -152,7 +165,7 @@ module dram_bridge #(ADDR_WIDTH = 32, WIDTH = 32) assign app_wdf_data = { {4{mem_write_data}} }; assign mem_wait = (dram_read_enable & ~read_inprogress) | - (mem_write_enable & (~app_wdf_rdy | ~app_rdy)) | + (mem_write_enable & ~dcache_hit & (~app_wdf_rdy | ~app_rdy)) | (read_inprogress & ~app_rd_data_valid); assign app_en = (dram_read_enable & ~read_inprogress) | @@ -160,25 +173,58 @@ module dram_bridge #(ADDR_WIDTH = 32, WIDTH = 32) assign app_cmd = dram_read_enable ? CMD_READ : CMD_WRITE; + /* set instruction cache */ always @(posedge dram_front_clk) begin if(dram_read_enable && mem_read_ins && app_rd_data_valid) begin ins_cache <= app_rd_data; - cached_addr <= mem_addr[DRAM_ADDR_WIDTH-1:4]; + icached_addr <= mem_addr[DRAM_ADDR_WIDTH-1:4]; end end + /* set data cache */ + always @(posedge dram_front_clk) + begin + if(dram_read_enable && !mem_read_ins && app_rd_data_valid) + begin + d_cache <= app_rd_data; + dcached_addr <= mem_addr[DRAM_ADDR_WIDTH-1:4]; + end + + /* write-through cache - invalidate on write */ + /* invalidate data cache on write */ +// if(mem_write_enable && dcached_addr == mem_addr[DRAM_ADDR_WIDTH-1:4]) +// dcached_addr <= {DRAM_ADDR_WIDTH-4{1'b1}}; + + /* write-back cache - update cache on write */ + // write back to data cache on mem_write + if(mem_write_enable && dcached_addr == mem_addr[DRAM_ADDR_WIDTH-1:4]) + begin + case(word_sel) + 2'b11: d_cache[31:0] <= mem_write_data; + 2'b10: d_cache[63:32] <= mem_write_data; + 2'b01: d_cache[95:64] <= mem_write_data; + 2'b00: d_cache[127:96] <= mem_write_data; + endcase + end + end + + /* transfer read data, either from cache or from DRAM */ always @(posedge dram_front_clk) begin if(dram_read_enable & ~read_inprogress & app_rdy) read_inprogress <= 1; if(read_inprogress & app_rd_data_valid) read_inprogress <= 0; + if(dram_read_enable & app_rd_data_valid) read_buf <= mem_read_data; else - if (mem_read_enable & cache_hit) - read_buf <= read_cached_word; + if (mem_read_enable & icache_hit) + read_buf <= read_icached_word; + else + if (mem_read_enable & dcache_hit) + read_buf <= read_dcached_word; end endmodule diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index b0ba2bb..cdeb09a 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -349,15 +349,22 @@ - + - - Vivado Synthesis Defaults + + Higher performance designs, resource sharing is turned off, the global fanout guide is set to a lower number, FSM extraction forced to one-hot, LUT combining is disabled, equivalent registers are preserved, SRL are inferred with a larger threshold - + + + + + + + + - + @@ -371,26 +378,18 @@ - + - - Best predicted directive for place_design. + + Default settings for Implementation. - - - + - - - + - - - - - - + + From 4e044ad2a4d3aa9ad0e5e6ff0953c3a6af988a65 Mon Sep 17 00:00:00 2001 From: slederer Date: Tue, 16 Sep 2025 21:57:53 +0200 Subject: [PATCH 58/80] sdcardlib: use slightly faster spi clock also: - new benchmark results - experiment with synthesis settings --- examples/benchmarks.results.text | 23 +++++++++++++++++++++++ lib/sdcardlib.s | 4 ++-- tridoracpu/tridoracpu.xpr | 8 ++------ 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/examples/benchmarks.results.text b/examples/benchmarks.results.text index 7b4023e..19824ee 100644 --- a/examples/benchmarks.results.text +++ b/examples/benchmarks.results.text @@ -145,4 +145,27 @@ Running benchmarks.prog exp() 10K 00:00:25 cos() 10K 00:00:05 +-------------------------------------- +Arty-A7-35T +76.92MHz, 32KB SRAM, 256MB DRAM, + 16B instruction cache, 16B wb data cache +running in DRAM (except corelib, stdlib, runtime) +Running benchmarks.prog + empty loop 10M 00:00:04 + write variable 10M 00:00:11 + read variable 10M 00:00:18 + integer addition 10M 00:00:18 + real addition 1M 00:00:27 + integer multiplication 1M 00:00:49 + real multiplication 1M 00:00:58 + integer division 1M 00:01:06 + real division 1M 00:01:04 + string indexing 1M 00:00:36 + string iteration 1M 00:00:19 + new/dispose 1k 1M 00:00:18 + new/dispose 128k 1M 00:00:18 + array copy 1k 10K 00:00:03 + array copy 128k 1K 00:00:39 + exp() 10K 00:00:25 + cos() 10K 00:00:05 diff --git a/lib/sdcardlib.s b/lib/sdcardlib.s index 9b45e05..eca85d4 100644 --- a/lib/sdcardlib.s +++ b/lib/sdcardlib.s @@ -264,8 +264,8 @@ CARD_OK: ; set fast transfer rate CARDFASTCLK: LOADC SPIREG - ; set clock divider to ~2,6MHz - LOADCP SPI_CLK_DIV_WR,10 ; using the LOADCP with offset syntax here + ; set clock divider to ~2.75MHz + LOADCP SPI_CLK_DIV_WR,7 ; using the LOADCP with offset syntax here STOREI DROP RET diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index cdeb09a..36b5512 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -351,9 +351,7 @@ - - Higher performance designs, resource sharing is turned off, the global fanout guide is set to a lower number, FSM extraction forced to one-hot, LUT combining is disabled, equivalent registers are preserved, SRL are inferred with a larger threshold - + @@ -380,9 +378,7 @@ - - Default settings for Implementation. - + From f79d7d622ac575a37089a9eac53a39e3fbe23ebe Mon Sep 17 00:00:00 2001 From: slederer Date: Fri, 19 Sep 2025 22:17:05 +0200 Subject: [PATCH 59/80] doc: add section on new/newOrNil/dispose --- doc/pascalprogramming.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/pascalprogramming.md b/doc/pascalprogramming.md index 1c53cc1..df5d3fd 100644 --- a/doc/pascalprogramming.md +++ b/doc/pascalprogramming.md @@ -103,6 +103,16 @@ Tridora-Pascal only supports the _break_ statement at the moment. The _exit_ statement can be used to exit the current procedure or function. If it is a function, the return value of the function is undefined if _exit_ is used before a return value is assigned. + +## Dynamic Memory Allocation +Memory allocation generally works as expected with the *new* and *dispose* special procedures. The variant of *new* with two parameters that is specified in Wirth Pascal is not supported (partial allocation of a variant record). Instead, there is a variant of *new* that has a second parameter for allocating strings (see above). + +If heap allocation fails, *new* does not return and instead causes a runtime error. To avoid this, a different special procedure called *newOrNil* can be used. This procedure sets the pointer +variable to *niL* if heap allocation fails. + +The function *MemAvail* returns the number of free bytes on the heap. It does not guarantee that this amount of memory can be allocated with *new*, because heap space can be fragmented. +The function *MaxAvail*, which exists in some versions of Turbo Pascal and returns the size of the largest contiguous block of available heap memory, is not (yet) implemented. + ## I/O I/O handling in Tridora Pascal is mostly compatible with other Pascal dialects when reading/writing simple variables from/to the console. There are big differences when opening/reading/writing files explicitly. From d5888861d327504feb56eeac62f217dc77bb9d91 Mon Sep 17 00:00:00 2001 From: slederer Date: Tue, 23 Sep 2025 23:39:04 +0200 Subject: [PATCH 60/80] tdraudio: first step of implementing a sound generator --- .../tridoracpu.srcs/Arty-A7-35-Master.xdc | 6 +- tridoracpu/tridoracpu.srcs/tdraudio.v | 74 +++++++++++++++++++ tridoracpu/tridoracpu.srcs/top.v | 32 +++++++- tridoracpu/tridoracpu.xpr | 15 +++- 4 files changed, 119 insertions(+), 8 deletions(-) create mode 100644 tridoracpu/tridoracpu.srcs/tdraudio.v diff --git a/tridoracpu/tridoracpu.srcs/Arty-A7-35-Master.xdc b/tridoracpu/tridoracpu.srcs/Arty-A7-35-Master.xdc index 7c62767..2a33ae0 100644 --- a/tridoracpu/tridoracpu.srcs/Arty-A7-35-Master.xdc +++ b/tridoracpu/tridoracpu.srcs/Arty-A7-35-Master.xdc @@ -70,10 +70,10 @@ set_property -dict {PACKAGE_PIN V14 IOSTANDARD LVCMOS33} [get_ports VGA_VS_O] #set_property -dict { PACKAGE_PIN U13 IOSTANDARD LVCMOS33 } [get_ports { jc[7] }]; #IO_L23N_T3_A02_D18_14 Sch=jc_n[4] ## Pmod Header JD -#set_property -dict { PACKAGE_PIN D4 IOSTANDARD LVCMOS33 } [get_ports { jd[0] }]; #IO_L11N_T1_SRCC_35 Sch=jd[1] -#set_property -dict { PACKAGE_PIN D3 IOSTANDARD LVCMOS33 } [get_ports { jd[1] }]; #IO_L12N_T1_MRCC_35 Sch=jd[2] +set_property -dict { PACKAGE_PIN D4 IOSTANDARD LVCMOS33 } [get_ports { amp2_ain }]; #IO_L11N_T1_SRCC_35 Sch=jd[1] +set_property -dict { PACKAGE_PIN D3 IOSTANDARD LVCMOS33 } [get_ports { amp2_gain }]; #IO_L12N_T1_MRCC_35 Sch=jd[2] #set_property -dict { PACKAGE_PIN F4 IOSTANDARD LVCMOS33 } [get_ports { jd[2] }]; #IO_L13P_T2_MRCC_35 Sch=jd[3] -#set_property -dict { PACKAGE_PIN F3 IOSTANDARD LVCMOS33 } [get_ports { jd[3] }]; #IO_L13N_T2_MRCC_35 Sch=jd[4] +set_property -dict { PACKAGE_PIN F3 IOSTANDARD LVCMOS33 } [get_ports { amp2_shutdown_n }]; #IO_L13N_T2_MRCC_35 Sch=jd[4] #set_property -dict { PACKAGE_PIN E2 IOSTANDARD LVCMOS33 } [get_ports { jd[4] }]; #IO_L14P_T2_SRCC_35 Sch=jd[7] #set_property -dict { PACKAGE_PIN D2 IOSTANDARD LVCMOS33 } [get_ports { jd[5] }]; #IO_L14N_T2_SRCC_35 Sch=jd[8] #set_property -dict { PACKAGE_PIN H2 IOSTANDARD LVCMOS33 } [get_ports { jd[6] }]; #IO_L15P_T2_DQS_35 Sch=jd[9] diff --git a/tridoracpu/tridoracpu.srcs/tdraudio.v b/tridoracpu/tridoracpu.srcs/tdraudio.v new file mode 100644 index 0000000..dbd0dc3 --- /dev/null +++ b/tridoracpu/tridoracpu.srcs/tdraudio.v @@ -0,0 +1,74 @@ +`timescale 1ns / 1ps + +module tdraudio #(DATA_WIDTH=32) ( + input wire clk, + input wire reset, + input wire [3:0] reg_sel, + output wire [DATA_WIDTH-1:0] rd_data, + input wire [DATA_WIDTH-1:0] wr_data, + input wire rd_en, + input wire wr_en, + + output wire pdm_out, + output wire gain_en, + output wire shutdown_n + ); + + localparam CLOCK_DIV_WIDTH = 22; + + localparam TDRAU_REG_CTL = 0; /* control register */ + localparam TDRAU_REG_CLK = 1; /* clock divider register */ + + reg audio_out; + reg channel_enable; + reg [CLOCK_DIV_WIDTH-1:0] clock_div; + reg [CLOCK_DIV_WIDTH-1:0] div_count; + + assign pdm_out = audio_out; + assign rd_data = {{DATA_WIDTH-8-CLOCK_DIV_WIDTH{1'b0}}, div_count, {7{1'b0}}, channel_enable}; + assign gain_en = 0; + assign shutdown_n = channel_enable; + + /* channel enable flag */ + always @(posedge clk) + begin + if(reset) + channel_enable <= 0; + else if (wr_en && (reg_sel == TDRAU_REG_CTL)) + channel_enable <= wr_data[0]; + end + + /* clock divider register */ + always @(posedge clk) + begin + if(reset) + clock_div <= 0; + else if (wr_en && (reg_sel == TDRAU_REG_CLK)) + clock_div <= wr_data; + end + + /* divider counter */ + always @(posedge clk) + begin + if(channel_enable) + begin + if(div_count == 0) // reset counter if it reaches zero + div_count <= clock_div; + else + div_count <= div_count - 1; // else just decrement it + end + else + if (wr_en && (reg_sel == TDRAU_REG_CLK)) + div_count <= 0; // set counter to zero whenever the clock divider is set + end + + /* 1-bit audio output */ + always @(posedge clk) + begin + if (reset) + audio_out <= 0; + else + if (channel_enable && (div_count == 0)) + audio_out <= ~audio_out; + end +endmodule diff --git a/tridoracpu/tridoracpu.srcs/top.v b/tridoracpu/tridoracpu.srcs/top.v index 00066fe..81d236b 100644 --- a/tridoracpu/tridoracpu.srcs/top.v +++ b/tridoracpu/tridoracpu.srcs/top.v @@ -10,6 +10,7 @@ //`define clock clk_1hz `define ENABLE_VGAFB `define ENABLE_MICROSD +`define ENABLE_TDRAUDIO module top( input wire clk, @@ -60,6 +61,13 @@ module top( output wire sd_sck, input wire sd_cd `endif + +`ifdef ENABLE_TDRAUDIO + , + output wire amp2_ain, + output wire amp2_gain, + output wire amp2_shutdown_n +`endif ); reg clk_1hz; @@ -220,6 +228,7 @@ module top( assign uart_tx_data = mem_write_data[7:0]; assign uart_rd_data = { {WIDTH-10{1'b1}}, uart_rx_avail, uart_tx_busy, uart_rx_data }; + // interrupt controller reg timer_tick; reg[23:0] tick_count; wire [1:0] irq_in = { timer_tick, uart_rx_avail }; @@ -228,6 +237,25 @@ module top( wire irqc_seten = mem_write_data[7]; wire irqc_cs = io_enable && (io_slot == 3); +`ifdef ENABLE_TDRAUDIO + wire [WIDTH-1:0] tdraudio_wr_data; + wire [WIDTH-1:0] tdraudio_rd_data; + wire tdraudio_rd_en, tdraudio_wr_en; + + wire tdraudio_cs_en = io_enable && (io_slot == 4); + assign tdraudio_rd_en = tdraudio_cs_en && mem_read_enable; + assign tdraudio_wr_en = tdraudio_cs_en && mem_write_enable; + assign tdraudio_wr_data = mem_write_data; + + tdraudio tdraudio0(`clock, ~rst, + mem_addr[3:0], + tdraudio_rd_data, + tdraudio_wr_data, + tdraudio_rd_en, + tdraudio_wr_en, + amp2_ain, amp2_gain, amp2_shutdown_n); +`endif + assign io_rd_data = (io_slot == 0) ? uart_rd_data : `ifdef ENABLE_MICROSD (io_slot == 1) ? spi_rd_data : @@ -236,7 +264,9 @@ module top( (io_slot == 2) ? fb_rd_data : `endif (io_slot == 3) ? irqc_rd_data: - + `ifdef ENABLE_TDRAUDIO + (io_slot == 4) ? tdraudio_rd_data: + `endif -1; buart #(.CLKFREQ(`clkfreq)) uart0(`clock, rst, diff --git a/tridoracpu/tridoracpu.xpr b/tridoracpu/tridoracpu.xpr index 36b5512..c5b003f 100644 --- a/tridoracpu/tridoracpu.xpr +++ b/tridoracpu/tridoracpu.xpr @@ -111,7 +111,7 @@ - + @@ -142,7 +142,7 @@ - + @@ -173,14 +173,14 @@ - + - + @@ -205,6 +205,13 @@ + + + + + + +