In the 8086-era DOS environment, text display typically relied on the BIOS and the graphics adapter’s built-in character generator. The fonts were firmly tied toIn the 8086-era DOS environment, text display typically relied on the BIOS and the graphics adapter’s built-in character generator. The fonts were firmly tied to

Redefining ‘A’ in VGA Mode 03h

In the 8086-era DOS environment, text display typically relied on the BIOS and the graphics adapter’s built-in character generator rather than any sophisticated font rendering system. The fonts were firmly tied to specific text modes implemented by adapters such as CGA, EGA, or VGA. One of the most common modes was text mode 03h, which presented an 80×25 text grid.

In one of our previous deep dives, we explored the infamous VGA-Mode 13h and how to integrate hardware timers to produce simple beeps with the PC-Speaker. This time, we’ll change the appearance of an ASCII character ( in this case 'A' ) by redefining its pixel data. In our next part you will also understand where this is actually heading for.

ASCII and the DOS Character Set

ASCII (American Standard Code for Information Interchange) is originally a 7-bit code that defines characters (letters, digits, punctuation) in the range 0–127. In DOS, the standard extended ASCII set (often called Code Page 437) added an additional 128 characters (128–255), including box-drawing characters, symbols, and other glyphs used frequently in the DOS world.

Text Mode 03h (80×25)

One of the typical display modes used in 8086 DOS for text output is Mode 03h. In Mode 03h, the screen is divided into 80 columns and 25 rows of text characters. Each position on the screen is one text cell which holds one character plus attributes (like foreground and background colors, blinking, etc.).

  • With the earliest CGA (Color Graphics Adapter), each text cell was typically an 8×8 pixel matrix (though some adapters might effectively use 8×14 or 9×14 for EGA, and 9×16 for VGA).

  • For standard VGA in 80×25 text mode, each character cell is often 9 pixels wide and 16 pixels tall (though the actual glyph itself might only occupy 8 pixels in width, with the 9th column used for spacing or other features).

If you consider the typical VGA text mode of 9×16 character cells in 80×25, the total screen resolution in terms of raw pixels is 720×400 (80 columns × 9 pixels wide, 25 rows × 16 pixels tall). In Mode 03h, each character is stored in video RAM (at ES:DI B800h:0000h) with a Byte for the character Index (00h - FFh) and another byte for defining foreground color and background color (0-F for the Background and 0-F for the Foreground).

How to?

There are times you might want to go beyond the default text-mode look. Maybe you want to display your own symbols, or get creative with ASCII graphics. In DOS and other low-level environments, you have an awesome ability to poke the BIOS or VGA memory directly to define what each character’s pixels look like. We will use the BIOS' interrupt 10h with AL = 11h to load our custom font. Let's break it down step by step:

Step By Step

First let's clone our startup environment again so that you can follow along:

git clone git@github.com:MilesTails01/i8086_boilercode.git

After downloading you need to unpack DOSBOX.zip and TOOLS.zip

cd \bin tar -xf TOOLS.zip tar -xf DOSBOX.zip build.bat // Compile, Link and Start the source debug.bat // Starts AFDEBUG and loads the compiled exe start.bat // Start the program without rebuilding it

Remove anything that is not needed. Keep the code simple and start with the minimum

; ################################# ; # ASCII.ASM # ; ################################# ; ################################# ; # STACK # ; ################################# STACK SEGMENT PARA STACK db 256 dup(0) STACK ENDS ; ################################# ; # DATA # ; ################################# DATA SEGMENT PARA 'DATA' DATA ENDS ; ################################# ; # CODE # ; ################################# CODE SEGMENT PARA 'CODE' ASSUME cs:CODE, ds:DATA, ss:STACK mov ax, DATA mov ds, ax mov ax, STACK mov ss, ax mov sp, 256 CODE ENDS

Step 1

Let's define our character pixel data first. 0 will become the background color and 1 will become the foreground color. Keep in mind in normal 80x25 Mode the dimension for a character are 9x16. We will define 14 rows each row containing 8bit cause (keep in mind to make the 9th bit 0 cause db is limited to 1 byte). This character will be striped block if you wonder what it will look like later.

CHAR_DATA db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b

Step 2

Let's define a print function to fill the whole screen with the character A

PRINT PROC NEAR mov ax, 0B800h ; VGA text mode memory segment mov es, ax mov di, 0 ; Start at the top-left of the screen mov cx, 2000 ; 80x25 screen = 2000 characters mov al, 'A' ; ASCII code for 'A' mov ah, 19h ; Attribute byte (blue on white) rep stosw ; Fill screen with 'A' ret PRINT ENDP

Step 3

Now the important part: We will use interrupt 10h (Bios Interrupt) with AH set to 11h. I wrote the definition of the parameter for AX, BX, CX, DX and BP in the comments.

REPLACE_ASCII PROC NEAR ; mov ax, 03h ; Set video mode to text mode (80x25, color) ; int 10h ; 9x16 font size ; ; mov ax, 1112h ; Force 8x8 font size for character cells ; xor bl, bl ; RAM block ; int 10h ; Change text mode character (int 10h) ; AH = 11h ; BH = Number of bytes per character ; CX = Number of characters to change ; DX = Starting character to change ; ES:BP = Offset of character data push ds pop es ; make sure es = ds lea bp, CHAR_DATA ; Pointer to custom font data mov ax, 1100h ; Load user-defined font mov bh, 0Eh ; Number of bytes per character xor bl,bl ; RAM block mov cx, 01h ; Number of characters to replace = 1 for now mov dx, 41h ; Starting character to change (41h = 'A' in ASCII) int 10h ; Call BIOS to load the font ret REPLACE_ASCII ENDP

Step 4

Optional: If you like you can print the current ASCII table in the middle of the screen ;)

ASCIIPRINT PROC NEAR mov ax, 0B800h ; VGA text mode memory segment mov es, ax xor di, di ; Reset offset mov cx, 5 ; Total number of characters (0-255) mov ah, 4Fh ; Attribute byte (red on white) mov dl, 10 ; Padding on the left (adjust as needed) mov dh, 60 ; Total width of the centered line (adjust as needed) mov di, 1620 ; Row (10 x 80 + padding) * 2, starting with left padding PrintLoop: stosw ; Store the character (AL) and attribute (AH) inc al ; Move to the next ASCII character dec dh ; Decrement width counter jnz PrintLoop ; Continue until row width is filled add di, 40 ; Move to the next row with padding ((80 - 60) * 2) mov dh, 60 ; Reset row width loop PrintLoop ; Repeat for all 256 characters ret ASCIIPRINT ENDP

Result

Every character of A got replaced with the new striped block. This Glyph will come in very handy in a later article.

Complete Code

; ################################# ; # ASCII.ASM # ; ################################# ; ################################# ; # STACK # ; ################################# STACK SEGMENT PARA STACK db 256 dup(0) STACK ENDS ; ################################# ; # DATA # ; ################################# DATA SEGMENT PARA 'DATA' CHAR_DATA db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b db 010101010b DATA ENDS ; ################################# ; # CODE # ; ################################# CODE SEGMENT PARA 'CODE' ASSUME cs:CODE, ds:DATA, ss:STACK mov ax, DATA mov ds, ax mov ax, STACK mov ss, ax mov sp, 256 ; ################################# ; # MAIN # ; ################################# call REPLACE_ASCII call PRINT call ASCIIPRINT ret ; ============================= ; | FUNCTIONS | ; ============================= PUBLIC REPLACE_ASCII REPLACE_ASCII PROC NEAR ; mov ax, 03h ; Set video mode to text mode (80x25, color) ; int 10h ; 9x16 font size ; ; mov ax, 1112h ; Force 8x8 font size for character cells ; xor bl, bl ; RAM block ; int 10h ; Change text mode character (int 10h) ; AH = 11h ; BH = Number of bytes per character ; CX = Number of characters to change ; DX = Starting character to change ; ES:BP = Offset of character data push ds pop es ; make sure es = ds lea bp, CHAR_DATA ; Pointer to custom font data mov ax, 1100h ; Load user-defined font mov bh, 0Eh ; Number of bytes per character xor bl,bl ; RAM block mov cx, 01h ; Number of characters to replace = 1 for now mov dx, 41h ; Starting character to change (41h = 'A' in ASCII) int 10h ; Call BIOS to load the font ret REPLACE_ASCII ENDP PRINT PROC NEAR mov ax, 0B800h ; VGA text mode memory segment mov es, ax mov di, 0 ; Start at the top-left of the screen mov cx, 2000 ; 80x25 screen = 2000 characters mov al, 'A' ; ASCII code for 'A' mov ah, 19h ; Attribute byte (blue on white) rep stosw ; Fill screen with 'A' ret PRINT ENDP ASCIIPRINT PROC NEAR mov ax, 0B800h ; VGA text mode memory segment mov es, ax xor di, di ; Reset offset mov cx, 5 ; Total number of characters (0-255) mov ah, 4Fh ; Attribute byte (red on white) mov dl, 10 ; Padding on the left (adjust as needed) mov dh, 60 ; Total width of the centered line (adjust as needed) mov di, 1620 ; Row (10 x 80 + padding) * 2, starting with left padding PrintLoop: stosw ; Store the character (AL) and attribute (AH) inc al ; Move to the next ASCII character dec dh ; Decrement width counter jnz PrintLoop ; Continue until row width is filled add di, 40 ; Move to the next row with padding ((80 - 60) * 2) mov dh, 60 ; Reset row width loop PrintLoop ; Repeat for all 256 characters ret ASCIIPRINT ENDP CODE ENDS END

\

Market Opportunity
Mode Network Logo
Mode Network Price(MODE)
$0.0003522
$0.0003522$0.0003522
-2.16%
USD
Mode Network (MODE) Live Price Chart
Disclaimer: The articles reposted on this site are sourced from public platforms and are provided for informational purposes only. They do not necessarily reflect the views of MEXC. All rights remain with the original authors. If you believe any content infringes on third-party rights, please contact service@support.mexc.com for removal. MEXC makes no guarantees regarding the accuracy, completeness, or timeliness of the content and is not responsible for any actions taken based on the information provided. The content does not constitute financial, legal, or other professional advice, nor should it be considered a recommendation or endorsement by MEXC.

You May Also Like

Lovable AI’s Astonishing Rise: Anton Osika Reveals Startup Secrets at Bitcoin World Disrupt 2025

Lovable AI’s Astonishing Rise: Anton Osika Reveals Startup Secrets at Bitcoin World Disrupt 2025

BitcoinWorld Lovable AI’s Astonishing Rise: Anton Osika Reveals Startup Secrets at Bitcoin World Disrupt 2025 Are you ready to witness a phenomenon? The world of technology is abuzz with the incredible rise of Lovable AI, a startup that’s not just breaking records but rewriting the rulebook for rapid growth. Imagine creating powerful apps and websites just by speaking to an AI – that’s the magic Lovable brings to the masses. This groundbreaking approach has propelled the company into the spotlight, making it one of the fastest-growing software firms in history. And now, the visionary behind this sensation, co-founder and CEO Anton Osika, is set to share his invaluable insights on the Disrupt Stage at the highly anticipated Bitcoin World Disrupt 2025. If you’re a founder, investor, or tech enthusiast eager to understand the future of innovation, this is an event you cannot afford to miss. Lovable AI’s Meteoric Ascent: Redefining Software Creation In an era where digital transformation is paramount, Lovable AI has emerged as a true game-changer. Its core premise is deceptively simple yet profoundly impactful: democratize software creation. By enabling anyone to build applications and websites through intuitive AI conversations, Lovable is empowering the vast majority of individuals who lack coding skills to transform their ideas into tangible digital products. This mission has resonated globally, leading to unprecedented momentum. The numbers speak for themselves: Achieved an astonishing $100 million Annual Recurring Revenue (ARR) in less than a year. Successfully raised a $200 million Series A funding round, valuing the company at $1.8 billion, led by industry giant Accel. Is currently fielding unsolicited investor offers, pushing its valuation towards an incredible $4 billion. As industry reports suggest, investors are unequivocally “loving Lovable,” and it’s clear why. This isn’t just about impressive financial metrics; it’s about a company that has tapped into a fundamental need, offering a solution that is both innovative and accessible. The rapid scaling of Lovable AI provides a compelling case study for any entrepreneur aiming for similar exponential growth. The Visionary Behind the Hype: Anton Osika’s Journey to Innovation Every groundbreaking company has a driving force, and for Lovable, that force is co-founder and CEO Anton Osika. His journey is as fascinating as his company’s success. A physicist by training, Osika previously contributed to the cutting-edge research at CERN, the European Organization for Nuclear Research. This deep technical background, combined with his entrepreneurial spirit, has been instrumental in Lovable’s rapid ascent. Before Lovable, he honed his skills as a co-founder of Depict.ai and a Founding Engineer at Sana. Based in Stockholm, Osika has masterfully steered Lovable from a nascent idea to a global phenomenon in record time. His leadership embodies a unique blend of profound technical understanding and a keen, consumer-first vision. At Bitcoin World Disrupt 2025, attendees will have the rare opportunity to hear directly from Osika about what it truly takes to build a brand that not only scales at an incredible pace in a fiercely competitive market but also adeptly manages the intense cultural conversations that inevitably accompany such swift and significant success. His insights will be crucial for anyone looking to understand the dynamics of high-growth tech leadership. Unpacking Consumer Tech Innovation at Bitcoin World Disrupt 2025 The 20th anniversary of Bitcoin World is set to be marked by a truly special event: Bitcoin World Disrupt 2025. From October 27–29, Moscone West in San Francisco will transform into the epicenter of innovation, gathering over 10,000 founders, investors, and tech leaders. It’s the ideal platform to explore the future of consumer tech innovation, and Anton Osika’s presence on the Disrupt Stage is a highlight. His session will delve into how Lovable is not just participating in but actively shaping the next wave of consumer-facing technologies. Why is this session particularly relevant for those interested in the future of consumer experiences? Osika’s discussion will go beyond the superficial, offering a deep dive into the strategies that have allowed Lovable to carve out a unique category in a market long thought to be saturated. Attendees will gain a front-row seat to understanding how to identify unmet consumer needs, leverage advanced AI to meet those needs, and build a product that captivates users globally. The event itself promises a rich tapestry of ideas and networking opportunities: For Founders: Sharpen your pitch and connect with potential investors. For Investors: Discover the next breakout startup poised for massive growth. For Innovators: Claim your spot at the forefront of technological advancements. The insights shared regarding consumer tech innovation at this event will be invaluable for anyone looking to navigate the complexities and capitalize on the opportunities within this dynamic sector. Mastering Startup Growth Strategies: A Blueprint for the Future Lovable’s journey isn’t just another startup success story; it’s a meticulously crafted blueprint for effective startup growth strategies in the modern era. Anton Osika’s experience offers a rare glimpse into the practicalities of scaling a business at breakneck speed while maintaining product integrity and managing external pressures. For entrepreneurs and aspiring tech leaders, his talk will serve as a masterclass in several critical areas: Strategy Focus Key Takeaways from Lovable’s Journey Rapid Scaling How to build infrastructure and teams that support exponential user and revenue growth without compromising quality. Product-Market Fit Identifying a significant, underserved market (the 99% who can’t code) and developing a truly innovative solution (AI-powered app creation). Investor Relations Balancing intense investor interest and pressure with a steadfast focus on product development and long-term vision. Category Creation Carving out an entirely new niche by democratizing complex technologies, rather than competing in existing crowded markets. Understanding these startup growth strategies is essential for anyone aiming to build a resilient and impactful consumer experience. Osika’s session will provide actionable insights into how to replicate elements of Lovable’s success, offering guidance on navigating challenges from product development to market penetration and investor management. Conclusion: Seize the Future of Tech The story of Lovable, under the astute leadership of Anton Osika, is a testament to the power of innovative ideas meeting flawless execution. Their remarkable journey from concept to a multi-billion-dollar valuation in record time is a compelling narrative for anyone interested in the future of technology. By democratizing software creation through Lovable AI, they are not just building a company; they are fostering a new generation of creators. His appearance at Bitcoin World Disrupt 2025 is an unmissable opportunity to gain direct insights from a leader who is truly shaping the landscape of consumer tech innovation. Don’t miss this chance to learn about cutting-edge startup growth strategies and secure your front-row seat to the future. Register now and save up to $668 before Regular Bird rates end on September 26. To learn more about the latest AI market trends, explore our article on key developments shaping AI features. This post Lovable AI’s Astonishing Rise: Anton Osika Reveals Startup Secrets at Bitcoin World Disrupt 2025 first appeared on BitcoinWorld.
Share
Coinstats2025/09/17 23:40
SHIB Price Drops as Leadership Concerns Grow

SHIB Price Drops as Leadership Concerns Grow

The post SHIB Price Drops as Leadership Concerns Grow appeared on BitcoinEthereumNews.com. Shiba Inu investors uneasy as Kusama’s silence fuels leadership concerns. SHIB slid 13% in three days, retracing from $0.00001484 to $0.00001305. Shibarium exploit and Kusama’s absence have weighed on investor trust. Shiba Inu investors are voicing concerns about the project’s long-term direction as leadership uncertainty and slow ecosystem progress erode confidence.  The token, which rallied from its meme-coin origins to become the second-largest meme asset by market cap, counts more than 1.5 million holders worldwide. But as SHIB matures, the gap between early hype and current delivery has widened.  The project’s transition into an “ecosystem coin” with spin-off projects and Shibarium, its layer-2 network, once raised expectations. Analysts now point to internal challenges as the main factor holding SHIB back from fulfilling that potential. Kusama’s Silence Adds to Instability Central to the debate is the role of Shytoshi Kusama, Shiba Inu’s pseudonymous lead developer. Investors are concerned about the intermittent disappearance of the project’s lead developer, who repeatedly takes unannounced social media breaks.  For instance, Kusama went silent on X for over a month before resurfacing this week amid growing speculation that he had abandoned the Shiba Inu project.  Kusama returned shortly after the Shibarium bridge suffered an exploit worth around $3 million. However, he did not directly address the issue but only reassured Shiba Inu community members of his commitment to advancing the project.  Although most community members didn’t complain about Kusama’s anonymity in the project’s initial stages, his recent behavior has raised concerns. Many are beginning to develop trust issues, particularly because nobody could reveal the SHIB developer’s identity for the past five years. He has conducted all communications under pseudonyms. SHIB Price Action Reflects Sentiment Shift Market reaction has mirrored the doubts. SHIB, which spiked 26% at the start of September, has since reversed. Over the last…
Share
BitcoinEthereumNews2025/09/18 04:13
Q2 Market Insights: Bitcoin regains dominance in risk-averse environment, ETFs remain critical to market structure

Q2 Market Insights: Bitcoin regains dominance in risk-averse environment, ETFs remain critical to market structure

The market will show a downward trend in the short term, and then rebound and set new highs in the second half of the year.
Share
PANews2025/04/28 19:40