diff --git a/doc/sBasic.pdf b/doc/sBasic.pdf index 90e1fca..d28c39f 100644 --- a/doc/sBasic.pdf +++ b/doc/sBasic.pdf @@ -1,7 +1,7 @@ %PDF-1.4 %“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com 1 0 obj -<< /F1 2 0 R /F2 3 0 R /F3 26 0 R >> +<< /F1 2 0 R /F2 3 0 R /F3 28 0 R >> endobj 2 0 obj << /BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font >> @@ -10,137 +10,150 @@ endobj << /BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font >> endobj 4 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 468.0236 0 ] /Rect [ 62.69291 663.0236 127.7229 675.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 450.0236 0 ] /Rect [ 62.69291 663.0236 127.7229 675.0236 ] /Subtype /Link /Type /Annot >> endobj 5 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 468.0236 0 ] /Rect [ 527.0227 663.7736 532.5827 675.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 450.0236 0 ] /Rect [ 527.0227 663.7736 532.5827 675.7736 ] /Subtype /Link /Type /Annot >> endobj 6 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 375.0236 0 ] /Rect [ 62.69291 645.0236 209.9629 657.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 357.0236 0 ] /Rect [ 62.69291 645.0236 209.9629 657.0236 ] /Subtype /Link /Type /Annot >> endobj 7 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 375.0236 0 ] /Rect [ 527.0227 645.7736 532.5827 657.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 357.0236 0 ] /Rect [ 527.0227 645.7736 532.5827 657.7736 ] /Subtype /Link /Type /Annot >> endobj 8 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 342.0236 0 ] /Rect [ 62.69291 627.0236 118.2629 639.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 324.0236 0 ] /Rect [ 62.69291 627.0236 118.2629 639.0236 ] /Subtype /Link /Type /Annot >> endobj 9 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 342.0236 0 ] /Rect [ 527.0227 627.7736 532.5827 639.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 324.0236 0 ] /Rect [ 527.0227 627.7736 532.5827 639.7736 ] /Subtype /Link /Type /Annot >> endobj 10 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 231.0236 0 ] /Rect [ 82.69291 609.0236 242.7529 621.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 213.0236 0 ] /Rect [ 82.69291 609.0236 242.7529 621.0236 ] /Subtype /Link /Type /Annot >> endobj 11 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 27 0 R /XYZ 62.69291 231.0236 0 ] /Rect [ 527.0227 609.7736 532.5827 621.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 213.0236 0 ] /Rect [ 527.0227 609.7736 532.5827 621.7736 ] /Subtype /Link /Type /Annot >> endobj 12 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 28 0 R /XYZ 62.69291 552.6236 0 ] /Rect [ 82.69291 591.0236 186.0729 603.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /XYZ 62.69291 552.6236 0 ] /Rect [ 82.69291 591.0236 186.0729 603.0236 ] /Subtype /Link /Type /Annot >> endobj 13 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 28 0 R /XYZ 62.69291 552.6236 0 ] /Rect [ 527.0227 591.7736 532.5827 603.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /XYZ 62.69291 552.6236 0 ] /Rect [ 527.0227 591.7736 532.5827 603.7736 ] /Subtype /Link /Type /Annot >> endobj 14 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 28 0 R /XYZ 62.69291 387.4236 0 ] /Rect [ 82.69291 573.0236 109.9329 585.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /XYZ 62.69291 387.4236 0 ] /Rect [ 82.69291 573.0236 109.9329 585.0236 ] /Subtype /Link /Type /Annot >> endobj 15 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 28 0 R /XYZ 62.69291 387.4236 0 ] /Rect [ 527.0227 573.7736 532.5827 585.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /XYZ 62.69291 387.4236 0 ] /Rect [ 527.0227 573.7736 532.5827 585.7736 ] /Subtype /Link /Type /Annot >> endobj 16 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 28 0 R /XYZ 62.69291 258.2236 0 ] /Rect [ 82.69291 555.0236 122.1529 567.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /XYZ 62.69291 258.2236 0 ] /Rect [ 82.69291 555.0236 122.1529 567.0236 ] /Subtype /Link /Type /Annot >> endobj 17 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 28 0 R /XYZ 62.69291 258.2236 0 ] /Rect [ 527.0227 555.7736 532.5827 567.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 30 0 R /XYZ 62.69291 258.2236 0 ] /Rect [ 527.0227 555.7736 532.5827 567.7736 ] /Subtype /Link /Type /Annot >> endobj 18 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 620.6236 0 ] /Rect [ 82.69291 537.0236 169.3829 549.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 620.6236 0 ] /Rect [ 82.69291 537.0236 169.3829 549.0236 ] /Subtype /Link /Type /Annot >> endobj 19 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 620.6236 0 ] /Rect [ 527.0227 537.7736 532.5827 549.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 620.6236 0 ] /Rect [ 527.0227 537.7736 532.5827 549.7736 ] /Subtype /Link /Type /Annot >> endobj 20 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 519.4236 0 ] /Rect [ 82.69291 519.0236 131.0329 531.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 519.4236 0 ] /Rect [ 82.69291 519.0236 131.0329 531.0236 ] /Subtype /Link /Type /Annot >> endobj 21 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 519.4236 0 ] /Rect [ 527.0227 519.7736 532.5827 531.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 519.4236 0 ] /Rect [ 527.0227 519.7736 532.5827 531.7736 ] /Subtype /Link /Type /Annot >> endobj 22 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 459.4236 0 ] /Rect [ 82.69291 501.0236 113.8129 513.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 459.4236 0 ] /Rect [ 82.69291 501.0236 113.8129 513.0236 ] /Subtype /Link /Type /Annot >> endobj 23 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 459.4236 0 ] /Rect [ 527.0227 501.7736 532.5827 513.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 459.4236 0 ] /Rect [ 527.0227 501.7736 532.5827 513.7736 ] /Subtype /Link /Type /Annot >> endobj 24 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 339.4236 0 ] /Rect [ 62.69291 483.0236 208.2929 495.0236 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 309.4236 0 ] /Rect [ 82.69291 483.0236 127.7129 495.0236 ] /Subtype /Link /Type /Annot >> endobj 25 0 obj -<< /Border [ 0 0 0 ] /Contents () /Dest [ 29 0 R /XYZ 62.69291 339.4236 0 ] /Rect [ 527.0227 483.7736 532.5827 495.7736 ] /Subtype /Link /Type /Annot >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 309.4236 0 ] /Rect [ 527.0227 483.7736 532.5827 495.7736 ] /Subtype /Link /Type /Annot >> endobj 26 0 obj -<< /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 165.4236 0 ] /Rect [ 62.69291 465.0236 208.2929 477.0236 ] /Subtype /Link /Type /Annot >> endobj 27 0 obj -<< /Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R - 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R - 24 0 R 25 0 R ] /Contents 45 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 44 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 - /Trans << >> /Type /Page >> +<< /Border [ 0 0 0 ] /Contents () /Dest [ 31 0 R /XYZ 62.69291 165.4236 0 ] /Rect [ 527.0227 465.7736 532.5827 477.7736 ] /Subtype /Link /Type /Annot >> endobj 28 0 obj -<< /Contents 46 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 44 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font >> endobj 29 0 obj -<< /Contents 47 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 44 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> - /Type /Page >> +<< /Annots [ 4 0 R 5 0 R 6 0 R 7 0 R 8 0 R 9 0 R 10 0 R 11 0 R 12 0 R 13 0 R + 14 0 R 15 0 R 16 0 R 17 0 R 18 0 R 19 0 R 20 0 R 21 0 R 22 0 R 23 0 R + 24 0 R 25 0 R 26 0 R 27 0 R ] /Contents 49 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 48 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 + /Trans << >> /Type /Page >> endobj 30 0 obj -<< /Outlines 32 0 R /PageLabels 48 0 R /PageMode /UseNone /Pages 44 0 R /Type /Catalog >> +<< /Contents 50 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 48 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 31 0 obj -<< /Author () /CreationDate (D:20181002080507+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20181002080507+00'00') /Producer (ReportLab PDF Library - www.reportlab.com) - /Subject (\(unspecified\)) /Title (sBasic -- yet another simple programming language) /Trapped /False >> +<< /Contents 51 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 48 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 32 0 obj -<< /Count 12 /First 33 0 R /Last 43 0 R /Type /Outlines >> +<< /Contents 52 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 48 0 R /Resources << /Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] >> /Rotate 0 /Trans << >> + /Type /Page >> endobj 33 0 obj -<< /Dest [ 27 0 R /XYZ 62.69291 468.0236 0 ] /Next 34 0 R /Parent 32 0 R /Title (sBasic Usage) >> +<< /Outlines 35 0 R /PageLabels 53 0 R /PageMode /UseNone /Pages 48 0 R /Type /Catalog >> endobj 34 0 obj -<< /Dest [ 27 0 R /XYZ 62.69291 375.0236 0 ] /Next 35 0 R /Parent 32 0 R /Prev 33 0 R /Title (sBasic Language Specification) >> +<< /Author () /CreationDate (D:20181003201416+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20181003201416+00'00') /Producer (ReportLab PDF Library - www.reportlab.com) + /Subject (\(unspecified\)) /Title (sBasic -- yet another simple programming language) /Trapped /False >> endobj 35 0 obj -<< /Count 7 /Dest [ 27 0 R /XYZ 62.69291 342.0236 0 ] /First 36 0 R /Last 42 0 R /Next 43 0 R /Parent 32 0 R - /Prev 34 0 R /Title (Whitespace) >> +<< /Count 13 /First 36 0 R /Last 47 0 R /Type /Outlines >> endobj 36 0 obj -<< /Dest [ 27 0 R /XYZ 62.69291 231.0236 0 ] /Next 37 0 R /Parent 35 0 R /Title (Variables and Arithmetic Operations) >> +<< /Dest [ 29 0 R /XYZ 62.69291 450.0236 0 ] /Next 37 0 R /Parent 35 0 R /Title (sBasic Usage) >> endobj 37 0 obj -<< /Dest [ 28 0 R /XYZ 62.69291 552.6236 0 ] /Next 38 0 R /Parent 35 0 R /Prev 36 0 R /Title (Conditional Statements) >> +<< /Dest [ 29 0 R /XYZ 62.69291 357.0236 0 ] /Next 38 0 R /Parent 35 0 R /Prev 36 0 R /Title (sBasic Language Specification) >> endobj 38 0 obj -<< /Dest [ 28 0 R /XYZ 62.69291 387.4236 0 ] /Next 39 0 R /Parent 35 0 R /Prev 37 0 R /Title (Loops) >> +<< /Count 8 /Dest [ 29 0 R /XYZ 62.69291 324.0236 0 ] /First 39 0 R /Last 46 0 R /Next 47 0 R /Parent 35 0 R + /Prev 37 0 R /Title (Whitespace) >> endobj 39 0 obj -<< /Dest [ 28 0 R /XYZ 62.69291 258.2236 0 ] /Next 40 0 R /Parent 35 0 R /Prev 38 0 R /Title (Routines) >> +<< /Dest [ 29 0 R /XYZ 62.69291 213.0236 0 ] /Next 40 0 R /Parent 38 0 R /Title (Variables and Arithmetic Operations) >> endobj 40 0 obj -<< /Dest [ 29 0 R /XYZ 62.69291 620.6236 0 ] /Next 41 0 R /Parent 35 0 R /Prev 39 0 R /Title (Special Commands) >> +<< /Dest [ 30 0 R /XYZ 62.69291 552.6236 0 ] /Next 41 0 R /Parent 38 0 R /Prev 39 0 R /Title (Conditional Statements) >> endobj 41 0 obj -<< /Dest [ 29 0 R /XYZ 62.69291 519.4236 0 ] /Next 42 0 R /Parent 35 0 R /Prev 40 0 R /Title (Comments) >> +<< /Dest [ 30 0 R /XYZ 62.69291 387.4236 0 ] /Next 42 0 R /Parent 38 0 R /Prev 40 0 R /Title (Loops) >> endobj 42 0 obj -<< /Dest [ 29 0 R /XYZ 62.69291 459.4236 0 ] /Parent 35 0 R /Prev 41 0 R /Title (Strings) >> +<< /Dest [ 30 0 R /XYZ 62.69291 258.2236 0 ] /Next 43 0 R /Parent 38 0 R /Prev 41 0 R /Title (Routines) >> endobj 43 0 obj -<< /Dest [ 29 0 R /XYZ 62.69291 339.4236 0 ] /Parent 32 0 R /Prev 35 0 R /Title (sBasic Application Extensions) >> +<< /Dest [ 31 0 R /XYZ 62.69291 620.6236 0 ] /Next 44 0 R /Parent 38 0 R /Prev 42 0 R /Title (Special Commands) >> endobj 44 0 obj -<< /Count 3 /Kids [ 27 0 R 28 0 R 29 0 R ] /Type /Pages >> +<< /Dest [ 31 0 R /XYZ 62.69291 519.4236 0 ] /Next 45 0 R /Parent 38 0 R /Prev 43 0 R /Title (Comments) >> endobj 45 0 obj -<< /Length 5969 >> +<< /Dest [ 31 0 R /XYZ 62.69291 459.4236 0 ] /Next 46 0 R /Parent 38 0 R /Prev 44 0 R /Title (Strings) >> +endobj +46 0 obj +<< /Dest [ 31 0 R /XYZ 62.69291 309.4236 0 ] /Parent 38 0 R /Prev 45 0 R /Title (Datatypes) >> +endobj +47 0 obj +<< /Dest [ 31 0 R /XYZ 62.69291 165.4236 0 ] /Parent 35 0 R /Prev 38 0 R /Title (sBasic Application Extensions) >> +endobj +48 0 obj +<< /Count 4 /Kids [ 29 0 R 30 0 R 31 0 R 32 0 R ] /Type /Pages >> +endobj +49 0 obj +<< /Length 6211 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q @@ -157,16 +170,30 @@ BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Contents) Tj T* ET Q Q q -1 0 0 1 62.69291 480.0236 cm +1 0 0 1 62.69291 462.0236 cm 0 0 0 rg BT /F1 10 Tf 12 TL ET q -1 0 0 1 0 183 cm +1 0 0 1 0 201 cm q BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (sBasic Usage) Tj T* ET Q Q q +1 0 0 1 397.8898 201 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 183 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (sBasic Language Specification) Tj T* ET +Q +Q +q 1 0 0 1 397.8898 183 cm q 0 0 .501961 rg @@ -177,7 +204,7 @@ Q q 1 0 0 1 0 165 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (sBasic Language Specification) Tj T* ET +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Whitespace) Tj T* ET Q Q q @@ -191,7 +218,7 @@ Q q 1 0 0 1 0 147 cm q -BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 .501961 rg (Whitespace) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Variables and Arithmetic Operations) Tj T* ET Q Q q @@ -199,13 +226,13 @@ q q 0 0 .501961 rg 0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F2 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 129 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Variables and Arithmetic Operations) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Conditional Statements) Tj T* ET Q Q q @@ -213,13 +240,13 @@ q q 0 0 .501961 rg 0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (1) Tj T* -66.44 0 Td ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 111 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Conditional Statements) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Loops) Tj T* ET Q Q q @@ -233,7 +260,7 @@ Q q 1 0 0 1 0 93 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Loops) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Routines) Tj T* ET Q Q q @@ -247,7 +274,7 @@ Q q 1 0 0 1 0 75 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Routines) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Special Commands) Tj T* ET Q Q q @@ -255,13 +282,13 @@ q q 0 0 .501961 rg 0 0 .501961 RG -BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET Q Q q 1 0 0 1 0 57 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Special Commands) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Comments) Tj T* ET Q Q q @@ -275,7 +302,7 @@ Q q 1 0 0 1 0 39 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Comments) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Strings) Tj T* ET Q Q q @@ -289,7 +316,7 @@ Q q 1 0 0 1 0 21 cm q -BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Strings) Tj T* ET +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Datatypes) Tj T* ET Q Q q @@ -318,78 +345,78 @@ q Q Q q -1 0 0 1 62.69291 447.0236 cm +1 0 0 1 62.69291 429.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (sBasic Usage) Tj T* ET Q Q q -1 0 0 1 62.69291 417.0236 cm +1 0 0 1 62.69291 399.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .616905 Tw (sBasic is designed for freely programmable embedded applications that do not allow scripting languages) Tj T* 0 Tw (like JS, Lua or Python.) Tj T* ET Q Q q -1 0 0 1 62.69291 387.0236 cm +1 0 0 1 62.69291 369.0236 cm q 0 0 0 rg BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL .571751 Tw (One should not write applications with it, in contrary it is designed to write extensions for micro controller) Tj T* 0 Tw (projects.) Tj T* ET Q Q q -1 0 0 1 62.69291 354.0236 cm +1 0 0 1 62.69291 336.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (sBasic Language Specification) Tj T* ET Q Q q -1 0 0 1 62.69291 321.0236 cm +1 0 0 1 62.69291 303.0236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (Whitespace) Tj T* ET Q Q q -1 0 0 1 62.69291 291.0236 cm +1 0 0 1 62.69291 273.0236 cm q BT 1 0 0 1 0 14 Tm 2.394269 Tw 12 TL /F1 10 Tf 0 0 0 rg (The following whitespace characters will be converted to a single blank \() Tj /F3 10 Tf 0 0 0 rg (0x20) Tj /F1 10 Tf 0 0 0 rg (\): ) Tj /F3 10 Tf 0 0 0 rg (\\t\\r ) Tj /F1 10 Tf 0 0 0 rg (and multiple) Tj T* 0 Tw (blanks.) Tj T* ET Q Q q -1 0 0 1 62.69291 261.0236 cm +1 0 0 1 62.69291 243.0236 cm q BT 1 0 0 1 0 14 Tm .59284 Tw 12 TL /F1 10 Tf 0 0 0 rg (The newline character \() Tj /F3 10 Tf 0 0 0 rg (\\n) Tj /F1 10 Tf 0 0 0 rg (\) is a special character however multiple newline characters will be interpreted) Tj T* 0 Tw (as one.) Tj T* ET Q Q q -1 0 0 1 62.69291 243.0236 cm +1 0 0 1 62.69291 225.0236 cm q 0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A statement always ends with a newline character. Tokens are separated by blanks.) Tj T* ET Q Q q -1 0 0 1 62.69291 213.0236 cm +1 0 0 1 62.69291 195.0236 cm q BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Variables and Arithmetic Operations) Tj T* ET Q Q q -1 0 0 1 62.69291 183.0236 cm -q -0 0 0 rg -BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.831318 Tw (Variables have data types. Usually they will be integers, but there might be other application specific) Tj T* 0 Tw (datatypes.) Tj T* ET -Q -Q -q 1 0 0 1 62.69291 165.0236 cm q 0 0 0 rg +BT 1 0 0 1 0 14 Tm /F1 10 Tf 12 TL 1.831318 Tw (Variables have data types. Usually they will be integers, but there might be other application specific) Tj T* 0 Tw (datatypes.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 147.0236 cm +q +0 0 0 rg BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Variables have to be declared explicitly using the scheme:) Tj T* ET Q Q q -1 0 0 1 62.69291 131.8236 cm +1 0 0 1 62.69291 113.8236 cm q q 1 0 0 1 0 0 cm @@ -409,7 +436,7 @@ Q Q Q q -1 0 0 1 62.69291 99.82362 cm +1 0 0 1 62.69291 81.82362 cm q BT 1 0 0 1 0 14 Tm 1.016651 Tw 12 TL /F2 10 Tf 0 0 0 rg (Note ) Tj /F1 10 Tf (that variable names must start with an alphabetic character. Variable names can contain after the) Tj T* 0 Tw (first character all of the following characters:) Tj T* ET Q @@ -417,7 +444,7 @@ Q endstream endobj -46 0 obj +50 0 obj << /Length 4567 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET @@ -597,8 +624,8 @@ Q endstream endobj -47 0 obj -<< /Length 4211 >> +51 0 obj +<< /Length 6919 >> stream 1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET q @@ -728,41 +755,189 @@ BT 1 0 0 1 0 26 Tm .112619 Tw 12 TL /F1 10 Tf 0 0 0 rg (A single line string sta Q Q q -1 0 0 1 62.69291 351.4236 cm +1 0 0 1 62.69291 339.4236 cm q -BT 1 0 0 1 0 14 Tm 1.447209 Tw 12 TL /F1 10 Tf 0 0 0 rg (A multi line string starts and ends with a ) Tj /F3 10 Tf 0 0 0 rg (` ) Tj /F1 10 Tf 0 0 0 rg (character and can span over several lines. Every newline) Tj T* 0 Tw (character in the string will be treated as such. ) Tj /F3 10 Tf 0 0 0 rg (" ) Tj /F1 10 Tf 0 0 0 rg (is treated as character ) Tj /F3 10 Tf 0 0 0 rg (") Tj /F1 10 Tf 0 0 0 rg (.) Tj T* ET +BT 1 0 0 1 0 26 Tm 1.447209 Tw 12 TL /F1 10 Tf 0 0 0 rg (A multi line string starts and ends with a ) Tj /F3 10 Tf 0 0 0 rg (` ) Tj /F1 10 Tf 0 0 0 rg (character and can span over several lines. Every newline) Tj T* 0 Tw 1.083145 Tw (character in the string will be treated as such. ) Tj /F3 10 Tf 0 0 0 rg (" ) Tj /F1 10 Tf 0 0 0 rg (is treated as character ) Tj /F3 10 Tf 0 0 0 rg (") Tj /F1 10 Tf 0 0 0 rg (. The rest of the conventions) Tj T* 0 Tw (follow the conventions for single line strings.) Tj T* ET Q Q q -1 0 0 1 62.69291 318.4236 cm +1 0 0 1 62.69291 321.4236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (Note ) Tj /F1 10 Tf (that strings in sBasic are static and stored in the program memory.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 291.4236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F2 15 Tf 0 0 0 rg (Datatypes) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 279.4236 cm +Q +q +1 0 0 1 62.69291 279.4236 cm +Q +q +1 0 0 1 62.69291 255.4236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm .304987 Tw 12 TL /F1 10 Tf 0 0 0 rg (Strings are indicated by the ) Tj /F3 10 Tf 0 0 0 rg (str ) Tj /F1 10 Tf 0 0 0 rg (keyword. The variable itself is a pointer to the actual string that will) Tj T* 0 Tw (be stored at the end of the program memory) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 249.4236 cm +Q +q +1 0 0 1 62.69291 237.4236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Integers are indicated by the ) Tj /F3 10 Tf 0 0 0 rg (int ) Tj /F1 10 Tf 0 0 0 rg (keyword.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 231.4236 cm +Q +q +1 0 0 1 62.69291 207.4236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm 3.646905 Tw 12 TL /F1 10 Tf 0 0 0 rg (Characters are indicated by the ) Tj /F3 10 Tf 0 0 0 rg (chr ) Tj /F1 10 Tf 0 0 0 rg (keyword. Literal characters are surrounded by two ) Tj /F3 10 Tf 0 0 0 rg (') Tj T* 0 Tw /F1 10 Tf 0 0 0 rg (characters. They can contain escape sequences \() Tj /F3 10 Tf 0 0 0 rg (\\ntr') Tj /F1 10 Tf 0 0 0 rg (\).) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 201.4236 cm +Q +q +1 0 0 1 62.69291 177.4236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 9 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 14 Tm .509985 Tw 12 TL /F1 10 Tf 0 0 0 rg (Floats are not supported by vanilla sBasic. They should however be marked using the ) Tj /F3 10 Tf 0 0 0 rg (flt ) Tj /F1 10 Tf 0 0 0 rg (or ) Tj /F3 10 Tf 0 0 0 rg (dbl) Tj T* 0 Tw /F1 10 Tf 0 0 0 rg (keywords.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 177.4236 cm +Q +q +1 0 0 1 62.69291 144.4236 cm q BT 1 0 0 1 0 3.5 Tm 21 TL /F2 17.5 Tf 0 0 0 rg (sBasic Application Extensions) Tj T* ET Q Q q -1 0 0 1 62.69291 276.4236 cm +1 0 0 1 62.69291 102.4236 cm q 0 0 0 rg BT 1 0 0 1 0 26 Tm /F1 10 Tf 12 TL 2.557126 Tw (When it comes to real world applications the sBasic language should be extended with Application) Tj T* 0 Tw .21784 Tw (Specific Commands \(ASC\). Those provide a way to directly access the assembly language controlling the) Tj T* 0 Tw (bytecode interpreter.) Tj T* ET Q Q +q +1 0 0 1 62.69291 84.42362 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (ASCs should typically compile to few assembly commands, like:) Tj T* ET +Q +Q endstream endobj -48 0 obj -<< /Nums [ 0 49 0 R 1 50 0 R 2 51 0 R ] >> +52 0 obj +<< /Length 587 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 583.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 180 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 158 Tm /F3 10 Tf 12 TL (# sBasic) Tj T* (string string_part = string + 1) Tj T* (PUTCREF string_part) Tj T* T* (; assembly) Tj T* (; string_part = string + 1) Tj T* (ld 0, string) Tj T* (ld 1, 1) Tj T* (add 0, 1) Tj T* (st 0, string_part) Tj T* T* (; PUTCREF string_part) Tj T* (ld 0, string_part) Tj T* (putcref 0) Tj T* ET +Q +Q +Q +Q +Q + +endstream endobj -49 0 obj +53 0 obj +<< /Nums [ 0 54 0 R 1 55 0 R 2 56 0 R 3 57 0 R ] >> +endobj +54 0 obj << /S /D /St 1 >> endobj -50 0 obj +55 0 obj << /S /D /St 2 >> endobj -51 0 obj +56 0 obj << /S /D /St 3 >> endobj +57 0 obj +<< /S /D /St 4 >> +endobj xref -0 52 +0 58 0000000000 65535 f 0000000075 00000 n 0000000130 00000 n @@ -790,36 +965,42 @@ xref 0000003789 00000 n 0000003961 00000 n 0000004133 00000 n -0000004242 00000 n -0000004620 00000 n -0000004830 00000 n -0000005040 00000 n -0000005149 00000 n -0000005460 00000 n -0000005538 00000 n -0000005655 00000 n -0000005802 00000 n -0000005970 00000 n -0000006110 00000 n -0000006250 00000 n -0000006373 00000 n -0000006499 00000 n -0000006633 00000 n -0000006759 00000 n -0000006871 00000 n -0000007005 00000 n -0000007083 00000 n -0000013109 00000 n -0000017733 00000 n -0000022001 00000 n -0000022063 00000 n -0000022100 00000 n -0000022137 00000 n +0000004305 00000 n +0000004477 00000 n +0000004586 00000 n +0000004978 00000 n +0000005188 00000 n +0000005398 00000 n +0000005608 00000 n +0000005717 00000 n +0000006028 00000 n +0000006106 00000 n +0000006223 00000 n +0000006370 00000 n +0000006538 00000 n +0000006678 00000 n +0000006818 00000 n +0000006941 00000 n +0000007067 00000 n +0000007201 00000 n +0000007327 00000 n +0000007452 00000 n +0000007566 00000 n +0000007700 00000 n +0000007785 00000 n +0000014053 00000 n +0000018677 00000 n +0000025653 00000 n +0000026296 00000 n +0000026367 00000 n +0000026404 00000 n +0000026441 00000 n +0000026478 00000 n trailer << /ID % ReportLab generated PDF document -- digest (http://www.reportlab.com) - [(\371\300\304\374\242&eY\373\323\021\356\241\033"\261) (\371\300\304\374\242&eY\373\323\021\356\241\033"\261)] - /Info 31 0 R /Root 30 0 R /Size 52 >> + [(d\004\350\227\017\224\334\311#> startxref -22174 +26515 %%EOF