Class: NADOLTokens

Inherits:
NADOLFile show all
Defined in:
lib/native_file_types/apple2/NADOLFile.rb

Overview

file packed by the NADOL EDITOR application. format is a series of unnumbered lines, where each line has the following format:

<Length>     (8-bit: including length byte,  contents, zero>
<Tokens and/or Characters>
<Zero byte>  ($00, to mark the end of the line)

each byte in the line is interpreted as follows: $00 - end of line marker $01 - $64 - NADOL tokens $65 - $70 - ??? unknown $71 - $7f - 1 to F spaces $80 - $FF - ASCII character with high bit set

Constant Summary collapse

NADOL_EDITOR_TOKENS =
[
  "?",   #00 (so we can use token as an index in to this array)

  "READ(", #01

  "FREE(", #02

  "NOT(",  #03

  "LENGTH(", #04

  "PDL(",  #05

  "SIZEOF(", #06

  "LSCRN(",  #07

  "HSCRN(",  #08

  "CHECK(",  #09

  "MAKE(", #0a

  "SCREEN(", #0b

  "HEXPACK ",#0c

  "PROCEDURE ",#0d

  "ENDPROC", #0e

  "FUNCTION ",#0f

  "ENDFUNC", #10

  "IF ", #11

  "ELSE",  #12

  "ENDIF", #13

  "WHILE ",  #14

  "ENDWHILE",#15

  "DEFINE ", #16

  "RESULT=", #17

  "PRINT", #18

  "PRINTHEX",#19

  "PRINTBYTE",#1a

  "LABEL ",  #1b

  "GOTO ", #1c

  "INVERSE", #1d

  "NORMAL",  #1e

  "FLASH", #1f

  "CASE ", #20

  "GOTOXY(", #21

  "CLEAR", #22

  "NEW", #23

  "HOME",  #24

  "CLREOL",  #25

  "CLREOP",  #26

  "PRBLOCK(",#27

  "STOP",  #28

  "COPY(", #29

  "FILL(", #2a

  "MASK(", #2b

  "RSECT(",  #2c

  "WSECT(",  #2d

  "RBLOCK(", #2e

  "WBLOCK(", #2f

  "WTRACK(", #30

  "WSYNC(",  #31

  "RECAL(",  #32

  "DISPLAY(",#33

  "RTRACK(", #34

  "RSYNC(",  #35

  "BEEP(", #36

  "DISASM(", #37

  "TEXT",  #38

  "FORMAT(", #39

  "SETFORMAT(",#3a

  "WORKDRIVE ",#3b

  "INIT ", #3c

  "LOAD ", #3d

  "SAVE ", #3e

  "CATALOG", #3f

  "DELETE ", #40

  "RENAME ", #41

  "PACK ", #42

  "CONVERT(",#43

  "INPUT(",  #44

  "LORES", #45

  "PLOT(", #46

  "HLINE(",  #47

  "VLINE(",  #48

  "COLOR=",  #49

  "FIND(", #4a

  "HIRES", #4b

  "HCOLOR=", #4c

  "HPLOT", #4d

  "CALL(", #4e

  "PR#", #4f

  "IN#", #50

  "FILTER(", #51

  "LIST",  #52

  "RUN", #53

  "AUXMOVE(",#54

  "LCMOVE(", #55

  "DELAY(",  #56

  "INTEGER", #57

  "BYTE",  #58

  " AND ", #59

  " OR ",  #5a

  " MOD ", #5b

  " XOR ", #5c

  " WITH ",  #5d

  " TO ",  #5e

  " AT ",  #5f

  "TAB(",  #60

  "ENDCASE", #61

  "MON:",  #62

  "EDIT",  #63

  "SAVE@"  #64

]

Instance Attribute Summary

Attributes inherited from NativeFileType

#aux_code, #contents, #file_system_image, #file_type, #filename, #meta_data

Instance Method Summary collapse

Methods inherited from NADOLFile

file_system_file_types, load_address

Methods inherited from NativeFileType

#<=>, #==, all_native_file_types, best_fit, code_for_tests, compatability_score, #data_without_header, file_type_matches?, #full_filename, #header_length, #initialize, is_valid_file_if, #load_address, load_address, matching_score, native_file_types_possible_on_file_system, non_matching_score, #to_hex_dump, #to_info_dump, #type_description

Methods included from SubclassTracking

extended

Constructor Details

This class inherits a constructor from NativeFileType

Instance Method Details

#to_listingObject



150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
# File 'lib/native_file_types/apple2/NADOLFile.rb', line 150

def to_listing
s=""
index=0
while (index<contents.length)
  line_length=contents[index]
  index+=1
  end_of_line=index+line_length-2
  while(index<end_of_line)
    b=contents[index]
    if (b<=0x64) then
      s+=NADOL_EDITOR_TOKENS[b]
    elsif(b>0x70 and b<0x80) then
      s+=" "*(b-0x70)
    elsif(b>=0x80) then
      s+=(b-0x80).chr
    else
      raise sprintf("unknown token %02X at offset %04X",b,index)
    end
    index+=1 #move to next char

  end
  index+=1 #skip over end-of-line marker

  s+="\n"
end
s

end