Notes on converting a ZX Spectrum PAWed adventure to DAAD ========================================================= Although the ZX Spectrum version of PAWS is my adventure system of choice (creating adventures through the more modern tool inPAWS) I regularly convert Spectrum PAWed games to DAAD so that they can be played on other 8-bit and 16-bit retro micro systems. DAAD, the adventure system produced exclusively for the Spanish adventure company Aventuras AD, has many similarities with the ZX Spectrum version of PAW. Being part of a lineage that started with The Quill, they both share a lot of elements, such as their CondActs "programming language". However, DAAD directly evolved from the CP/M version of the PAW, which was also different in several aspects to the earlier ZX Spectrum version. There are tools available to help migrate a Spectrum PAWed game to DAAD (such as ANTUR or PAWS2DAAD) but they are only a starting point. Lots of issues will need to be addressed and manual fixes applied in order to get a fully-working game. I would highly recommend that this is only done with a game that you know well. Ideally, it should be your own game. My belief is that if you intend to port someone else's game (where possible with permission) you should commit to putting in as much care, time and effort (including thorough playtesting) as they did originally. I'll outline a few of the key areas of difference between Spectrum PAWS and DAAD below... HOW WRITING A GAME WORKS: ZX Spectrum PAWS is a database editor-based system with a built-in instant-testing routine. All aspects of game creation is done through a ZX Spectrum program which edits the adventure database directly. When the adventure code is complete, the PAWS program can output the database together with all the necessary additional files, including the separate interpreter that would allow a third-party to load and play the game. DAAD is a compiler-based system, as was CP/M PAWS, where the adventure is defined in a source text file which is then compiled into an adventure database to be run through a suitable interpreter. Modern utilities for DAAD, such as DAAD Ready, used in conjunction with a text editor (such as VScode with Chris Ainsley's syntax highlighter) can provide you with an almost instant-testing set-up, providing the benefits of the original PAWS program with the many advantages of using text-based source code. Carefully produced DAAD source code can easily be compiled to the full range of systems that DAAD supports. (Investigating CP/M PAWS, or inPAWs; a third-party tool that lets you make ZX Spectrum, CP/M and DOS adventures; is a great and highly-recommended stepping-stone in the journey from ZX Spectrum PAWS to DAAD, as it also uses a text source/compiler-based system and retains the familiar PAWS database layout and game loop.) GAME LOOP & FLAGS: PAWS has a pre-defined game loop, with some process tables and flags strictly defined and reserved for system use; such as the response table (process 0 in CP/M PAW), process 1 (the location-related table) and process 2 (the computer's turn). DAAD has no set game loop. The game loop, and indeed the flags, are outlined in the source code by the user and allows a programmer to break away from some of the limitations of the structure of PAW. In practise you will probably be using a DAAD template/structure that replicates the basic PAWS loop. What were process 0, 1 and 2, in PAWs will be mostly retained but will be located in later tables in a DAAD game. The default templates for DAAD tend to define flags in a similar way to how they were used in CP/M PAWS, which is helpful if you're moving from using PAWS to DAAD. However there were some flags that were once defined as free for users to use in ZX Spectrum PAWS that were reserved for system use in CP/M PAWS and DAAD. The standard DAAD "symbols" template defines the flags 0-63 as system flags. Adjustments would be need to be made for ZX Spectrum PAWed games that use these reserved flags in unintended ways. It is particularly common for ZX Spectrum games to use flags 58-63 in non-system ways. PROCESS TABLE ENTRY MATCHING: The process tables in ZX Spectrum PAWS worked slightly differently than they did in CP/M PAWS (and later DAAD). All entries in process tables are proceeded by a verb and a noun (or the wildcard * and _). In ZX Spectrum PAWS, by default, these verbs & nouns only have meaning in the response table, where they are matched against the player's input to decide whether the CondActs that follow are executed. In the other process tables they were often used as aide-memoires for the programmer. In fact, the PAWS manual encouraged this use. So, for example, routines in process 2 (the computer's turn) that refer to the angry dog that a player has to deal with could be proceeded with "* DOG". In CP/M PAWS and DAAD, these verbs and nouns potentially have meaning in all process tables. Any aide-memories need to be stripped from Spectrum PAWed games for them to run correctly under the CP/M PAWS or DAAD interpreters. (Note: The later A16+ versions of Spectrum PAW allowed matching to be turned on by a flag, (LET 58 128) as an aid for implementing advanced features such as giving commands to PSIs. That intentional use would need to be retained.). SCREEN SIZE, LAYOUT CONTROLS, FONTS & COLOURS: ZX Spectrum PAW had advanced screen layout controls, such as LINE, GRAPHIC, PROTECT, PRINTAT, BACKAT, SAVEAT; allowing you to print on specific parts of the screen and split the screen up in particular ways. It allowed the addition of colour in whole messages through CondActs such as INK and PAPER, as well as extremely granularly, changing mid-message, through control codes that were embedded in message and location texts. There was a similar level of control for fonts. UDGs (user defined graphics) could also be embedded into any text in the game. CP/M PAWS removed a lot of these features. Because of the limitations of the CP/M standard, there were no font, colour or advanced screen controls. DAAD restores and reintroduces many of the screen layout controls, such as PRINTAT, but also replaces some of the formatting CondActs with the idea of multiple definable windows. Unlike the Spectrum PAW you can not embed colours, fonts and UDGs in message and location text in DAAD. This difference in layout commands and colour control is one of the biggest and most notable differences when moving from the Spectrum PAW to the DAAD. Also, Spectrum PAW used the standard default 32 character screen width. Spectrum DAAD has 40 columns, by using a 6x8 font instead of the standard 8x8 one. SYSTEM MESSAGES: Generally system messages 54-60 are reserved for use for disk-related messages in CP/M PAWS and DAAD. ZX Spectrum authors may well have used these for their own purposes. OTHER NOTES: There are two different flavours of DAAD source code. One that is compatible with the original DAAD compiler, and one that works with Uto's newer DRC (DAAD reborn compiler). They have slightly different structures and syntax. Other issues when moving ZX Spectrum games from PAWS to CP/M PAWS can be found in this guide: http://8bitag.com/info/zx-cpm.html (some of which apply to Spectrum PAWS to DAAD). They include issues around CP/M being stricter about the properties of wearable objects and the manipulation of the location flag. SEE ALSO: There are additional resources on porting ZX Spectrum PAWed adventures here... http://8bitag.com/info Note that many of these documents are slightly outdated, dating from the early days of the resurrection of the DAAD system. They may still provide some useful pointers and information.