LisaList2

Advanced search  

News:

2019.06.07 fixed NChat for the "Curve" theme, will eventually move it to its own page and add it to the default theme as well. Other plugins are next. see post in the Meta board for details

Pages: [1] 2 3 ... 10
 1 
 on: November 25, 2021, 04:11:41 pm 
Started by rayarachelian - Last post by rayarachelian
...or write a Z8 core emulator.


Hate to say this, but, I'm kinda toying with the idea of this, admittedly, seems like a neat little CPU.
But, will leave it for the future.

 2 
 on: November 22, 2021, 04:57:22 pm 
Started by rayarachelian - Last post by patrick
...or write a Z8 core emulator.

 3 
 on: November 22, 2021, 01:03:02 pm 
Started by rayarachelian - Last post by rayarachelian
No, Z8 and Z80 are completely different architectures with different command sets. A Z80 emulator is not able to run Z8 code.

Thanks, so I'll either have to map out states, or hand translate to C.

 4 
 on: November 22, 2021, 12:35:34 pm 
Started by rayarachelian - Last post by patrick
No, Z8 and Z80 are completely different architectures with different command sets. A Z80 emulator is not able to run Z8 code.

 5 
 on: November 22, 2021, 11:24:35 am 
Started by rayarachelian - Last post by rayarachelian
So both Widgets and ProFile hard drives use z8 microcontrollers, disassembled + commented sources for the firmware are available on bitsavers, and I've been spending the last week looking at these and mapping out their states vs my profile.c code vs the Aphid code in an attempt to see if I can overhaul profile.c in the future.
The source code for these seems to be Z80 like, but was wondering if anyone knows for sure whether or not they're compatible with a Z80 (outside of the memory banking and I/O + timers.) Perhaps I might leverage a bit of a GPL'ed Z80 emulator for some of that.

Currently profile.c is good enough for LOS 3.x, 2.x, MacWorks XL and partially UniPlus, but not Xenix and LOS 1.x. It is however getting a bit furry and ugly and needs a major cleanup.

But there's another path I might take.

I'm playing with the idea of eventually creating an external binary that attaches + communicates with LisaEm using two bytes (one for the PA and another for the PB VIA 6522 lines). This would be a 2.0 feature, and would allow a core emulation process that spawns external processes for other attachments, such as drives, printers, ethernet, etc. (I'd do a similar thing for the serial ports as well.)

Some devices will continue be built in to the core, but others can be external processes - built in things might be the serial-pty/telnetd code. External processes would be devices such as printers, and even the GUI itself. (This is more of an architectural design thing for the future to make the code cleaner and easier to deal with - this will not be part of 1.2.7.)
I was also considering that since Tom's Aphid is python code (mostly) perhaps a version of that code could be such as external program.

The idea is to only emulate the communications portions of Z8 firmware Widget code for a higher level of accuracy and the actual block reads/writes would be handled in usual way via fopen/fread/fwrite, etc. via libdc42.

There's some challenges here as profile.c in LisaEm uses a state machine, but neither Widget nor ProFile firmware use that, rather they just sit in various loops waiting for the next thing to happen. A minor issue is that since these are time sensitive for some OS's such as Xenix, if LisaEm runs at a higher speed than 5MHz, I'd need some way to tell the external program what relative speed to run at to prevent issues, so I'd need to communicate timing as well to these processes, through usual IPC methods.

I think in the end though, pen and paper and mapping of the disassembly of widget firmware might be better to build a state machine, but this would introduce errors and other bugs due to edge cases, where as a Z80 emulator would run a more faithful simulation.
Ideally a Z80 to C translator would be best, but no such beast exists except for a commercial one.

Sorry, thinking outloud for the most part. :)

Firmware for Profile 10 looks something like this:
Code: [Select]
     201/     197 :                     ;********************************************************************
     202/     197 :                     ; and here we go...
     203/     197 :                     ;******************************************************************** ;; here here here - this is the handshake/command read
     204/     197 :                     ;
     205/     197 : E6 35 FF            WarmStart    ld PwrFlg0,#0FFh        ; set warm start flags
     206/     19A : E6 36 01                    ld PwrFlg1,#001h
     207/     19D : 56 02 F7            WarmStart1a    and P2,#0FFh-BSY           ; set BSY
     208/     1A0 : B0 43                       clr ReadWithHdr            ; state machine checks headers
     209/     1A2 : B0 08                       clr SkipSpared
     210/     1A4 : E6 FF 80            WarmStart1    ld SPL,#Stack_Top        ; dump stack
     211/     1A7 : B0 40               WarmStart2    clr BlockIsBad
     212/     1A9 : EC 01                       ld R14,#1            ; 01 means waiting for command
     213/     1AB : D6 03 AD                    call DoHandshake        ; wait for host to assert /CMD
     214/     1AE :                     ; 
     215/     1AE :                     ; *** we end up here after successful 01 - 55 handshake ***
     216/     1AE : 76 0B 20                    tm Status2,#020h        ; ***
     217/     1B1 : 6B 08                       jr z,WarmStart3            ; ***
     218/     1B3 : B0 07               WarmStart2a    clr SpareTblDirty        ; ***
     219/     1B5 : 46 0A 20                    or Status1,#Stat_SpTblUpd    ; host data lost
     220/     1B8 : D6 0B D2                    call GetSpareTable
     221/     1BB : 90 07               WarmStart3    rl SpareTblDirty        ; does our spare table need to be updated?
     222/     1BD : 6B 58                       jr z,GetHostCmd            ;  no --> skip
     223/     1BF :                     ; update spare table
     224/     1BF : 46 0A 20                    or Status1,#Stat_SpTblUpd    ; host data lost
     225/     1C2 : 46 02 80                    or P2,#DRW_Read
     226/     1C5 : 46 02 30                    or P2,#Msel0+Msel1        ; Z8 --> Mem
     227/     1C8 : E6 F8 16                    ld P01M,#016h            ; reconnect bus
     228/     1CB : D6 0C 58                    call ReadSpareTrk
     229/     1CE : E6 07 FF                    ld SpareTblDirty,#0FFh        ; now table *really* needs to be updated...
     230/     1D1 : ED 02 17                    jp nz,GetHostCmd        ; ***


 6 
 on: November 15, 2021, 09:00:49 pm 
Started by rayarachelian - Last post by D.Finni
I voted to fix up existing code/bugs and release as-is.

 7 
 on: November 13, 2021, 10:53:28 am 
Started by rayarachelian - Last post by rayarachelian
Before adding MW+II support consider that MW+II is not public domain and the required PFG hardware is proprietary and not documented.   James the MW+II developer is a member of the group, maybe he will give some guidance on this.

I am aware. I don't believe any approach that allows this to work on LisaEm would take away sales of MWII+, rather it would provide compatibility within LisaEm to allow it to run. You'd still need to obtain your own (presumably) legal copy of MWII+.

Whatever code I'd presumably write to work around the PFG would not be applicable to a physical Lisa running MWII+ w/o the PFG as it would not provide proper timing for floppy and/or serial ports, and would only be another case of HLE. This would not duplicate an actual PFG, nor allow for someone to use it as a way to duplicate a PFG. If anything, it would be free advertising for it.

But I would note that things such as (mini and the original) vMac, Basilisk II, Executor, and the like exist, which do provide far better Macintosh emulation than anything I could provide with LisaEm.

At least one person asked privately about providing more MW support and has mentioned MWII+ specifically as an example. The goal here would be to allow someone who owns a well loved Lisa, with a highly customized/personalized setup, and be able to take an image of their Widget/ProFile, and take their apps and files with them on their laptop and enjoy them wherever they go.

(This has been a general goal I've had for years - to be able to run emulators of all of the various machines I've owned and enjoyed over the years since over several decates. i.e. CBM PET, VIC20, C64, C128, ZX81, SPARC, SGI Indy, HPPA, Canon Cat, IIe, IIgs, toaster Macs, color Macs, PPC Macs, G4 macos x, Alpha AXP, SPARC, UltraSPARC, AIX machines, TRS-80 model 100, Newtons, etc. all on my laptop, accessible anytime and anywhere.)

However, if this is something James objects to, I'll skip it.

 8 
 on: November 12, 2021, 04:23:21 pm 
Started by rayarachelian - Last post by Lisa2
Before adding MW+II support consider that MW+II is not public domain and the required PFG hardware is proprietary and not documented.   James the MW+II developer is a member of the group, maybe he will give some guidance on this.

Rick

 9 
 on: November 11, 2021, 01:58:39 pm 
Started by rayarachelian - Last post by rayarachelian
I've used October as "Pack(age)tober" to add code to allow building of packages for things like Linux RPMs, DEBs, snapcraft, OpenIndiana/Solaris, FreeBSD, Windows (NSIS), OpenBSD (this last one is a failure and needs more work).

At absolute minimum I want/need to complete code on the following before RC4 as well as a few other bugs that may come up in testing.

  1. TerminalWX

  2. Profile emulation code to allow UniPlus's install environment to work (kernel v1.1 aka "sunix").


Are there any other features you guys would like me to attempt to include in RC4, RC4 will be the final one before the prod release. (No guarantees ofc, all will be best effort, but will do my best with whatever free time I can provide.)

(Some things reserved for 1.2.8 and 2.0, such as the debugger, I likely won't be able to do because those will require me to upgrade libGenerator to the 1.3.0 code.)

Reply back if there's something else you'd like that I've not included in the options - but don't vote until I edit the poll for options 4+5. I've set the poll to allow you to vote upto 5x so you can pick one or more of the options, and you should be able to change your vote.

Poll is open for 15 days from today to allow for a couple of days to flesh out options 4,5 if there are replies.

 10 
 on: November 03, 2021, 02:10:04 pm 
Started by blusnowkitty - Last post by rayarachelian
I'm a bit annoyed by the top being backwards, but not so annoyed I didn't preorder one!

There's also some other pillows but not Lisa ones, at: https://www.8bittees.com/product-category/pillows/
and other Lisa related stuff (not pillows, but t-shirts, mugs, stickers, hats) at https://www.8bittees.com/brand/lisa/

Funny thing is the C64 and Amiga ones have various misspellings (on purpose so they don't get sued I'm guessing, but the Listing says "Commodore"). Not sure how annoying it is to have a Commander 64 pillow, but I don't seem to mind :-D

Pages: [1] 2 3 ... 10