TI-89 / TI-92 Plus Developer Guide Beta Version .02

Total Page:16

File Type:pdf, Size:1020Kb

TI-89 / TI-92 Plus Developer Guide Beta Version .02 Spine Back Front 5.31” Texas Instruments U.S.A. 7800 Banner Dr. Dallas TX. 75251 Texas Instruments Holland B.V. Rutherfordweg 102 3542 CG Utrecht-The Netherlands TI-89 / TI-92 Plus Developer Guide Beta Version .02 © 1997 Texas Instruments www.ti.com/calc 8.07” Variable spine Important information Texas Instruments makes no warranty, either expressed or implied, including but not limited to any implied warranties of merchantability and fitness for a particular purpose, regarding any programs or book materials and makes such materials available solely on an “as-is” basis. In no event shall Texas Instruments be liable to anyone for special, collateral, incidental, or consequential damages in connection with or arising out of the purchase or use of these materials, and the sole and exclusive liability of Texas Instruments, regardless of the form of action, shall not exceed the purchase price of this product. Moreover, Texas Instruments shall not be liable for any claim of any kind whatsoever against the use of these materials by any other party. The latest version of this Guide, along with all other up-to-date information for developers, is available at www.ti.com/calc/developers/. © 2000, 2001 Texas Instruments Incorporated , TI-GRAPH LINK, and TI FLASH Studio are trademarks of Texas Instruments Incorporated. Sierra C is a trademark of Sierra Systems. i Table of Contents 1. Introduction ..............................................................................................1 1.1. Purpose of this Guide...........................................................................................1 1.2. Chapter Layout.....................................................................................................1 1.3. Conventions Used in this Guide...........................................................................3 2. The 68000 TI AMS Operating System Overview......................................5 3. The TI-89 / TI-92 Plus Hardware Overview..............................................7 3.1. Overview ..............................................................................................................7 3.2. Memory Map ........................................................................................................8 3.2.1. Vector Table ...........................................................................................................9 3.3. ASIC registers ....................................................................................................11 4. User Interface Overview.........................................................................15 4.1. Windows.............................................................................................................15 4.2. Menus ................................................................................................................16 4.2.1. Toolbars................................................................................................................17 4.2.2. Pop-ups ................................................................................................................17 4.2.2.1. Static Pop-ups .........................................................................................17 4.2.2.2. Dynamic Pop-ups ....................................................................................18 4.2.2.3. Dynamic Pop-ups with Menu Features....................................................18 4.3. Dialog Boxes ......................................................................................................18 4.4. Fonts ..................................................................................................................19 4.5. The Status Line ..................................................................................................22 5. Flash Applications vs. ASM Programs ...................................................23 6. Assembly Language Programming Overview ........................................25 6.1. What are ASM Programs? .................................................................................25 6.2. Hardware Stack..................................................................................................25 6.3. Register Usage ..................................................................................................25 6.4. Calling Flash-ROM-Resident Routines ..............................................................26 TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 ii Table of Contents 6.5. Subroutine Linkage ............................................................................................27 6.6. Sample ASM Program .......................................................................................29 7. Flash Application Layout ........................................................................31 7.1. File Format .........................................................................................................31 7.1.1. Flash Header........................................................................................................31 7.1.2. Certificate Header.................................................................................................32 7.1.3. Application Header ...............................................................................................33 7.1.3.1. Magic Number .........................................................................................33 7.1.3.2. Internal Application Name .......................................................................33 7.1.3.3. Flags........................................................................................................34 7.1.3.4. Length of Data Segment..........................................................................34 7.1.3.5. Byte Offset to Code Segment..................................................................34 7.1.3.6. Byte Offset to Initial Data Table...............................................................34 7.1.3.7. Length of Initial Data Table......................................................................35 7.1.3.8. Optional Header ......................................................................................35 7.1.4. Relocation Map.....................................................................................................35 7.1.5. Application Code ..................................................................................................35 7.1.6. Initial Data Table...................................................................................................35 7.1.7. Signature ..............................................................................................................36 7.2. Layout in Memory...............................................................................................36 7.3. Source Layout ....................................................................................................38 7.3.1. Interactive Applications.........................................................................................38 7.3.1.1. FRAME ....................................................................................................39 7.3.1.2. Pointer to FRAME....................................................................................40 7.3.1.3. Object Frame Attributes...........................................................................40 7.3.1.3.1. Attribute OO_APP_FLAGS (0x1).........................................................40 7.3.1.3.2. Attribute OO_APP_NAME (0x2) ..........................................................41 7.3.1.3.3. Attribute OO_APP_TOK_NAME (0x3).................................................41 7.3.1.3.4. Method OO_APP_PROCESS_EVENT (0x4) ......................................41 7.3.1.3.5. Attribute OO_APP_DEFAULT_MENU (0x5) .......................................42 7.3.1.3.6. Attribute OO_APP_DEFAULT_MENU_HANDLE (0x6).......................42 7.3.1.3.7. Attribute OO_APP_EXT_COUNT (0x7)...............................................42 7.3.1.3.8. Attribute OO_APP_EXTENSIONS (0x8) .............................................42 TI-89 / TI-92 Plus Developer Guide Not for Distribution Beta Version January 26, 2001 Table of Contents iii 7.3.1.3.9. Attribute OO_APP_EXT_ENTRIES (0x9)............................................42 7.3.1.3.10. Method OO_APP_LOCALIZE (0xA) ..................................................43 7.3.1.3.11. Method OO_APP_UNLOCALIZE (0xB).............................................43 7.3.1.3.12. Method OO_APP_CAN_DELETE (0xC)............................................43 7.3.1.3.13. Method OO_APP_CAN_MOVE (0xD) ...............................................43 7.3.1.3.14. Method OO_APP_VIEWER (0xE) .....................................................44 7.3.1.3.15. Attribute OO_APP_ICON (0xF) .........................................................44 7.3.1.3.16. Method OO_APP_EXT_HELP (0x10) ...............................................44 7.3.1.3.17. Method OO_APP_NOTICE_INSTALL (0x11)....................................44 7.3.1.3.18. Method OO_APP_ABOUT (0x12) .....................................................44 7.3.1.3.19. Attribute OO_APPSTRING (0x1000 and up).....................................45 7.3.1.4. Example...................................................................................................45 7.3.2. TI-BASIC Extensions............................................................................................48

  1398
Recommended publications
  • 10 Minutes of Code TI-BASIC
    10 Minutes of Code TI-BASIC Unit 1: Program Basics and Displaying on Screen Skill Builder 1: Using program editor and syntax This is the first of three ‘Skill Builders’ in Unit 1. At the end Objectives: of this unit, you will use the skills you have learned in these Use the TI Basic Program Editor to create and run Skill Builders to create a more complex program. This is a simple program. your first lesson in learning to code with TI Basic. Use the program menus to select and paste TI Basic is a programming language that can be used to commands into a program. program on the TI calculators. While the structure and Run a program. syntax (grammar) of TI Basic is simpler than other modern languages, it provides a great starting point for learning the basics of coding. Let’s get started! Teacher Tip: B.A.S.I.C. is one of the original programming languages that was designed for teaching and learning programming. It is an acronym of Beginners’ All-purpose Symbolic Instruction Code. TI Basic is based upon this language. Turn on your TI-84 Plus CE and press the p key. Select NEW using the arrow keys. Select Create New by pressing e. Name your program. Our program name will be HELLOXY. It can be any legal name*. Press e after typing the name. You are now in the Program Editor. Each line begins with the colon character ( : ). *A legal name must: be up to 8 characters long, start with a letter, include only uppercase letters and numbers, with no spaces; and be unique.
    [Show full text]
  • Liste Von Programmiersprachen
    www.sf-ag.com Liste von Programmiersprachen A (1) A (21) AMOS BASIC (2) A# (22) AMPL (3) A+ (23) Angel Script (4) ABAP (24) ANSYS Parametric Design Language (5) Action (25) APL (6) Action Script (26) App Inventor (7) Action Oberon (27) Applied Type System (8) ACUCOBOL (28) Apple Script (9) Ada (29) Arden-Syntax (10) ADbasic (30) ARLA (11) Adenine (31) ASIC (12) Agilent VEE (32) Atlas Transformatikon Language (13) AIMMS (33) Autocoder (14) Aldor (34) Auto Hotkey (15) Alef (35) Autolt (16) Aleph (36) AutoLISP (17) ALGOL (ALGOL 60, ALGOL W, ALGOL 68) (37) Automatically Programmed Tools (APT) (18) Alice (38) Avenue (19) AML (39) awk (awk, gawk, mawk, nawk) (20) Amiga BASIC B (1) B (9) Bean Shell (2) B-0 (10) Befunge (3) BANCStar (11) Beta (Programmiersprache) (4) BASIC, siehe auch Liste der BASIC-Dialekte (12) BLISS (Programmiersprache) (5) Basic Calculator (13) Blitz Basic (6) Batch (14) Boo (7) Bash (15) Brainfuck, Branfuck2D (8) Basic Combined Programming Language (BCPL) Stichworte: Hochsprachenliste Letzte Änderung: 27.07.2016 / TS C:\Users\Goose\Downloads\Softwareentwicklung\Hochsprachenliste.doc Seite 1 von 7 www.sf-ag.com C (1) C (20) Cluster (2) C++ (21) Co-array Fortran (3) C-- (22) COBOL (4) C# (23) Cobra (5) C/AL (24) Coffee Script (6) Caml, siehe Objective CAML (25) COMAL (7) Ceylon (26) Cω (8) C for graphics (27) COMIT (9) Chef (28) Common Lisp (10) CHILL (29) Component Pascal (11) Chuck (Programmiersprache) (30) Comskee (12) CL (31) CONZEPT 16 (13) Clarion (32) CPL (14) Clean (33) CURL (15) Clipper (34) Curry (16) CLIPS (35)
    [Show full text]
  • TI Home Computer Users Club
    TI Home Computer Users Club AUTUMN 1984 NE WS A quarterly publication for Club Members No. 3 ONO tvo3 otv6r$ vitigorSS1 933.00 rd03-13-Jruog,e el' 95 (3,siote oi %%0 V° itirois 00 0414 eNe Cd(5Jos _op kPlett t° \5.s loPate 'op iPT°1)T -gb cg2' -w-Ast -041 ird-icoa itrellss 1°'1N-5511.ekV29451°50.0. A .r.to „cow oi Nt-04 torvige° e 611'1 ov'('' SkAlt.e. At6P-12'6-.-44 • - ee6-P ociTN9\66 .kioxy. 9N-100ivie 6- -11.6 vo.e,141-a (2,0 0-001-°t Agin. 0-0, alla tivre10°215 ov6v€0.1k°-et- -;1,14 oV;V1/4-6.1";, lir66TD.uj--i0V 2L14Te-Ph 5e-c.5 ralp31.100-0. tTo-M- 4A0-09- agiW013-g' It-Oeus‘11'6 1-0.90-ceep.o.s cAve eA, BO- -W:ittle' CP' *e?TeS°— 6.1610-aiv 533-014 ' s.5 5,A02"3- Or 170 Tee.I5•0,a-§.atg5-e15' tor0.016,15'° .0. „c0,12Se'5'` qp'154. ,cgIox'}G0, accove :00•21•11•10-013-eS rjr=0.9.0.0-0:40.2u .51.nn /20‘1,0 Ot 01.31V Q2'111' e 6.,d,e-i2,001215TeCi, '1/43'e°1121- \c_aeirr\I'V-113 cile't °4° 2,11.68 -0 love 5" TeT°2h .0 lopieT5.9 ,1 otoe '0•011'49V121, Islagpx rtV'S cos 1 le Tepe e 9,AcOgel • xligeve t I t ,..4.41.W 10,S\ seP et° a, 60 iite 4c0.t4S+ c# .0; ki:5( 44S, ve<9' 0 kci( %.‘4 t,t,e0 0 se The TI Home Computer Users Club News Is published by the TI Home Computers Users Club Ltd., PO Box 190, Maidenhead, Berkshire SL6 1YX, telephone Maidenhead (0628) 71696.
    [Show full text]
  • TI-Nspire™ CX Student Software Guidebook
    TI-Nspire™ CX Student Software Guidebook Learn more about TI Technology through the online help at education.ti.com/eguide. Important Information Except as otherwise expressly stated in the License that accompanies a program, Texas Instruments makes no warranty, either express or implied, including but not limited to any implied warranties of merchantability and fitness for a particular purpose, regarding any programs or book materials and makes such materials available solely on an "as-is" basis. In no event shall Texas Instruments be liable to anyone for special, collateral, incidental, or consequential damages in connection with or arising out of the purchase or use of these materials, and the sole and exclusive liability of Texas Instruments, regardless of the form of action, shall not exceed the amount set forth in the license for the program. Moreover, Texas Instruments shall not be liable for any claim of any kind whatsoever against the use of these materials by any other party. Adobe®, Adobe® Flash®, Excel®, Mac®, Microsoft®, PowerPoint®, Vernier DataQuest™, Vernier EasyLink®, Vernier EasyTemp®, Vernier Go!Link®, Vernier Go!Motion®, Vernier Go!Temp®, Windows®, and Windows® XP are trademarks of their respective owners. Actual products may vary slightly from provided images. © 2006 - 2019 Texas Instruments Incorporated ii Contents Getting Started with TI-Nspire™ CX Student Software 1 Selecting the Handheld Type 1 Exploring the Documents Workspace 2 Changing Language 3 Using Software Menu Shortcuts 4 Using Handheld Keyboard Shortcuts
    [Show full text]
  • TI Basic Is the Built-In Programming Language of the TI-89 and TI-92 Plus Calculators
    [7.38] Why use TI Basic? TI Basic is the built-in programming language of the TI-89 and TI-92 Plus calculators. It is one of several programming languages you can use; the other languages are M68000 assembly language and two C compilers. "TI Basic" is not Texas Instruments' name for the built-in programming language. In fact, the TI-92 FAQ says this about it: "Programming language of the TI-92 - is it BASIC? No. There are a number of features that are similar to the BASIC programming language, but it is not BASIC." The Getting Started web page for the TI-89/92+ SDK has the only TI reference to "TI Basic" I have found, but I will use that term since it is common and well-understood in the calculator community. Some programmers claim that TI Basic is unsuitable for coding, citing real and imagined advantages of C. TI Basic does have some serious limitations, but there remain several compelling reasons to use it: ! TI Basic is built into every calculator, and programs can be completely developed on the calculator. You don't need an external interpreter, assembler, compiler, editor or development system. ! The TI Graph Link software can be used for program development if desired. Programs can be edited on the PC, then downloaded to the calculator for execution and debugging. ! The learning curve for TI Basic is short and shallow compared to learning C or assembler. ! TI Basic is stable and robust. It is either difficult or impossible to crash the calculator with a TI Basic program.
    [Show full text]
  • TI-Calculator Game Design
    TI-Calculator Game Design By Blast Programs, Inc. Chapter One: An Introduction Introduction Your Texas Instruments graphing calculator is a very powerful device, with two built-in programming languages that it can understand. The first is z80 assembly, a low-level language that provides direct command line access to your calculator’s processor. This is very dangerous if you are unfamiliar with what you are doing. Oftentimes, the calculator will simply crash, without throwing an error of any kind. If you make a mistake, you can damage your device’s memory beyond repair. There is a safer alternative to that. TI-Basic is a high-level language. It is an interpreted language. This means that the processor reads each line before it executing the command. If you make a mistake here, the calculator will return an error. Also, one command in TI-Basic is the equivalent of several lines of assembly code, thus making it a lot easier to use. TI-Basic is the only language to be discussed in detail in this tutorial. For future clarity, I will now define several terms involved in the TI-Basic programming language. The first is command. A command is a word or symbol that directs a device to perform a certain task. An argument, otherwise known as a specification, is a series of one or more values or inputs that limit the execution of a command. Some commands are comprised of arguments. Memory Structure of the TI Calculator The TI calculator has two main sectors, the RAM and the Archive. The RAM is a portion of the memory that is available to programs for design and execution.
    [Show full text]
  • BASIC Programming with Unix Introduction
    LinuxFocus article number 277 http://linuxfocus.org BASIC programming with Unix by John Perr <johnperr(at)Linuxfocus.org> Abstract: About the author: Developing with Linux or another Unix system in BASIC ? Why not ? Linux user since 1994, he is Various free solutions allows us to use the BASIC language to develop one of the French editors of interpreted or compiled applications. LinuxFocus. _________________ _________________ _________________ Translated to English by: Georges Tarbouriech <gt(at)Linuxfocus.org> Introduction Even if it appeared later than other languages on the computing scene, BASIC quickly became widespread on many non Unix systems as a replacement for the scripting languages natively found on Unix. This is probably the main reason why this language is rarely used by Unix people. Unix had a more powerful scripting language from the first day on. Like other scripting languages, BASIC is mostly an interpreted one and uses a rather simple syntax, without data types, apart from a distinction between strings and numbers. Historically, the name of the language comes from its simplicity and from the fact it allows to easily teach programming to students. Unfortunately, the lack of standardization lead to many different versions mostly incompatible with each other. We can even say there are as many versions as interpreters what makes BASIC hardly portable. Despite these drawbacks and many others that the "true programmers" will remind us, BASIC stays an option to be taken into account to quickly develop small programs. This has been especially true for many years because of the Integrated Development Environment found in Windows versions allowing graphical interface design in a few mouse clicks.
    [Show full text]
  • A History of the Personal Computer Index/11
    A History of the Personal Computer 6100 CPU. See Intersil Index 6501 and 6502 microprocessor. See MOS Legend: Chap.#/Page# of Chap. 6502 BASIC. See Microsoft/Prog. Languages -- Numerals -- 7000 copier. See Xerox/Misc. 3 E-Z Pieces software, 13/20 8000 microprocessors. See 3-Plus-1 software. See Intel/Microprocessors Commodore 8010 “Star” Information 3Com Corporation, 12/15, System. See Xerox/Comp. 12/27, 16/17, 17/18, 17/20 8080 and 8086 BASIC. See 3M company, 17/5, 17/22 Microsoft/Prog. Languages 3P+S board. See Processor 8514/A standard, 20/6 Technology 9700 laser printing system. 4K BASIC. See Microsoft/Prog. See Xerox/Misc. Languages 16032 and 32032 micro/p. See 4th Dimension. See ACI National Semiconductor 8/16 magazine, 18/5 65802 and 65816 micro/p. See 8/16-Central, 18/5 Western Design Center 8K BASIC. See Microsoft/Prog. 68000 series of micro/p. See Languages Motorola 20SC hard drive. See Apple 80000 series of micro/p. See Computer/Accessories Intel/Microprocessors 64 computer. See Commodore 88000 micro/p. See Motorola 80 Microcomputing magazine, 18/4 --A-- 80-103A modem. See Hayes A Programming lang. See APL 86-DOS. See Seattle Computer A+ magazine, 18/5 128EX/2 computer. See Video A.P.P.L.E. (Apple Pugetsound Technology Program Library Exchange) 386i personal computer. See user group, 18/4, 19/17 Sun Microsystems Call-A.P.P.L.E. magazine, 432 microprocessor. See 18/4 Intel/Microprocessors A2-Central newsletter, 18/5 603/4 Electronic Multiplier. Abacus magazine, 18/8 See IBM/Computer (mainframe) ABC (Atanasoff-Berry 660 computer.
    [Show full text]
  • Programming the TI-83 Plus/TI-84 Plus by Christopher R
    S AMPLE CHAPTER Programming the TI-83 Plus/TI-84 Plus by Christopher R. Mitchell Chapter 6 Copyright 2013 Manning Publications brief contents PART 1GETTING STARTED WITH PROGRAMMING........................1 1 ■ Diving into calculator programming 3 2 ■ Communication: basic input and output 25 3 ■ Conditionals and Boolean logic 55 4 ■ Control structures 76 5 ■ Theory interlude: problem solving and debugging 107 PART 2BECOMING A TI-BASIC MASTER ................................133 6 ■ Advanced input and events 135 7 ■ Pixels and the graphscreen 167 8 ■ Graphs, shapes, and points 184 9 ■ Manipulating numbers and data types 205 PART 3ADVANCED CONCEPTS; WHAT’S NEXT..........................225 10 ■ Optimizing TI-BASIC programs 227 11 ■ Using hybrid TI-BASIC libraries 243 12 ■ Introducing z80 assembly 260 13 ■ Now what? Expanding your programming horizons 282 v Advanced input and events This chapter covers ■ Monitoring for events with event loops ■ Getting keypresses directly with getKey ■ Moving characters around the homescreen ■ Building a fun, interactive game with event loops One day, you pick up your calculator, having made yourself several games and pro- grams. You’ve shared them with your friends, and they think you’ve done a good job. You’re frustrated, though, because the games aren’t very interactive. You want something more immersive, where you move a hungry mouse around the screen, trying to collect pieces of cheese. You want to make the game challenging, so you need to add a way to lose: you add a hunger bar. You decide that the hunger bar will gradually fill and that the player will lose if the hunger bar fills up.
    [Show full text]
  • Epson HX-20 Tips and Tricks Martin Hepperle, November 2018 – January 2021
    Epson HX-20 Tips and Tricks Martin Hepperle, November 2018 – January 2021 Contents 1. General ............................................................................................................................................. 2 2. Power Supply ................................................................................................................................... 3 2.1. Transformer Unit ...................................................................................................................... 3 2.2. Replacing the Battery ................................................................................................................ 4 2.3. Charging the Battery ................................................................................................................. 5 3. Variations of the ROMs ................................................................................................................... 5 4. New Printer Paper ............................................................................................................................ 5 5. New Printer Ribbons ........................................................................................................................ 6 6. Internal RAM Boards ....................................................................................................................... 7 6.1. “mc” 8 KB RAM board ............................................................................................................ 7 6.2. 16 KB RAM board Type
    [Show full text]
  • Basic Programming Software for Mac
    Basic programming software for mac Chipmunk Basic is an interpreter for the BASIC Programming Language. It runs on multiple Chipmunk Basic for Mac OS X - (Version , Apr01). Learning to program your Mac is a great idea, and there are plenty of great (and mostly free) resources out there to help you learn coding. other BASIC compiler you may have used, whether for the Amiga, PC or Mac. PureBasic is a portable programming language which currently works Linux. KBasic is a powerful programming language, which is simply intuitive and easy to learn. It is a new programming language, a further BASIC dialect and is related. Objective-Basic is a powerful BASIC programming language for Mac, which is simply intuitive and fast easy to learn. It is related to Visual Basic. Swift is a new programming language created by Apple for building iOS and Mac apps. It's powerful and easy to use, even for beginners. QB64 isn't exactly pretty, but it's a dialect of QBasic, with mac, windows, a structured basic with limited variable scoping (subroutine or program-wide), I have compiled old QBasic code unmodified provided it didn't do file. BASIC for Linux(R), Mac(R) OS X and Windows(R). KBasic is a powerful programming language, which is simply intuitive and easy to learn. It is a new. the idea to make software available for everybody: a programming language Objective-Basic requires Mac OS X Lion ( or higher) and Xcode 4 ( or. BASIC is an easy to use version of BASIC designed to teach There is hope for kids to learn an amazing programming language.
    [Show full text]
  • Programming the TI-83 Plus/TI-84 Plus by Christopher R
    S AMPLE CHAPTER Programming the TI-83 Plus/TI-84 Plus by Christopher R. Mitchell Chapter 1 Copyright 2013 Manning Publications brief contents PART 1GETTING STARTED WITH PROGRAMMING........................1 1 ■ Diving into calculator programming 3 2 ■ Communication: basic input and output 25 3 ■ Conditionals and Boolean logic 55 4 ■ Control structures 76 5 ■ Theory interlude: problem solving and debugging 107 PART 2BECOMING A TI-BASIC MASTER ................................133 6 ■ Advanced input and events 135 7 ■ Pixels and the graphscreen 167 8 ■ Graphs, shapes, and points 184 9 ■ Manipulating numbers and data types 205 PART 3ADVANCED CONCEPTS; WHAT’S NEXT..........................225 10 ■ Optimizing TI-BASIC programs 227 11 ■ Using hybrid TI-BASIC libraries 243 12 ■ Introducing z80 assembly 260 13 ■ Now what? Expanding your programming horizons 282 v Diving into calculator programming This chapter covers ■ Why you should program graphing calculators ■ How calculator programming skills apply to computer coding ■ Three sample programs so you can dive right in In the past 40 years, programming has gone from being a highly specialized niche career to being a popular hobby and job. Today’s programmers write applications and games for fun and profit, creating everything from the programs that run on your phone to the frameworks that underpin the entire internet. When you think of pro- gramming, however, you probably don’t envision a graphing calculator. So why should you read this book, and why should you learn to program a graphing calculator? Simply put, graphing calculators are a rewarding and easy way to immerse your- self in the world of programming. Graphing calculators like the ones in figure 1.1 can be found in almost every high school and college student’s backpack, and though few of them know it, they’re carrying around a full-fledged computer.
    [Show full text]