Git Product home page Git Product logo

thistle's Introduction

Thistle Computer

A 65C02 arcitecture for OpenComputers.

Uses a heavily modified/converted Symon core by Seth J. Morabito

Features:

  • Fully persistable
  • EEPROM with built in assembler and commands
  • Built in keyboard and screen handler
  • Memory Banking for up to 256MiB of memory
  • Component Access
  • Signals Access
  • RTC with two programmable timers
  • Built in DMA engine

thistle's People

Contributors

20kdc avatar amandacameron avatar gamax92 avatar techokami avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

thistle's Issues

Component mapper's Buffer I/O not behaving as expected

I am developing an OS and had to query information about components in a specific slot, so I used the component mapper's third command with a number argument, but it doesn't seem to behave as expected.

What I did was:

  1. Write 3 into Buffer I/O(TSF byte tag)
  2. Write component index into buffer
  3. Write 3 into Command Status

What happened:

  1. The command seems to return nothing

If I write 3, 0, (index) into the buffer, I can only query the component in slot 0.

NPE in ConsoleDriver

Just re-posting this here for ya:

java.lang.NullPointerException
	at gamax92.thistle.util.ConsoleDriver.flush(ConsoleDriver.java:381)
	at gamax92.thistle.devices.ThistleIO.flush(ThistleIO.java:214)
	at gamax92.thistle.ThistleVM.run(ThistleVM.java:38)
	at gamax92.thistle.ThistleArchitecture.runThreaded(ThistleArchitecture.java:121)
	at li.cil.oc.server.machine.Machine.run(Machine.scala:948)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

Possibly being caused by me using DMA incorrectly, but I'm pretty dead myself atm, so I'll investigate tomorrow.

Some instructions not working?

My apologies if this is a dumb issue,
I have successfully recompiled for 1.12.2 and I have noticed that some instructions do not work, mainly branch instructions, so I was thinking maybe it was just a thing with the recompiled one, but it appears to not work for the earlier versions too.
I have tried the different formatting/addressing modes such as ($XXXX), $XXXX, #$XX and it doesn't seem to work.
The boot.s remains the same.

Computer crashes when pasting a lot of text (MC 1.12.2, using https://github.com/thePalindrome/Thistle/releases/tag/1.1.0-1.12 + new boot ROM)

The exception:

[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: java.lang.IndexOutOfBoundsException
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.common.component.TextBuffer.color(TextBuffer.scala:447)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.common.component.TextBuffer.isForegroundFromPalette(TextBuffer.scala:396)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.common.component.TextBuffer.getForegroundColor(TextBuffer.scala:388)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.component.GraphicsCard$$anonfun$get$1.apply(GraphicsCard.scala:255)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.component.GraphicsCard$$anonfun$get$1.apply(GraphicsCard.scala:254)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.component.GraphicsCard.screen(GraphicsCard.scala:52)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.component.GraphicsCard.get(GraphicsCard.scala:254)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at generated.li.cil.oc.CallWrapper_li_cil_oc_server_component_GraphicsCard_get.call(Unknown Source)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.machine.Callbacks$ComponentCallback.apply(Callbacks.scala:123)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.network.Component$class.invoke(Component.scala:112)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.network.Network$ComponentConnectorBuilder$$anon$1.invoke(Network.scala:636)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.machine.Machine.invoke(Machine.scala:380)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at gamax92.thistle.util.ConsoleDriver.flush(ConsoleDriver.java:416)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at gamax92.thistle.devices.GeneralIO.flush(GeneralIO.java:214)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at gamax92.thistle.ThistleVM.run(ThistleVM.java:39)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at gamax92.thistle.ThistleArchitecture.runThreaded(ThistleArchitecture.java:126)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at li.cil.oc.server.machine.Machine.run(Machine.scala:992)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[16:08:23] [OpenComputers-Computer-4/INFO] [STDERR]: [gamax92.thistle.ThistleArchitecture:runThreaded:139]: 	at java.lang.Thread.run(Thread.java:748)

occurs when performing the following:

  1. Make a new computer with the new boot EEPROM already present (I've swapped it in the JAR I'm using). I used a Tier 3 APU (i.e. Tier 2 graphics) connected to a Tier 3 screen. If exact details are required, comment.
  2. Paste (using the middle mouse button) the following:
LDA #$F0
STA $01
STZ $00
LDA $E000
BEQ 0xFB
LDA $E001
BNE 0X05
LDA $E001
BRA 0xF1
STA $E003
CMP #' '
BCC 0xEA
CMP #';'
BEQ 0xE0
ASL
ASL
ASL
ASL
STA ($00)
LDA $E001
STA $E003
AND #$0F
EOR ($00)
STA ($00)
INC $00
BNE 0xD0
INC $01
BRA 0xCC
  1. Run the program using "run" followed by a newline.
  2. Paste BMBMEKEKDCDADBDECJEDFHFIGCGDFLFECJDHEJJJDJDJDJDJJHKILIOIHM@CN@HJBI@OJHKILIOIHM@CN@GJFHF@JI@MHM@CN@JI@JHM@CN@F@J@@@KAHEB@AAO@LHL@A@O@AIL@@DO@@NL@@FO@@JL@@HO@@FL@@JO@@BH@NDJIBMHM@CN@H@MMDLBLO@JM repeatedly until the computer crashes.
    (The quoted text is the first part of the boot ROM encoded in the lower 4 bits. The program is an EEPROM flasher.)

Page crossing bug

This bug causes data read using indirect addressing on boundary crossings to become corrupted.
Screenshot_20220530_140610

Moving the address of the string will cause the corrupted character to also move, seemingly affecting $xx00 addresses

BSS segment?

I would like to use conio.h for basic stuff. Crudely implemented _cputc but couldn't test it due to the missing BSS segment.

Backspace is 127 on macs.

On a mac computer, backspace is sent as keycode 127, which, even if modifying boot.s to accept, isn't handled by the console driver. This causes the backspace key to not work, or, upon modifying boot.s, not display correctly.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.