22b807c4293a3983b41cb0d8596b99f7.ppt
- Количество слайдов: 29
QPC “Why, when and how? " Dipl. Inf. Marcel Kilgus Festo AG & Co. KG / Software Engineering Kilgus
Agenda 1. Personal Introduction 2. History of QPC 3. Development tools 4. QPC technology 5. SMSQ/E 6. Q&A
Personal introduction v. Author of QPC, the first software only QL emulator for PCs v. Main developer of QL OS SMSQ/E after Tony Tebby quit v. Actual software developer, not yet a Power. Point drone v. Not really a public speaker v-> You get what you pay for
Timeline v 1979 v 1986 v 1988 v 1993 v 1995 v 1996 v 1999 v 2002 Born Started with a ZX 81 (BASIC) Finally got my own QL Got a PC. With it the idea of „PCQL“ is born First beta of QPC shown at a QL meeting QPC v 1. 00 (DOS) goes on sale QPC 2 (Windows) is released QPC 2 v 3. 00 sees the light
How did this look like?
Why QPC? v. I loved my QL and felt guilty for switching to a PC (but it could do more than 8 colours! Who could resist? ) v. Somebody said I couldn’t do it (my friend Jochen Hassler of ATRdevice, DISA, Eprommer II and other fames)
QPC beta v. First presented at a QL meeting near Munich v. Emulated original QL hardware v. Ran QDOS (mainly Minerva) v. People were so excited they even wanted to buy the beta version
QPC beta demonstration
Switch to SMSQ/E v. Emulating native hardware is expensive. A specially adapted OS was called for v. We decided that SMSQ/E would be better suited than QDOS/Minerva v. In Oct ‘ 95 J. Hassler contacted J. Merz for me regarding SMSQ/E v. In Dec ‘ 95 first sources arrived by mail (notice the lack of “e” in “mail”) v. In Feb ‘ 96 sources were complete
QPC 1 (1996 – 1999) v. Runs with a specially adapted version of SMSQ/E instead of QDOS v. No native hardware emulated (except to a degree the screen) v 100% assembler code (~15000 lines) v. Only 4 bugs in 68 k emulation found over the next 13 years (the fourth was discovered in 2006!)
QPC 1 demonstration
QPC 2 v 1 (1999 – 2001) v. QPC 1 needed a specially booted DOS version to work v. When Win 95 became more prevalent, shouts for a native Windows version became louder v. QPC 2 v 1 was finally released in 1999 v. Halve C (Windows stuff), halve assembler code (68 k core and glue) v. Looks and feels much like QPC 1
QPC 2 v 2 (2001 – 2002) v. Introduced 16 -bit graphics (GD 2) v. Now also supported windowed mode instead of just full screen v. Accelerated graphics v. Floating point acceleration v. New “DOS” device to directly access PC mass storage devices
QPC 2 v 3 (2002 – today) v. Polishing release with many small improvements (user wish list) v. Wheel mouse support v. Power management v. New beeper emulation (NT/2 K compatible) v. Sampled sound system support! v. TCP/IP support v 68020 emulation core (written with the help of George Gwilt)
QPC 2 v 3 demonstration
Development tools (QPC 1) v. Assembler choice was between Borland Turbo Assembler and Microsoft Assembler v. TASM won hands down v. Debugged using Borland Turbo Debugger
Development tools (QPC 2) vv 1, v 2 w w w C parts compiled using Microsoft C v 6 Assembler parts in TASM Debugger Nu. Mega Soft. ICE Borland MAKE IDE Borland Code. Wright vv 3 w w C parts compiled using Microsoft C v 8 (2005) Assembler parts in MASM Borland MAKE still employed Visual Studio used as debugger and IDE
Emulation core v. Was mainly 68000 compatible, but was declared as 68010 as it allowed data access to odd addresses v. Later QPC 2 v 3 releases were made 68020 compatible v 8000 -9000 lines of assembler code v. Line A emulator ($Axxx opcodes) used as OS interface
Emulation interface v. Mostly one way: SMSQ/E -> PC v. Line A examples: w w w $A 200 qpc. sexst does ser port Dr exist? $A 210 qpc. sinit ser port no. Dr $A 220 qpc. sopen ser port no. Dr $A 230 qpc. sclse close ser port no. Dr $A 240 qpc. ssend bytes in ser queue Usage: dc. w qpc. ssend+4 ; Send queue now
Memory management v. As laptops got more and more common, preserving the battery became more important v. Emulation used to run at 100%, so CPU could never sleep v. Question is, when to sleep? Do go to sleep after 5 consecutive scheduler runs, but: w Don’t if mouse was moved w Don’t if key was pressed w Don’t if a trap #1, #2 or #3 was issued
SMSQ/E v. Originally programmed by QDOS inventor Tony Tebby v. Co-developed by me since 1996 (but mainly QPC parts) v. Open source since 2002 v. Maintainer Wolfgang Lenerz v. Out of 111 changes since then 80 were (co-)developed by me
SMSQ/E technical facts v. Completely written in 68 k assembler v. About 2000 source files, containing 222000 lines of code v. Compiled between 260 and 330 k. B big (depending on plattform) v. Compiled using QMake, QMac and QLink/Tony Tebby linker v. Alternatively: Lenerz’ Make, GWASS and Tony Tebby Linker
SMSQ/E major new features (by me) v. Improved high colour support in display driver, including alpha blending for sprites v. High colour capable WMAN 2 v. Aurora 8 -bit driver v. SBasic command line history v. Background I/O support (!) v. New Ctrl+C job switching
SMSQ/E major new features (others) v. Opaque window move routine (WL) v. HOME directory thing (WL) v. Sprite used as cursor (WL) v. Some QXL enhancements
SMSQ/E fun bug facts v. One user complained that SBASIC wouldn’t run his Super. Basic program w He had written procedures that took as many as 357 parameters! All named X 0, X 1, X 2 etc. w One line alone in that program was almost 2 kb long w I actually found and fixed the problem v. In v 3. 00 I’ve finally fixed a bug in the PE that has “bugged” me since 1989
What’s next for me?
Q&A
Happy 25 th anniversary and QL forever!
Contact, mailto: